Операционные системы

Автор работы: Пользователь скрыл имя, 13 Февраля 2013 в 07:59, реферат

Описание работы

Термин Unix и не вполне эквивалентный ему UNIX используется в разных значениях. Начнем со второго из терминов, как более простого. В двух словах, UNIX - зарегистрированная торговая марка, первоначально принадлежавшая корпорации AT&T, сменившая за свою долгую жизнь много хозяев и ныне являющаяся собственностью организации под названием Open Group. Право на использование имени UNIX достигается путем своего рода "проверки на вшивость" - прохождения тестов соответствия спецификациям некоей эталонной ОС Процедура эта не только сложна, но и очень недешева, и потому ей подверглись лишь несколько оперционок из ныне здравствующих, и все они являются проприетарными, то есть представляют собой собственность неких корпораций.

Содержание работы

Введение
Назначение и преминение ОС Unix 3
Назначение и преминение ОС Linux 6
Назначение и преминение ОС Solaris 8
Основная часть
Файловая система Unix 9
Файловая система Linux 11
Файловая система Solaris 13
Ядро ОС Unix 14
Ядро ОС Linux 17
Ядро Solaris 18
Заключение
Различия между Linux и Unix 19
ОС Solaris сегодня 26
Перспективы развития Unix-подобных систем 29
Список литературы 30

Файлы: 1 файл

Реферат.doc

— 208.50 Кб (Скачать файл)

Специальные файлы, предназначенные  для работы с устройствами как  правило сосредоточены в директории "/dev". Вот некоторые из них (в  номинации FreeBSD):

tty* - терминалы, в т.ч.: ttyv<цифра> - виртуальная консоль;

ttyd<цифра> - DialIn терминал (обычно  последовательный порт);

cuaa<цифра> - DialOut линия

ttyp<цифра> - сетевой псевдо-терминал;

tty - терминал, с которым ассоциирована  задача;

wd* - жесткие диски и их подразделы, в т.ч.: wd<цифра> - жесткий диск;

wd<цифра>s<цифра> - партиция этого  диска (именуемая здесь "slice");

wd<цифра>s<цифра><буква> - раздел  партиции;

fd<цифра>[<буква>] - floppy-диск;

rwd*, rfd* - то же самое,  что wd* и fd*, но с последовательным  доступом;

Иногда требуется, чтобы  программа, запущенная пользователем, имела не права запустившего ее пользователя, а какие-то другие. В этом случае устанавливается атрибут смены  прав на права пользователя - хозяина программы. Так, например, работает программа passwd, с помощью которой юзер может изменить свой пароль. Юзер может запустить программу passwd, она может произвести изменения в системной базе данных - а пользователь не может.

В отличие от DOS, в котором  полное имя файла выглядит как "диск:путьимя", и RISC-OS, в которой оно выглядит "-файловая_система-диск:$.путь.имя", Unix использует прозрачную нотацию в виде "/путь/имя". Корень отсчитывается от раздела, с которого было загружено ядро Unix. Если необходимо использовать другой раздел, используется команда `mount /dev/файл_раздела директория`. При этом файлы и поддиректории, ранее находившиеся в этой директории, становятся недоступными, пока раздел не будет размонтирован. Производить монтирование и размонтирование имеет право только супервизор.

При запуске каждый процесс может расчитывать, что для него уже открыты три файла, которые ему известны как стандартный ввод stdin по дескриптору 0; стандартный вывод stdout по дескриптору 1; и стандартный вывод stderr по дескриптору 2. При регистрации в системе, когда пользователь вводит имя и пароль, а ему запускается shell, все трое направлены на /dev/tty; позже любой из них может быть перенаправлен в любой файл.

 

Файловая система Linux

Операционные системы  хранят данные на диске при помощи файловых систем. Классическая файловая система представляет данные в виде вложенных друг в друга каталогов, в которых содержатся файлы. Один из каталогов является «вершиной» файловой системы, в нём содержатся все остальные каталоги и файлы.

Если жёсткий диск разбит на разделы, то на каждом разделе организуется отдельная файловая система с собственным корнем и структурой каталогов.

