Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OS_pechat.docx
Скачиваний:
13
Добавлен:
15.04.2015
Размер:
370.32 Кб
Скачать

5.Управляет процессами (нитями) – диспетчер процессов.

Алгоритм работы диспетчера:

Procedure dispach:

<обновить PSW активного процесса, если он есть>;

<выбрать следующий готовый процесс для передачи ему управления>.

Выбор процесса осуществляется в соответствии с некоторой стратегией LIFO, FIFO.

if <готовый процесс найден>

then

begin

<пометить выбранный процесс как активный>;

<выделить квант времени, установив привилегированной командой таймер>;

<передать управление выбранному процессу>

end

else

<перевести центральный процессор привилегиванной командой в состояние простоя>;

Как выбирается процесс для активизации:

  1. круговая стратегия (в мультипрограммных системах) – в этом случае все процессы считаются равноценными, и диспетчер циклически просматривает PSW всех процессов и выделяет им по очереди квант времени.

  2. Выбор процессов по приоритету – приоритеты могут назначаться пользователем, либо их устанавливает ОС в целях повышения производительности всей системы. Приоритеты делятся на классы, внутри класса может быть градация, и они могут быть статическими, либо динамическими в зависимости от загрузки системы. Любой процесс обменивается с диспетчером процессов запросами о наступлении некоторого события. Для этого используют специальные внутри системные запросы.

Событие, которое ожидалось, или о наступлении которого было сообщено, определяется посредством задания соответствующего адреса блока состояния события (Event Status Block-ESB)

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

Обработка запроса

Wait:

Procedure Wait (ESB);

If esbFlag Procedure Wait (esb);

If esbFlag

=1 {событие уже наступило}

then <возвратить управление запрашивающего процесса специальной командой>

else

begin

<пометить запрашивающий процесс как blocked>;

< поместить запрашивающий процесс в очередь: ESBQUEUE>;

<передать управление диспетчеру>;

end;

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

Процедура SIGNAL обработки сигнала:

Procedure SIGNAL (ESB);

ESBFlag=1; {отметить, что событие наступило}

for <каждый процесс в ESBQUEUE> do

begin

<пометить процесс как готовый>;

<убрать процесс из очереди>

end;

<возвратить управление запрашивающему процессу>.

Если метод диспетчеризации основан на приоритетах, то для обработки сигнала используется другой алгоритм:

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

Это означает, что в зависимости от приоритета процессы могут перехватывать управление у процессов с меньшим приоритетом.

Singularity

супер мега проект от Microsoft - новая операционная система Singularity. Microsoft решила с нуля попробовать написать ОСь используя "безопасное программирование", которое на корню будет пресекать баги различного рода. Для этого решили использовать "безопасные" языки программирования C#, Sing#, ну и кое-где си и ассемблер.

Главной особенностью операционки является модель SIP (Software-Isolated Process). Каждый процесс изолирован друг от друга, но сообщения между ними могут передаваться посредством двунаправленных, строго типизированных высокоуровневых каналов. Теперь что касается ПО. Сами исходники Singularity . Интересной особенностью является то, что есть возможность отладки ядра операционной системы, поэтому будет не лишне проинсталлировать комплект утилит для этого дела. Т.к. ОСь завязана на Framework'e, то и его необходимо будет поставить, если конечно же он у вас уже не стоит. Работать всё будет на виртуальной машине, поэтому ставим ещё систему виртуализации Microsoft Virtual PC 2007. Тем, кто уже сталкивался с виртуальными ОС, наверняка знаком такой продукт как VMware - это тоже самое, только от Microsoft. Если ещё будет желание попробовать написать первые программы или вири и тем самым прославиться, то ещё нужно поставить Microsoft Visual Studio 2005 или Microsoft Visual Studio 2008. На этом всё, больше ничего не понадобится.

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