- •Архитектура ОС UNIX
- •Процесс
- •Состояния процесса
- •Состояния процесса
- •Диаграмма
- •Структуры данных в ядре для описания процесса
- •Информационные структуры ядра для поддержания процессов
- •Записи в таблице процессов
- •Записи в пространстве процесса
- •Формат памяти системы
- •Формат памяти системы
- •Области памяти
- •Страницы памяти
- •Страницы памяти. Пример
- •Таблицы страниц
- •Пример определения физического адреса
- •Карта памяти пространства процесса
- •Контекст процесса
- •Пользовательский контекст
- •Регистровый контекст
- •Системный контекст
- •Компоненты контекста процесса
- •Сохранение контекста процесса
- •Сохранение контекста процесса. Прерывание
- •Сохранение контекста процесса. Взаимодействие с ОС
- •Сохранение контекста процесса. Переключение и сохранение
- •Управление адресным пространством процесса
- •Управление адресным пространством процесса
- •Управление адресным пространством процесса
- •Приостановка процессов
Системный контекст
статическая часть элемента
Запись в таблице процессов
Часть адресного пространства задачи, выделенная процессу (управляющая инф.)
Записи частной таблицы областей процесса, общие таблицы областей и таблицы страниц
динамическая часть представляется в виде стека, элементами которого являются контекстные уровни
Контекстные уровни - информация, необходимая для восстановления предыдущего уровня и включающая в себя регистровый контекст предыдущего уровня
Стек ядра, в котором хранятся записи процедур ядра, если процесс выполняется в режиме ядра
Компоненты контекста процесса
Число контекстных уровней равно количеству прерываний ЦП + 1 для системных функций + 1 для пользовательского контекста.
Сохранение контекста процесса
Ядро сохраняет контекст процесса, помещая в стек новый контекстный уровень. Имеет место при:
Прерывании и особых ситуациях
Взаимодействии с операционной системой через вызовы системных функций
Переключении контекста
Сохранении контекста на случай аварийного завершения
Сохранение контекста процесса. Прерывание
1.Ядро сохраняет текущий регистровый контекст выполняющегося процесса и создает в стеке новый уровень.
2.Ядро устанавливает источник прерывания, идентифицируя тип и номер устройства. Например, 0 – clockinter, 1 – diskinter, 2 – ttyintr, 3
– devinter, 4 – softinter, 5 – otherintr …
3.Вызов программы обработки прерывания.
4.Программа завершает работу и возвращает управление ядру.
Сохранение контекста процесса. Взаимодействие с ОС
Обычная последовательность команд обращения к функции не в состоянии переключить выполнение процесса с режима ядра в режим задачи.
Компилятор с языка Си использует библиотеку функций, имена которых совпадают с именами системных функций.
В библиотечных функциях обычно исполняется команда, переводящая выполнение процесса в режим ядра и побуждающая ядро к запуску исполняемого кода системной функции.
Сохранение контекста процесса. Переключение и сохранение
Из диаграммы состояний видно (слайд 5), что ядро разрешает производить переключение контекста в 4 случаях: когда процесс приостанавливает свое выполнение, когда он завершается, когда он возвращается после вызова системной функции в режим задачи или когда он возвращается в режим задачи после завершения ядром обработки прерывания.
Существуют ситуации, когда ядро вынуждено аварийно прервать текущий порядок выполнения и немедленно переходить к исполнению ранее сохраненного контекста.
Управление адресным пространством процесса
Запись таблицы областей содержит информацию, необходимую для описания области:
Указатель на индекс файла, содержимое которого было загружено
Тип области (команды, разделяемая память, данные или стек)
Размер области
Местоположение области в физической памяти
Статус (состояние) области:
заблокирована
запрошена
идет процесс ее загрузки в память
готова, загружена в память
Счетчик ссылок (количество процессов, ссылающихся на данную область)
Управление адресным пространством процесса
К операциям работы с областями относятся:
Блокировка области и снятие блокировки
Выделение области (fork, exec, shmget )
Присоединение области к процессу (shmat )
Изменение размера области (sbrk)
Загрузка области из файла в пространство памяти процесса
Освобождение области
Управление адресным пространством процесса
Освобождение области
Отсоединение области от процесса (exec, exit и shmdt)
Копирование содержимого области (fork)