В Linux корневой каталог называется весьма лаконично — “/”. Полные имена всех остальных каталогов получаются из “/”, к которому дописываются справа имена последовательно вложенных друг в друга каталогов. Имена каталогов в пути также разделяются символом “/” («слэш»). Например, запись /home обозначает каталог “home” в корневом каталоге (“/”), а/home/user — каталог “user” в каталоге “home”. Перечисленные таким образом каталоги, завершающиеся именем файла составляют полный путь к файлу.

Относительный путь строится точно так же, как и полный — перечислением через “/” всех названий каталогов, встретившихся при движении к искомому каталогу или файлу. Между полным путём и относительным есть только одно существенное различие: относительный путь начинается от текущего каталога, в то время как полный путь всегда начинается от корневого каталога. Относительный путь любого файла или каталога в файловой системе может иметь любую конфигурацию: чтобы добраться до искомого файла можно двигаться как по направлению к корневому каталогу, так и от него. Linux различает полный и относительный пути очень просто: если имя объекта начинается на “/” — это полный путь, в любом другом случае — относительный.

Корневой каталог в Linux всегда только один, а все остальные каталоги в него вложены, т. е. для пользователя файловая система представляет собой единое целое. В действительности, разные части файловой системы могут находиться на совершенно разных устройствах: разных разделах жёсткого диска, на разнообразных съёмных носителях, даже на других компьютерах. Для того, чтобы соорудить из этого хозяйства единое дерево с одним корнем, используется процедура монтирования.

Монтирование — это подключение в один из каталогов целой файловой системы, находящейся где-то на другом устройстве. Эту операцию можно представить как «прививание» ветки к дереву. Для монтирования необходим пустой каталог — он называется точкой монтирования. Точкой монтирования может служить любой каталог, никаких ограничений на этот счёт в Linux нет. При помощи специальной команды (mount) мы объявляем, что в данном каталоге нужно отображать файловую систему, доступную на таком-то устройстве или же по сети. После этой операции в каталоге появятся все те файлы и каталоги, которые находятся на соответствующем устройстве. В результате пользователь может даже и не знать, на каком устройстве какие файлы располагаются.

Подключённую таким образом («смонтированную») файловую систему можно в любой момент отключить — размонтировать (для этого имеется специальная команда umount), после чего тот каталог, куда она была смонтирована, снова окажется пустым.

Для Linux самой важной является корневая файловая система (root filesystem). Именно к ней затем будут подключаться (монтироваться) все остальные файловые системы на других устройствах. Обратите внимание, что корневая файловая система тоже монтируется, но только не к другой файловой системе, а к «самой Linux», причём точкой монтирования служит “/” (корневой каталог). Поэтому при загрузке системы прежде всего монтируется корневая файловая система, а при останове она размонтируется.

Пользователю обычно не требуется  выполнять монтирование и размонтирование  вручную: при загрузке системы будут  смонтированы все устройства, на которых хранятся части файловой системы, а при останове системы все они будут размонтированы. Файловые системы на съёмных носителях (лазерных дисках, дискетах и пр.) также монтируются и размонтируются автоматически — либо при подключении носителя, либо при обращении к соответствующему каталогу.

В корневом каталоге Linux-системы обычно находятся только подкаталоги со стандартными именами. Более того, не только имена, но и тип данных, которые могут попасть в тот или иной каталог, также регламентированы стандартом5. Этот стандарт довольно последовательно соблюдается во всех Linux-системах: так, в любой Linux вы всегда найдёте каталоги /etc, /home, /usr/binи т. п. и сможете довольно точно предсказать, что именно в них находится.

Стандартное размещение файлов позволяет  и человеку, и даже программе предсказать, где находится тот или иной компонент системы. Для человека это означает, что он сможет быстро сориентироваться в любой системе Linux и найти то, что ему нужно. Для программ стандартное расположение файлов — это возможность организации автоматического взаимодействия между разными компонентами системы.

При выполнении операции монтирования, в том числе при выборе точки монтирования во время инсталляции Linux-системы, можно изменять свойства смонтированной файловой системы. Для этого нужно указать утилите mount один или несколько параметров. Существует ряд параметров монтирования, поддерживаемых всеми файловыми системами. Есть параметры, характерные для одной конкретной файловой системы. Подробно о параметрах монтирования можно прочитать в руководстве к утилите mount (mount(8)).

 

