Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОперационныеСистемы, общие понятия.docx
Скачиваний:
140
Добавлен:
08.02.2015
Размер:
366.4 Кб
Скачать

Планирование процессов в ос unix. (13-2)

Определение последовательности выполнения потоков предусматривает два алгоритма, которые работают независимо друг от друга:

  1. Низкоуровневый алгоритм – выбирает следующий процесс из набора процессов в памяти, готовых к работе.

  2. Высокоуровневый алгоритм (swapper) – перемещает процессы из памяти на диск и обратно, т.е. осуществляет свопинг.

В низкоуровневом алгоритме используется несколько очередей. С каждой очередью связан диапазон непересекающихся значений приоритетов.

  • Процессы, выполняющиеся в режиме «процесс» обычно имеют положительное значение приоритетов.

  • У процессов, выполняющихся в режиме система, значение приоритетов, как правило, отрицательное. Отрицательное значение приоритетов считается наивысшими.

Когда запускается низкоуровневый алгоритм, он ищет очередь, начиная с самого высокого приоритета, т.е. наименьшего отрицательного значения, пока не находит очередь, в которой есть хотя бы один процесс. После этого в этой очереди выбирается и запускается первый процесс. Если процесс использует весь свой квант времени (~100мкс), он помещается в конец очереди, а алгоритм планирования запускается снова.

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

PRI=K*CPU+NICE+BASE

На основе нового приоритета каждый процесс прикрепляется к соответствующей очереди.

  • CPU – Среднее значение тиков таймера, в течение которого процесс выполнялся. При каждом тике таймера счетчик использования ЦП процессом в таблице процессов увеличивается на 1.

  • K – Коэффициент для конкретной UNIX системы. Иногда это число K, иногда функция K(t).

  • NICE - Пользовательская составляющая приоритета процесса, принимает диапазон значений от -20 до +20. С помощью системного вызова nice можно менять приоритет процесса от 0 до 20. Системный администратор может запросить обслуживание с более высоким приоритетом от -20 до 20. Это однозначно увеличивает частоту эксплуатации ЦП этим процессом.

  • BASE

Когда процесс эмулирует прерывание для выполнения системного вызова, он блокируется, пока системный вызов не будет выполнен и процесс не вернется в режим «процесс». Блокировка происходит и при ожидании какого-либо события (wait) и при вводе/выводе. Когда процесс блокируется, он удаляется из очереди. Однако, когда происходит разблокировка процесса (наступает событие, которого он ждал или ввод/вывод завершен и т.п.), процесс снова помещается в очередь с отрицательным значением составляющей приоритета BASE.

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

Информационные связи между процессами в ос unix. (10-2)

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

Информационная связь между пользовательскими процессами осуществляется либо по одноранговой схеме, либо по многоранговой (клиент-сервер).

Одноранговая схема предусматривает следующие возможности обмена информацией между процессами:

  1. Через файловую систему (один процесс пишет в файл, другой из этого файла читает)

  2. Через межпроцессный канал.

  3. Через область внешних аргументов.

Межпроцессный канал – особый файл с рабочей диспозицией.

Межпроцессорное взаимодействие по многоранговой схеме (клиент-сервер) осуществляется следующими способами:

  1. При помощи сообщений - позволяет процессам, работающим на одном компьютере, обмениваться форматированными данными.

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

  3. Через сокеты (гнезда). Интерфейс транспортного уровня (sockets) – позволяет процессам, выполняемым на разных компьютерах, создать прямой двусторонний канал связи.