Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Гл.3 ОС буклет.doc
Скачиваний:
9
Добавлен:
11.11.2018
Размер:
353.79 Кб
Скачать

3.3.2. Образы процесса и потока

Совокупность информации, которая отображает процесс в памяти, называют образом процесса (ргосеss іmage), а всю информацию о потоке - образом потока (thread imadge).

К образу процесса принадлежат:

  • управляющий блок процесса;

  • программный код пользователя;

  • данные пользователя (глобальные данные программы, общие для всех потоков);

  • информация образов потоков процесса.

Программный код пользователя, данные пользователя и информация о потоках загружаются в адресное пространство процесса.

Образ процесса обычно не является беспрерывным участком памяти, его части могут выгружаться на диск.

К образу потока принадлежат:

  • управляющий блок потока;

  • стек ядра (стек потока, который используется во время выполнения кода потока в режиме ядра);

  • стек пользователя (стек потока, доступный в управляющем режиме).

Схема расположения в памяти образов процесса и его потоков изображена на рис. 3.3. Все потоки конкретного процесса могут пользоваться общей информацией его образа.

3.4. Переключение контекста и обработка прерываний

3.4.1. Организация переключения контекста

Важнейшей задачей операционной системы во время управления процессами и потоками является организация переключения контекста - передачи управления от одного потока к другому с сохранением состояния процессора.

Общих принципов переключения контекста придерживаются в большинстве систем, но их реализация обусловлена конкретной архитектурой. Обычно нужно выполнить такие операции:

  • сохранить состояние процессора потока в некотором участке памяти (области хранения состоянгия процессора потока);

  • определить, какой поток следует выполнять следующим;

  • загрузить состояние процессора этого потока из его области хранения;

  • продолжить выполнение кода нового потока.

Переключение контекста обычно осуществляется с привлечением средств апаратной поддержки. Могут быть использованы специальные регистры и участки памяти, которые дают возможность сохранять информацию о текущей задаче (когда рассматривают аппаратное обеспечение, аналогом понятия «поток» есть понятия «задача»), а также специальные инструкции процессора для работы с этими регистрами и участками памяти.

Рассмотрим аппаратную поддержку переключения задач в архитектуре ІА-32. Для сохранности состояния процессора каждой задачи (содержимого связанных с ней регистров процессора) используют специальный участок памяти - сегмент состояния задачи ТSS. Адресу этой области можно получить из регистра задачи ТR (это системный адресный регистр).

Для переключения задач достаточно загрузить новые данные в регистр ТR. В результате значения регистров процессора текущей задачи автоматически сохранятся в ее сегменте состояния, после чего в регистры процессора будет загружено состояние процессора новой (или прежде прерванной) задачи и начнется выполнение ее инструкций.

3.4.2. Обработка прерываний

В процессе выполнения поток может быть прерван не только для переключения контекста на другой поток, но и в связи с программным или аппаратным прерываниям (переключение контекста тоже связано с прерываниями, собственно, с прерыванием от таймера). С каждым прерыванием поступает дополнительная информация (например, его номер). На основании этой информации система определяет, где будет размещен адрес процедуры обработчика прерывания (список таких адресов сохраняют в специальном участке памяти и называют вектором прерываний).

Приведем пример последовательности действий во время обработки прерывания:

  • сохранение состояния процессора потока;

  • установление стека обработчика прерывания;

  • начало выполнения обработчика прерывания (кода операционной системы);

  • для этого из вектора прерывания загружается новое значение счетчика команд;

  • восстановление состояния процессора потока после окончания выполнения обработчика и продолжение выполнения потока.

Передача управления обработчику прерывания, как и переключение контекста, может состояться практически в любой момент. Основное отличие заключается в том, что адрес, на который передается управление, задают на основе номера прерывания и сохраняют в векторе прерываний, а также в потому, что код обработчика не продлевается из места, где было прервано выполнение, а начинает выполняться каждый раз сызнова.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]