Файловая система Solaris

Изначально в Solaris использовалась файловая система UFS. В 2004 Sun Microsystems разработала файловую систему ZFS, которая стала включаться в Solaris 10, начиная с релиза 6/06 (июнь 2006).

Всего Solaris 10 поддерживает 14 файловых систем:

  • UFS (Unix File System)
  • ZFS (Zettabyte File System)
  • SMBFS (SMB)
  • VxFS (Veritas File System)
  • PCFS (FAT и FAT32)
  • HSFS (для CD-ROM)
  • TMPFS
  • NFS (Network File System)
  • CacheFS
  • AutoFS
  • SpecFS
  • ProcFS
  • SockFS
  • fifos

 

Ядро ОС Unix

Как и в любой другой многопользовательской операционной системе, обеспечивающей защиту пользователей  друг от друга и защиту системных  данных от любого непривилегированного пользователя, в ОС UNIX имеется защищенное ядро, которое управляет ресурсами компьютера и предоставляет пользователям базовый набор услуг.

Удобство и эффективность  современных вариантов ОС UNIX не означает, что вся система, включая ядро, спроектирована и структуризована наилучшим образом. ОС UNIX развивалась на протяжении многих лет (это первая в истории операционная система, которая продолжает завоевывать популярность в таком зрелом возрасте - уже больше 25 лет). Естественно, наращивались возможности системы, и, как это часто бывает в больших системах, качественные улучшения структуры ОС UNIX не поспевали за ростом ее возможностей.

В результате, ядро большинства  современных коммерческих вариантов  ОС UNIX представляет собой не очень  четко структуризованный монолит  большого размера. По этой причине программирование на уровне ядра ОС UNIX продолжает оставаться искусством. Эта недостаточная технологичность организации ядра ОС UNIX многих не удовлетворяет. Отсюда стремление к полному воспроизведению среды ОС UNIX при полностью иной организации системы.

По причине наибольшей распространенности часто обсуждается  ядро UNIX System V.

Одно из основных достижений ОС UNIX состоит в том, что система  обладает свойством высокой мобильности. Смысл этого качества состоит  в том, что вся операционная система, включая ее ядро, сравнительно просто переносится на различные аппаратные платформы. Все части системы, не считая ядра, являются полностью машинно-независимыми. Эти компоненты аккуратно написаны на языке Си, и для их переноса на новую платформу требуется только перекомпиляция исходных текстов в коды целевого компьютера.

Конечно, наибольшие проблемы связаны с ядром системы, которое  полностью скрывает специфику используемого  компьютера, но само зависит от этой специфики. В результате продуманного разделения машинно-зависимых и машинно-независимых компонентов ядра удалось добиться того, что основная часть ядра не зависит от архитектурных особенностей целевой платформы, написана полностью на языке Си и для переноса на новую платформу нуждается только в перекомпиляции.

Однако сравнительно небольшая часть ядра является машинно-зависимой  и написана на смеси языка Си и  языка ассемблера целевого процессора. При переносе системы на новую  платформу требуется переписывание  этой части ядра с использованием языка ассемблера и учетом специфических черт целевой аппаратуры. Машинно-зависимые части ядра хорошо изолированы от основной машинно-независимой части, и при хорошем понимании назначения каждого машинно-зависимого компонента переписывание машинно-зависимой части является в основном технической задачей.

Машинно-зависимая часть  традиционного ядра ОС UNIX включает следующие компоненты:

    • раскрутка и инициализация системы на низком уровне;
    • первичная обработка внутренних и внешних прерываний;
    • управление памятью;
    • переключение контекста процессов между режимами пользователя и ядра;
    • связанные с особенностями целевой платформы части драйверов устройств.

