Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Unix лекции / lection5.ppt
Скачиваний:
13
Добавлен:
20.04.2015
Размер:
217.6 Кб
Скачать

Системный контекст

статическая часть элемента

Запись в таблице процессов

Часть адресного пространства задачи, выделенная процессу (управляющая инф.)

Записи частной таблицы областей процесса, общие таблицы областей и таблицы страниц

динамическая часть представляется в виде стека, элементами которого являются контекстные уровни

Контекстные уровни - информация, необходимая для восстановления предыдущего уровня и включающая в себя регистровый контекст предыдущего уровня

Стек ядра, в котором хранятся записи процедур ядра, если процесс выполняется в режиме ядра

Компоненты контекста процесса

Число контекстных уровней равно количеству прерываний ЦП + 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)

Приостановка процессов

Соседние файлы в папке Unix лекции