
- •/Классификация операционных систем
- •Сравнительные характеристики ос.
- •/Процессы и примитивы.
- •Примитивы.
- •Процессы.
- •/Предполагаемая среда выполнения процессов.
- •/ Диаграмма переходов.
- •/Создание процессов.
- •/Уровневое представление ос unix
- •/Функции ядра операционной системы.
- •/Понятие прерываний в ос
- •/Структура ос
- •/Обзор подсистем ядра Unix
- •Описание подсистем ядра unix
- •Планирование но наивысшему приоритету (hpf)
- •Метод круговорота (карусель)
- •Очереди с обратной связно (fв)
- •Планирование в unix.
- •Типы многозадачности.
- •Состав планировщика
- •Зависимости подсистем ядра
- •Контроллер памяти (Метоrу Manager)
- •Механизм свопинга (Swapping)
- •Механизм пейджинга (Paging)
- •Внешний интерфейс
- •Verify_area()– проверка прав на доступ к выделенному региону памяти; get_free_page() / free_page() – выделение и освобождение физической памяти.
- •Реализация программ выделения памяти
- •Сборка мусора
- •Типы сборщиков памяти
- •Взаимодействие внутренних модулей мм
- •Архитектура vfs
- •Интерфейсы файловой системы
- •Ioctlo: установить атрибуты файла;
- •Защита файлов
- •Списки прав доступа
- •Механизмы обмена данными в vfs
- •Буферный кэш.
- •Механизмы обмена данными.
- •Логическая файловая система
- •Физическая организация файловой системы
- •Структура файла обычного типа
- •Примечания к физической организации vfs
- •Сетевая подсистема (Net)
- •Состав сетевой подсистемы
- •Представление и структуры данных
- •Внутренняя структура подсистемы
- •Зависимости сетевой подсистемы
- •Подсистема межпроцессного взаимодействия
/Предполагаемая среда выполнения процессов.
Для выполнения программ в любой ОС могут и должны существовать некоторые условия. Эти условия касаются, например, привилегий, которые имеет исполняемая программа, или возможности доступа к объектам и/или данным в вычислительной системе.
В системе Unix условия выполнения пользовательских процессов разбиваются на два уровня: уровень пользователя и уровень ядра. Когда процесс Производит обращение к операционной системе, режим выполнения процесса переключается с режима задачи (пользовательского) на режим ядра, то есть операционная система пытается обслужить запрос пользователя, возвращая код ошибки в случае неудачного завершения операции.
Основные различия между этими двумя режимами:
-
В режиме задачи процессы имеют доступ только к своим собственным инструкциям и данным, но не к инструкциям и данным ядра (либо других процессов).
-
Однако в режиме ядра процессам уже доступны адресные пространства ядра и пользователей. Например, виртуальное адресное пространство процесса может быть поделено на адреса, доступные только в режиме ядра, и на адреса, доступные в любом режиме.
Некоторые машинные команды являются привилегированными и вызывают возникновение ошибок при попытке их использования в режиме задачи. Например, в машинном языке может быть команда, управляющая регистром состояния процессора; процессам, выполняющимся в режиме задачи, она недоступна.
/ Состояние процессов.
Состояние выполнения- это активное состояние, во время которого процесс обладает всеми необходимыми ему для работы ресурсами и характеризуется моментом времени, когда процесс имеет контроль над процессором.
Состояние готовности характеризуется тем, что процесс стоит в очереди на выполнение.
Пассивное состояние характеризуется тем, что программа загружена в память, но не инициализирована для выполнения.
Состояние ожидания характеризуется тем, что выполнение процесса прервано и процесс ожидает освобождения необходимого ему ресурса или некоторого события, например, ввода данных или освобождения нужного ему устройства.
1)Диспетчеризация – готовый к выполнению процесс, получает управление над процессом.
2)Запрос к системным службам.
3)Прерывание – при выполнении прерывания исполнение процесса приостанавливается.
4)Прерывание и возврат из прерывания это происходит, если прерывание вызвано самим процессом.
5)Останов работы задачи.
6)Активизация задачи.
7)Завершение ожидания.
8)Запрос к системе.
9)Запросы к системным службам.
10)Контроль задачи.
/ Диаграмма переходов.
Диаграмма переходов представляет собой ориентированный граф, вершины которого представляют собой состояния, в которые может перейти процесс, а дуги - события, являющиеся причинами перехода процесса из одного состояния в другое. Переход между двумя состояниями разрешен, если существует дуга из первого состояния во второе. Несколько дуг может выходить из одного состояния, однако процесс переходит только по одной из них в зависимости от того, какое событие произошло в системе.
-
Процесс выполняется в режиме задачи.
-
Процесс выполняется в режиме ядра.
-
Процесс не выполняется, но готов к запуску под управлением ядра.
-
Процесс приостановлен и находится в оперативной памяти.
-
Процесс готов к запуску, но программа подкачки (нулевой процесс) должна еще загрузить процесс в оперативную память прежде, чем он будет запущен под управлением ядра.
-
Процесс приостановлен, и программа подкачки выгрузила его во внешнюю память, чтобы в оперативной памяти освободить место для других процессов.
-
Процесс возвращен из привилегированного режима в непривилегированный.
-
Процесс вновь создан и находится в переходном состоянии; процесс существует, но не готов к выполнению, хотя и не приостановлен.
-
Процесс вызывает системную функцию exit() и прекращает существование. Однако после него остается запись , содержащая код выхода, и некоторая хронометрическая статистика собираемая родительским процессом.
Две принадлежащие ядру структуры данных описывают процесс: запись в таблице процессов и пространство процесса. Таблица процессов содержит поля, которые должны быть всегда доступны ядру, а пространство процесса-поля, необходимость в которых возникает только у выполняющегося процесса. Поэтому ядро выделяет место для пространства процесса только при создании процесса: в нем нет необходимости, если записи в таблице процессов не соответствует конкретный процесс.
Как уже говорилось выше, в режиме разделения времени может выполняться одновременно несколько процессов и все они могут одновременно работать в режиме ядра. Если им разрешить одновременно выполняться в режиме ядра, то они могут испортить глобальные информационные структуры, принадлежащие ядру. Запрещая произвольное переключение контекстов возникновением событий, ядро защищает свою целостность. Ядро разрешает переключение контекста только тогда, когда процесс переходит из состояния "запуск в режиме ядра" в состояние "сна в памяти" (приостановка).
Процессы, запущенные в режиме ядра, не могут быть выгружены другими процессами, поэтому иногда говорят, что ядро не выгружаемо. При этом процессы, находящиеся в режиме задачи, могут выгружаться системой. Ядро поддерживает целостность своих информационных структур тем что оно не выгружаемо, и реализует механизм, согласно которому критические секции программы выполняются в каждый момент времени в рамках только одного процесса.
Для защиты своих внутренних структур система UNIX запрещает переключение контекстов на время выполнения процесса в режиме ядра. Если процесс переходит в состояние "сна", система делает допустимым переключение контекста.
Алгоритм функционирования ядра проверяют состояния процесса перед переключением контекста, тем самым обеспечивая защиту целостности информационных структур системы. Тем не менее остается одна проблема, которая может привести к нарушению целостности информации ядра. Это обработка прерываний, во время которой ядро не может запретить процессу обработки прерывания вносить изменения в информацию о состоянии ядра.