- •/Классификация операционных систем
- •Сравнительные характеристики ос.
- •/Процессы и примитивы.
- •Примитивы.
- •Процессы.
- •/Предполагаемая среда выполнения процессов.
- •/ Диаграмма переходов.
- •/Создание процессов.
- •/Уровневое представление ос unix
- •/Функции ядра операционной системы.
- •/Понятие прерываний в ос
- •/Структура ос
- •/Обзор подсистем ядра Unix
- •Описание подсистем ядра unix
- •Планирование но наивысшему приоритету (hpf)
- •Метод круговорота (карусель)
- •Очереди с обратной связно (fв)
- •Планирование в unix.
- •Типы многозадачности.
- •Состав планировщика
- •Зависимости подсистем ядра
- •Контроллер памяти (Метоrу Manager)
- •Механизм свопинга (Swapping)
- •Механизм пейджинга (Paging)
- •Внешний интерфейс
- •Verify_area()– проверка прав на доступ к выделенному региону памяти; get_free_page() / free_page() – выделение и освобождение физической памяти.
- •Реализация программ выделения памяти
- •Сборка мусора
- •Типы сборщиков памяти
- •Взаимодействие внутренних модулей мм
- •Архитектура vfs
- •Интерфейсы файловой системы
- •Ioctlo: установить атрибуты файла;
- •Защита файлов
- •Списки прав доступа
- •Механизмы обмена данными в vfs
- •Буферный кэш.
- •Механизмы обмена данными.
- •Логическая файловая система
- •Физическая организация файловой системы
- •Структура файла обычного типа
- •Примечания к физической организации vfs
- •Сетевая подсистема (Net)
- •Состав сетевой подсистемы
- •Представление и структуры данных
- •Внутренняя структура подсистемы
- •Зависимости сетевой подсистемы
- •Подсистема межпроцессного взаимодействия
Механизм свопинга (Swapping)
Недостатки простых ОС с динамическим распределением памяти и снижение цен на долговременные носители привели к созданию систем с выгрузкой процессов во внешнее адресное пространство, обычно размещаемое на жестком диске. Одним из таких первых исторически и наиболее простых механизмов является свопинг.
Он основан на полной выгрузке одного из процессов, приостановленных планировщиком из физической памяти в виртуальную. И, наоборот, для загрузки в физическую память системы всего процесса, возобновленного планировщиком для продолжения работы. В файл свопинга выгружается весь процесс целиком, за исключением данных, расположенных в управляющих структурах. Преимуществом свопинга является простота управления выгрузкой кодов процессов в файл свопинга. Однако такая "перегрузка" существенно ухудшает производительность ОС за счет потерь времени на выполнение операций по загрузке и выгрузке процессов.
Механизм пейджинга (Paging)
Этот механизм основан на частичной загрузке процесса из виртуальной
памяти в физическую в виде "страницы" (раgе) кода, который должен исполняться. После исполнения текущей страницы загружается следующая. Преимущества пейджинга заключаются в том, что практически все процессы всегда готовы к выполнению, так как исполняемая часть кодов
(страница) всегда находится в памяти. Однако, когда процессов в ОС становится много, оценка для какого процесса какая часть кода должна исполняться с последующей загрузкой нужной страницы, занимает много времени работы ММ и PS. Поэтому накладные расходы в системе становятся значительными. Кроме того, построить идеальный ММ, который бы оптимально оценивал, какую страницу в какой момент времени для каждого процесса нео6ходимо загружать, практически невозможно.
На практике используются несколько алгоритмов, которые предназначены для решения этой про6лемы.
NR U
Первый из них называется NRU (Not Recently used). Для сбора статистики о том, какие страницы использовались, а какие нет, в современных ОС имеется два статусных бита. Бит R(Referenced - обращение) устанавливается при обращении к странице на запись/чтение. Бит М (Modified -
изменение) устанавливается при изменении кода страницы. Они модифицируются аппаратно при любом обращении к памяти. При возникновении страничного прерывания в ОС ММ проверяет все страницы и делит их на 4 категории:
-
не было обращений и изменений;
-
не 6ыло обращений, страница изменена;
-
было обращение, страница не изменена;
-
произошло о6ращение и страница изменена.
Алгоритм NRU просто удаляет страницы из первой категории, начиная с минимального номера. Если же этого недостаточно, то приходится делать вы6ор, из какой категории удалять страницы дальше. Очевидно, что коды программ не могут быть модифицированы , следовательно, далее внимание должно быть обращено на те страницы, которые были модифицированы, то есть содержат данные, а также на количество этих данных на странице.
FIFO
Другим, не менее используемым, алгоритмом является метод FIFO. В этом случае из списка страниц удаляется та, которая пришла раньше всех. При этом новая страница добавляется в список на последнее место.
Существует модификация этого алгоритма, которая называется "вторая
попытка" (second chance). При этому у кандидата на удаление проверяется
бит R. И если она равен 0, следовательно, к странице не обращались, и она тут же удаляется. Если этот бит равен 1, то страница перемещается в конец списка, а время ее ра6оты обнуляется. И т.д.
ММ в UNIX
На ранних стадиях развития как Unix, так и других операционных систем, работа ММ базировалась только на одном из механизмов выгрузки данных на диск, который определялся при инсталляции. В настоящее время Unix совмещает в себе оба тих процесса. При обращении к странице виртуальной памяти система проверяет та6лицу распределений страниц и определяет, находится ли страница в памяти. Если нет, то выдается сообщение об ошибке и страница переносится в память из области свопинга. Когда оши6ок становится слитком много, тог система начинает перекосить в о6ласть свопинга целые процессы, то есть пейджинг замещается на свопинг.
Для пользователя в описании ММ часто указывают на следующие возможности виртуальной памяти:
-
Адресное пространство, значительно большее, чем пространство физи- ческой памяти в системе;
-
Защита адресного пространства процесса от доступа к нему других процессов, гарантируя неперекрытие кодов процессов. Исключение составляет "разделенная" память, которая специально выделяется для использования несколькими процессами одновременно;
-
Процесс создания виртуальных файлов в виртуальной памяти, то есть выделение некоторой о6ласти памяти, непосредственно не связанной с процессом и организацией доступа к ней как к некоторому файлу;
-
Полный доступ к физической памяти гарантируется для обеспечения полного и корректного доступа всем процессам в ОС в управлении физическими ресурсами системы;
-
Обеспечение доступа к разделяемой памяти (Shared Memory) для обмена данными двум и более процессам.
Модули ММ
ММ состоит из следующих модулей (смотри рис. 3.6):
-
Архитектурно зависи1аый модуль (AIM) — контроллер физической памяти е интерфейсом к физической памяти.
-
Архитектурно независимый модуль (ASM), обеспечивающий работу механизмов пейджинга и свопинга. Этот модуль отвечает за удаление и загрузку страниц.
-
Системный интерфейс (SCI) – обеспечивает ограниченный доступ процессам пользователя к памяти. Он позволяет процессам пользователя выделять и освобождать память, а также обеспечивает работу с виртуальными файлами.
Зависимости. Управляющие потоки
В ОС Unix существует одно специфическое виртуальное устройство, называемое виртуальный диск (ramdisk); это устройство располагается в области основной памяти, и система трактует его как обычное устройстве долговременной памяти. Драйвер этого устройства использует ММ для
реализации этой задачи и таким образом образуется зависимость посредством потоков управления и потоков данных между драйверами файловой системы и ММ.
С другой стороны, существует логическая файловая система, которая
поддерживается сетевой файловой системой только как клиент этой системы. NFS обеспечивает доступ к файлам, расположенным на других машинах так, как будто эти файлы представляют часть локальной файловой системы. Для достижения этого один из модулей логической файловой системы использует сетевую подсистему.
ММ управляет физической памятью и принимает сообщения от аппаратуры, когда встречаются неполадки в ее работе, а это означает наличие двусторонних потоков данных и потока управления между контроллером памяти и физической памятью. Кроме уже упомянутого использования контроллером памяти файловой системы для свопинга и управления аппаратурой, используется вызов процесса планировщика для остановки процесса, так как VFS не может выполнить некоторый запрос к ресурсам мгновенно. Планировщик ожидает окончания выполнения запроса К аппаратуре и возобновляет этот процесс при получении подтверждения о выполнении этого запроса- Так как планирование распределения памяти происходит для каждого процесса и осуществляется при поддержке планировщика, то это означает наличие двунаправленных потоков данных между ММ и планировщиком.
Процесс пользователя во время работы может затребовать дополнительное пространство в памяти и после регистрации запроса в структурах данных, выделения этого места. Это означает наличие потока управляющей информации между ММ и системным интерфейсом для процесса пользователя. Кроме того, системный интерфейс ММ позволяет пользовательским процессам вызывать VFS для запоминания и восстановления данных.
В контроллере памяти не существует механизма регистрации и скрытых вызовов для процесса пользователя, следовательно, не существует управляющих потоков от VFS к процессам пользователя (возобновляемый планировщиком процесс не требует потоков управления).