Структура операционных систем
Монолитная система Структура системы: 1. Главная программа, которая вызывает требуемые сервисные процедуры. 2. Набор сервисных процедур, реализующих системные вызовы. 3. Набор утилит, обслуживающих сервисные процедуры. Простая модель монолитной системы В этой модели для каждого системного вызова имеется одна сервисная процедура (например, читать из файла). Утилиты выполняют функции, которые нужны нескольким сервисным процедурам (например, для чтения и записи файла необходима утилита работы с диском). Этапы обработки вызова: · Принимается вызов · Выполняется переход из режима пользователя в режим ядра · ОС проверяет параметры вызова для того, чтобы определить, какой системный вызов должен быть выполнен · После этого ОС обращается к таблице, содержащей ссылки на процедуры, и вызывает соответствующую процедуру.
Обобщением предыдущего подхода является организация ОС как иерархии уровней. Уровни образуются группами функций операционной системы - файловая система, управление процессами и устройствами и т.п. Каждый уровень может взаимодействовать только со своим непосредственным соседом - выше- или нижележащим уровнем. Прикладные программы или модули самой операционной системы передают запросы вверх и вниз по этим уровням.
Пример структуры многоуровневой системы Преимущества: · Высокая производительность Недостатки: · Большой код ядра, и как следствие большое содержание ошибок · Ядро плохо защищено от вспомогательных процессов Пример реализации многоуровневой модели UNIX.
Структура ОС UNIX
Ядро ОС UNIX
Пример реализации многоуровневой модели Windows
Структура Windows 2000 Модель экзоядра Если предыдущие модели брали на себя максимум функций, принцип экзоядра, все отдать пользовательским программам. Например, зачем нужна файловая система? Почему не позволить пользователю просто читать и писать участки диска защищенным образом? Т.е. каждая пользовательская программа сможет иметь свою файловую систему. Такая операционная система должна обеспечить безопасное распределение ресурсов среди соревнующихся за них пользователей.
Микроядерная архитектура (модель клиент-сервер) Эта модель является средним между двумя предыдущими моделями. В развитии современных операционных систем наблюдается тенденция в сторону дальнейшего переноса задач из ядра в уровень пользовательских процессов, оставляя минимальное микроядро. В этой модели вводятся два понятия: 1. Серверный процесс (который обрабатывает запросы) 2. Клиентский процесс (который посылает запросы) В задачу ядра входит только управление связью между клиентами и серверами.
Модель клиент-сервер Преимущества: · Малый код ядра и отдельных подсистем, и как следствие меньшее содержание ошибок. · Ядро лучше защищено от вспомогательных процессов. · Легко адаптируется к использованию в распределенной системе. Недостатки: · Уменьшение производительности. Обобщение сравнения моделей Сравнения моделей. Лекция 2 Процессы и потоки (нити). Процессы Понятие процесса Процесс (задача) - программа, находящаяся в режиме выполнения. С каждым процессом связывается его адресное пространство, из которого он может читать и в которое он может писать данные. Адресное пространство содержит: · саму программу · данные к программе · стек программы С каждым процессом связывается набор регистров, например: · счетчика команд (в процессоре) - регистр в котором содержится адрес следующей, стоящей в очереди на выполнение команды. После того как команда выбрана из памяти, счетчик команд корректируется и указатель переходит к следующей команде.
· указатель стека · и д.р. Во многих операционных системах вся информация о каждом процессе, дополнительная к содержимому его собственного адресного пространства, хранится в таблице процессов операционной системы. Некоторые поля таблицы:
Модель процесса В многозадачной системе реальный процессор переключается с процесса на процесс, но для упрощения модели рассматривается набор процессов, идущих параллельно (псевдопараллельно). Рассмотрим схему с четырьмя работающими программами. В каждый момент времени активен только один процесс С права представлены параллельно работающие процессы, каждый со своим счетчиком команд. Разумеется, на самом деле существует только один физический счетчик команд, в который загружается логический счетчик команд текущего процесса. Когда время, отведенное текущему процессу, заканчивается, физический счетчик команд сохраняется в памяти, в логическом счетчике команд процесса.
Создание процесса Три основных события, приводящие к созданию процессов (вызов fork или CreateProcess): · Загрузка системы · Работающий процесс подает системный вызов на создание процесса · Запрос пользователя на создание процесса Во всех случаях, активный текущий процесс посылает системный вызов на создание нового процесса. В UNIX каждому процессу присваивается идентификатор процесса (PID - Process IDentifier) Завершение процесса Четыре события, приводящие к остановке процесса (вызов exit или ExitProcess): · Плановое завершение (окончание выполнения)
· Плановый выход по известной ошибке (например, отсутствие файла) · Выход по неисправимой ошибке (ошибка в программе) · Уничтожение другим процессом Таким образом, приостановленный процесс состоит из собственного адресного пространства, обычно называемого образом памяти (core image), и компонентов таблицы процессов (в числе компонентов и его регистры). Иерархия процессов В UNIX системах заложена жесткая иерархия процессов. Каждый новый процесс созданный системным вызовом fork, является дочерним к предыдущему процессу. Дочернему процессу достаются от родительского переменные, регистры и т.п. После вызова fork, как только родительские данные скопированы, последующие изменения в одном из процессов не влияют на другой, но процессы помнят о том, кто является родительским. В таком случае в UNIX существует и прародитель всех процессов - процесс init. Дерево процессов для систем UNIX В Windows не существует понятия иерархии процессов. Хотя можно задать специальный маркер родительскому процессу, позволяющий контролировать дочерний процесс.
Состояние процессов Три состояния процесса: · Выполнение (занимает процессор) · Готовность (процесс временно приостановлен, чтобы позволить выполняться другому процессу) · Ожидание (процесс не может быть запущен по своим внутренним причинам, например, ожидая операции ввода/вывода) Возможные переходы между состояниями. 1. Процесс блокируется, ожидая входных данных 2. Планировщик выбирает другой процесс 3. Планировщик выбирает этот процесс 4. Поступили входные данные Переходы 2 и 3 вызываются планировщиком процессов операционной системы, так что сами процессы даже не знают о этих переходах. С точки зрения самих процессов есть два состояния выполнения и ожидания. На серверах для ускорения ответа на запрос клиента, часто загружают несколько процессов в режим ожидания, и как только сервер получит запрос, процесс переходит из "ожидания" в "выполнение". Этот переход выполняется намного быстрее, чем запуск нового процесса.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|