Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС - Модуль - Часть 1.doc
Скачиваний:
6
Добавлен:
23.11.2019
Размер:
233 Кб
Скачать
☆
  1. Создание и завершение процессов и потоков.

Три основных события, приводящие к созданию процессов (вызов fork или CreateProcess):

  • Загрузка системы

  • Работающий процесс подает системный вызов на создание процесса

  • Запрос пользователя на создание процесса

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

В UNIX каждому процессу присваивается идентификатор процесса ( PID - Process IDentifier)

Четыре события, приводящие к остановке процесса (вызов exit или ExitProcess):

  • Плановое завершение (окончание выполнения)

  • Плановый выход по известной ошибке (например, отсутствие файла)

  • Выход по неисправимой ошибке (ошибка в программе)

  • Уничтожение другим процессом

Таким образом, приостановленный процесс состоит из собственного адресного пространства, обычно называемого образом памяти (core image), и компонентов таблицы процессов (в числе компонентов и его регистры).

  1. Процессы в ОС UNIX

<-- Смотреть 30 -->

  1. Состояния потока

Три состояния процесса:

  • Выполнение (занимает процессор)

  • Готовность (процесс временно приостановлен, чтобы позволить выполняться другому процессу)

  • Ожидание (процесс не может быть запущен по своим внутренним причинам, например, ожидая операции ввода/вывода)

При создании процесса, он переходит в готовность.

Из готовности он может перейти в выполнение(3).

С выполнения он может сменить состояние на ожидание(1) или готовность (2) Из ожидания он может перейти только в готовность(4).

Возможные переходы между состояниями.

1. Процесс блокируется, ожидая входных данных

2. Планировщик выбирает другой процесс

3. Планировщик выбирает этот процесс

4. Поступили входные данные

 

Переходы 2 и 3 вызываются планировщиком процессов операционной системы, так что сами процессы даже не знают о этих переходах. С точки зрения самих процессов есть два состояния выполнения и ожидания.

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

  1. Планирование и диспетчеризация потоков

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

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

Планирование потоков включает в себя решение 2–х задач:

- определение момента времени для смены текущего активного потока;

- выбор для выполнения потока из очереди готовых потоков.

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

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

Другой тип планирования – статический – может быть использован в специализированных системах, в которых весь набор одновременно выполненных задач определен заранее (off-Line).

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

Диспетчеризация сводится к следующему:

- сохранение контекста текущего потока, который следует сменить;

- загрузка контекста нового потока, выбранного в результате планирования;