К основным функциям ядра ОС UNIX принято относить следующие:

    • Инициализация системы - функция запуска и раскрутки. Ядро системы обеспечивает средство раскрутки (bootstrap), которое обеспечивает загрузку полного ядра в память компьютера и запускает ядро.
    • Управление процессами и нитями - функция создания, завершения и отслеживания существующих процессов и нитей. Поскольку ОС UNIX является мультипроцессной операционной системой, ядро обеспечивает разделение между запущенными процессами времени процессора и других ресурсов компьютера для создания внешнего ощущения того, что процессы реально выполняются в параллель.
    • Управление памятью - функция отображения практически неограниченной виртуальной памяти процессов в физическую оперативную память компьютера, которая имеет ограниченные размеры. Соответствующий компонент ядра обеспечивает разделяемое использование одних и тех же областей оперативной памяти несколькими процессами с использованием внешней памяти.
    • Управление файлами - функция, реализующая абстракцию файловой системы, - иерархии каталогов и файлов. Файловые системы ОС UNIX поддерживают несколько типов файлов. Некоторые файлы могут содержать данные в формате ASCII, другие будут соответствовать внешним устройствам. В файловой системе хранятся объектные файлы, выполняемые файлы и т.д. Файлы обычно хранятся на устройствах внешней памяти; доступ к ним обеспечивается средствами ядра. В мире UNIX существует несколько типов организации файловых систем. Современные варианты ОС UNIX одновременно поддерживают большинство типов файловых систем.
    • Коммуникационные средства - функция, обеспечивающая возможности обмена данными между процессами, выполняющимися внутри одного компьютера (IPC - Inter-Process Communications), между процессами, выполняющимися в разных узлах локальной или глобальной сети передачи данных, а также между процессами и драйверами внешних устройств.
    • Программный интерфейс - функция, обеспечивающая доступ к возможностям ядра со стороны пользовательских процессов на основе механизма системных вызовов, оформленных в виде библиотеки функций.

В любой операционной системе поддерживается некоторый  механизм, который позволяет пользовательским программам обращаться за услугами ядра ОС. В операционных системах наиболее известной советской вычислительной машины БЭСМ-6 соответствующие средства общения с ядром назывались экстракодами, в операционных системах IBM они назывались системными макрокомандами и т.д. В ОС UNIX такие средства называются системными вызовами.

Название не изменяет смысл, который  состоит в том, что для обращения  к функциям ядра ОС используются "специальные  команды" процессора, при выполнении которых возникает особого рода внутреннее прерывание процессора, переводящее его в режим ядра (в большинстве современных ОС этот вид прерываний называется trap - ловушка). При обработке таких прерываний (дешифрации) ядро ОС распознает, что на самом деле прерывание является запросом к ядру со стороны пользовательской программы на выполнение определенных действий, выбирает параметры обращения и обрабатывает его, после чего выполняет "возврат из прерывания", возобновляя нормальное выполнение пользовательской программы.

Понятно, что конкретные механизмы возбуждения внутренних прерываний по инициативе пользовательской программы различаются в разных аппаратных архитектурах. Поскольку ОС UNIX стремится обеспечить среду, в которой пользовательские программы могли бы быть полностью мобильны, потребовался дополнительный уровень, скрывающий особенности конкретного механизма возбуждения внутренних прерываний. Этот механизм обеспечивается так называемой библиотекой системных вызовов.

Для пользователя библиотека системных вызовов представляет собой обычную библиотеку заранее  реализованных функций системы  программирования языка Си. При программировании на языке Си использование любой функции из библиотеки системных вызовов ничем не отличается от использования любой собственной или библиотечной Си-функции. Однако внутри любой функции конкретной библиотеки системных вызовов содержится код, являющийся, вообще говоря, специфичным для данной аппаратной платформы.

 

Ядро ОС Linux

Ядро Linux распространяется под GNU General Public License версии 2 (GPLv2) (плюс некоторые прошивки изображений с различными несвободной лицензии ), и был разработан участниками по всему миру. Ядро Linux первоначально была задумана и создана финским студентом информатики Линус Торвальдсом в 1991 году. Ядро управляет аппаратной каждой Linux системе и делает его доступным для различных процессов. Хотя информация, представленная в этой главе, не сделает вас ядро ​​хакеров, узнать, как выполнить обновление ядра и как собрать и установить собственное ядро. Если вы будете следовать инструкциям в этой главе, предыдущее ядро ​​остается функциональной и может быть загружена в случае необходимости.

Информация о работе Операционные системы