Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Архитектура операционной системы UNIХ



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

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

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

Интерфейс пользователя Пользователи  
Интерфейс библиотечных функций Стандартные обслуживающие программы   Режим пользователя
Интерфейс системных вызовов Стандартная библиотека
  Ядро операционной системы UNIX Режим ядра
Аппаратное обеспечение
                 

Рис. 4. Уровни операционной системы UNIX

Каждая такая процедура помещает аргументы в определенное место и выполняет команду эмулированного прерывания TRAP. Чтобы обратиться к системному вызову read, программа написанная на языке С должна вызвать библиотечную процедуру read. Стандарт POSIX определяет библиотечные процедуры, соответствующие системным вызовам, их параметры, их действия и результат выполнения этих действий.

UNIX содержат большое количество стандартных программ, некоторые из них описываются стандартом POSIX 1003.2: компиляторы, редакторы, программы обработки текста и утилиты для работы с файлами. Именно эти программы и запускаются пользователем с терминала. Таким образом, речь идет о трех интерфейсах в операционной системе UNIX: интерфейсе системных вызовов, интерфейсе библиотечных функций и интерфейсе, образованным набором стандартных обслуживающих программ.

Ядро операционной системы UNIX состоит из нескольких уровней (рис. 5.). Нижний уровень ядра состоит из драйверов устройств и процедуры диспетчеризации процессов. Драйверы системы UNIX подразделяются на два класса: драйверы символьных устройств и драйверы блочных устройств. Основное различие между ним заключается в том, что на блочных устройствах разрешается операция поиска, а на символьных нет. Технически сетевые устройства представляют собой символьные устройства, но обрабатываются по-иному, поэтому они выделены в отдельный класс. Диспетчеризация процессов производится при возникновении прерывания. При этом низкоуровневая программа останавливает выполнение работающего процесса, сохраняет его состояние в таблице процессов ядра и запускает соответствующий драйвер. Диспетчеризация процессов производится также, когда ядро завершает свою работу и наступает момент запуска процесса пользователя. Программа диспетчеризации процессов написана на ассемблере и представляет собой отдельную от процедуры планирования программу.

Системные вызовы Аппаратные и эмулированные прерывания
Управление терминалом Сокеты Именование файлов Отображение адресов Страничные прерывания Обработка сигналов Создание и завершение процессов
Необработанный телетайп Обработанный телетайп Сетевые протоколы Файловые системы Виртуальная память
Дисциплины линии связи Маршрутизация Буферный кэш Страничный кэш Планирование процесса
Символьные устройства Драйверы сетевых устройств Драйверы дисковых устройств Диспетчеризация процессов
Аппаратура
               

 
 
Рис. 5. Структура ядра операционной системы UNIX


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

Символьные устройства могут использоваться двумя способами. Некоторым программам (например, текстовым редакторам vi и emacs), требуется нажатая клавиша без обработки. Для этого служит ввод-вывод с необработанного терминала (телетайпа). Другое программное обеспечение, например оболочка shell, принимает на входе уже готовую текстовую строку, позволяя пользователю редактировать ее, пока не будет нажата клавиша Enter. Такое программное обеспечение пользуется вводом с терминала в обработанном виде и дисциплинами линии связи.

Сетевое программное обеспечение часто бывает модульным, с поддержкой множества различных устройств и протоколов. Уровень выше сетевых драйверов выполняет функции маршрутизации, гарантируя, что правильный пакет направляется правильному устройству или блоку управления протоколами. Большинство систем UNIX содержат в своем ядре полноценный маршрутизатор Интернета. Над уровнем маршрутизации располагается стек протоколов (включая протоколы IP и TCP). Над сетевыми протоколами располагается интерфейс сокетов, позволяющий программам создавать сокеты[9] для отдельных сетей и протоколов. Для использования сокетов пользовательские программы получают дескрипторы файлов.

Над дисковыми драйверами располагаются буферный кэш и страничный кэш файловой системы. В ранних системах UNIX буферный кэш представлял собой фиксированную область памяти, а остальная память использовалась для страниц пользователя. В современных системах границы не существует, и любая страница памяти может использоваться для выполнения поставленной задачи. Над буферным кэшем располагаются файловые системы. Большинством систем UNIX поддерживают несколько файловых систем, включая быструю файловую систему Беркли, журнальную файловую систему, а также различные виды файловых систем System V. Файловые системы совместно используют общий буферный кэш. Выше файловых систем помещается именование файлов, управление каталогами, управление жесткими и символьными связями, а также другие свойства файловой системы, одинаковые для всех файловых систем.

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

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

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





Дата публикования: 2014-12-08; Прочитано: 538 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...