- •Архитектура ОС UNIX
- •Процесс
- •Состояния процесса
- •Состояния процесса
- •Диаграмма
- •Структуры данных в ядре для описания процесса
- •Информационные структуры ядра для поддержания процессов
- •Записи в таблице процессов
- •Записи в пространстве процесса
- •Формат памяти системы
- •Формат памяти системы
- •Области памяти
- •Страницы памяти
- •Страницы памяти. Пример
- •Таблицы страниц
- •Пример определения физического адреса
- •Карта памяти пространства процесса
- •Контекст процесса
- •Пользовательский контекст
- •Регистровый контекст
- •Системный контекст
- •Компоненты контекста процесса
- •Сохранение контекста процесса
- •Сохранение контекста процесса. Прерывание
- •Сохранение контекста процесса. Взаимодействие с ОС
- •Сохранение контекста процесса. Переключение и сохранение
- •Управление адресным пространством процесса
- •Управление адресным пространством процесса
- •Управление адресным пространством процесса
- •Приостановка процессов
Архитектура ОС UNIX
Структура процессов. Управление процессами.
Процесс
Процессом называется последовательность операций при выполнении программы, которые представляют собой наборы байтов, интерпретируемые центральным процессором как машинные инструкции (т.н. "текст"), данные и стековые структуры.
Выполнение процесса заключается в точном следовании набору инструкций, который является замкнутым и не передает управление набору инструкций другого процесса; он считывает и записывает информацию в раздел данных и в стек, но ему недоступны данные и стеки других процессов.
Одни процессы взаимодействуют с другими процессами и с остальным миром посредством обращений к ОС.
Состояния процесса
1.Процесс выполняется в режиме задачи.
2.Процесс выполняется в режиме ядра.
3.Процесс не выполняется, но готов к запуску под управлением ядра.
4.Процесс приостановлен и находится в оперативной памяти.
Состояния процесса
5.Процесс готов к запуску, но программа подкачки (нулевой процесс) должна еще загрузить процесс в оперативную память, прежде чем он будет запущен под управлением ядра.
6.Процесс приостановлен и программа подкачки выгрузила его во внешнюю память.
7.Процесс возвращен из режима ядра в режим задачи.
8.Процесс вновь создан и находится в переходном состоянии.
9.Процесс вызывает системную функцию exit и прекращает существование.
Диаграмма
переходов
Процесс может:
1.Создать другой процесс
2.Вызвать системную функцию
3.Завершиться с помощью exit Все остальное – часть модели, закодированной в ядре!
Структуры данных в ядре для описания процесса
Две принадлежащих ядру структуры данных описывают процесс:
запись в таблице процессов. Таблица процессов содержит поля, которые должны быть всегда доступны ядру.
пространство процесса. Содержит
поля, необходимость в которых возникает только у выполняющегося процесса.
Информационные структуры ядра для поддержания процессов
Записи в таблице процессов
1.Поле состояния.
2.Поля, используемые ядром при размещении процесса и его пространства в основной или внешней памяти.
3.Несколько пользовательских идентификаторов (UID), устанавливающих различные привилегии.
4.Идентификаторы процесса (PID), указывающие взаимосвязь между процессами.
5.Дескриптор события (когда приостановлен).
6.Параметры планирования (режим ядра-задачи).
7.Поле сигналов (которые еще не обработаны процессом, но уже получены).
8.Различные таймеры
Записи в пространстве процесса
Указатель на таблицу процессов.
Пользовательские идентификаторы.
Поля таймеров.
Вектор, описывающий реакцию процесса на сигналы.
Поле операторского терминала, идентифицирующее "регистрационный терминал", который связан с процессом.
Поле ошибок.
Поле возвращенного значения (результат выполненной системной функции).
Параметры ввода-вывода.
Имена текущего каталога и текущего корня.
Таблица пользовательских дескрипторов файла и др.
Формат памяти системы
Предположим, что физическая память машины имеет адреса, начиная с 0 и кончая адресом, равным объему памяти в байтах.
Поэтому компилятор генерирует адреса для виртуального адресного пространства заданного диапазона, а устройство управления памятью, называемое диспетчером памяти, транслирует виртуальные адреса, сгенерированные компилятором, в адреса ячеек, расположенных в физической памяти!
адреса в физической памяти, два процесса не смогут параллельно выполняться, если их адреса перекрываются !!!