Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OSISP_shpory.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.14 Mб
Скачать

2. Взаимодействие процессов. Задача взаимного исключения. Вариант 3 (3, 28) – 144

int flag[2];

void P0()

{

while (1)

{

flag[0]=1;

while (flag[1]);

критический интервал 1;

flag[0]=0;

.

}

}

void P1()

{

while (1)

{

flag[1]=1;

while (flag[0]);

критический интервал 2;

flag[1]=0;

.

}

}

void main()

{

flag[0]=0;

flag[1]=0;

parbegin(P0,P1);

}

3. Концепция слоистой операционной системы и системы на основе микроядра.

Первые ОС, которые разрабатывались в 50-х годах 20 века, можно отнести к классу монолитных ОС. В таких системах почти все процедуры могли вызывать одна другую. Такой подход практически не допускал расширяемости ОС.

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

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

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

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

Достоинства концепции микроядра.

1. Единообразные интерфейсы (uniform interfase). Процессам ненужно различать приложения, выполняемые на уровне ядра и на пользовательском уровне, так как доступ ко всем службам осуществляется только с помощью передачи сообщений.

2. Расширяемость (extensibility). Имеется возможность добавлять в ОС новые услуги или сервисы, а также обеспечивать множественную реализацию сервисов в одной и той же функциональной области. Например, можно организовывать несколько различных способов хранения файлов на дисках

3. Гибкость (flexibility). В ОC можно не только добавлять новые услуги, но и удалять некоторые из них. Если пользователю не требуются некоторые подсистемы, занимающие большие объёмы памяти, он может скомпоновать компактную ОС по своим нуждам.

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

5. Надёжность (reliability). Чем больший код имеет программа, тем труднее её протестировать. Однако небольшое ядро ОС можно тщательно проверить. 6. Микроядро способствует поддержке распределенных ОС (distributed systems).

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