Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / 3_управление процессами.doc
Скачиваний:
76
Добавлен:
20.06.2014
Размер:
1.59 Mб
Скачать

3.3.4.3. Типы мультипроцессорных ос

Рассмотрим три варианта реализации.

1) Каждому ЦП – своя ОС. ОП статически делится по числу ЦП; каждому ЦП отводится своя память с собственной копией ОС. NЦП работают какNнезависимых компьютеров. Можно позволить всем ЦП совместно использовать код ОС и хранить только индивидуальные копии данных. Эта схема лучше, чемNнезависимых компьютеров, т.к. позволяет всем ЦП использовать УВВ и обеспечивает гибкое совместное использование памяти. Но с точки зрения ОС наличие каждой своей ОС у ЦП – примитивно. Здесь имеется 4 неочевидных аспекта:

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

  • У каждой ОС свои процессы, свои таблицы, совместного использования процессов нет.

  • Совместного использования страниц нет. Может случиться так, что у ЦП2 много свободных страниц, а у ЦП1 постоянно занимается свопингом.

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

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

3) Симметричные мультипроцессоры. Устраняют "перекос" предыдущей модели. В памяти находится одна копия ОС, но выполнять её может любой процессор. При системном вызовы на ЦП, обратившемся к системе с системным вызовом, происходит прерывание с переходом в режим ядра и обработкой системного вызова. Если код ОС начнёт выполняться одновременно на двух и более ЦП, произойдет катастрофа. Простой способ разрешения проблемы – связывание мьютекса с ОС, в результате вся система превращается в критическую область. Однако многие части ОС не зависимы друг от друга: планирование, обращение к ФС. Поэтому ОС можно разделить на независимые критические области.