Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции ОССио.docx
Скачиваний:
14
Добавлен:
22.11.2019
Размер:
3 Мб
Скачать
☆

Основные функции ядра:

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

  2. Создание и уничтожение

  3. Выбор выполняющегося процесса

  4. Организация взаимодействий между процессами

  5. Манипулирование БУП

  6. Переключение контекста

  7. Поддержка операция ввода вывода

  8. Поддержка работы файловых систем

  9. Поддержка распределения и перераспределения и др.

Функции ядра которые могут вызываться приложениями могут называться IP.

Ядро в привилегированном режиме.

Для надежного управления кодом выполнения приложений, ОС должна иметь определенные привилегии , для того чтобы играть роль арбитра в споре предложений за ресурсы ПК. Поэтому аппаратура ПК должна поддерживать как минимум два режима работы:1) пользовательский, 2) привилегированный (режим работы ядра или супервизора).

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

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

Многослойная структура ос.

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

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

Межслойный интерфейс – это набор функций, которые предоставляются вышележащему слою.

1-й уровень – ср-ва аппаратной поддержки, прямо участвует в организации ВС процессах.

2-й уровень – машинно зависимые компоненты ОС.

3-й уровень – базовые механизмы ядра.

4-й уровень – менеджеры ресурсов.

5-й уровень – интерфейс системных вызовов.

28.09.12

Асинхронные параллельные процессы

Процессы называются параллельными если они существуют одновременно.

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

Асинхронный параллельный процесс –(составить самому определение из того что выше) это параллельный процесс которому необходимо периодически синхронизироваться и взаимодействовать .

Управляющая конструкция parbegin, parend

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

Внутри конструкции parbegin parend могут быть простые операторы , вызовы процедур, блоки последовательных операторов и комбинации этих элементов.

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

Взаимоисключение

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

Пример:

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

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

Когда процесс находиться в критическом участке он имеет исключительное право доступа к разделяемым общим данным а всем остальным процессам приходиться ждать, поэтому процессы должны как можно быстрее проходить свои критические участки и не должны в этот период блокироваться

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

Взаимоисключение бывает реализовано как программно так и аппаратно.

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

У алгоритма Деккера было несколько версий.

Алгоритм Деккера первая версия

Program версия Один;

Var номер процесса : целое;

Procedure процессодин;

Begin

While истина do

Begin

While номер процесса=2 do

Критический участок 1;

Номер :=2;

End

End;

Procedure процессдва;

Begin

While истина do

Begin

While номер процесса=1 do

Критический участок 2;

Номер :=1;

End

End;

Begin

Номер процесса:=1;

Parbegin

Пр_1;

Пр_2;

Parend

End;

Версия 1 гарантирует взаимоисключение однако весьма дорогой ценной .Процесс один должен выполняться первым при запуске программы и если процесс два готов к входу в критический участок он может получит разрешение на это со значительной задержкой. После того как процесс1 войдет в свой критический участок а затем выйдет должен будет выполняться процесс 2. Даже если процесс одни еще раз готов войти в критический участок он буде ждать пока процесс два войдет в свой критический участок . Если одному процессу приходиться гораздо чаще чем другому входить в свой критический участок чем другому то он вынужден работать с гораздо меньшей скоростью из-за жесткой синхронизации.

Program версия Два;

Var п1 внутри , п 2 внутри: логический;

Procedure процессодин;

Begin

While истина do

Begin

While п2 внутри do (процесс один блокирует себя в центре активного ожидания)

П1 внутри:=истина;

Критический участок 1;

П1 внутри:=ложь;

End

End;

Procedure процессдва;

Begin

While истина do

Begin

While п1 внутри do (процесс один блокирует себя в центре активного ожидания)

П2 внутри:=истина;

Критический участок 2;

П2 внутри:=ложь;

End

End;

Begin

П1 внутри:-=ложь;

П2 внутри:=ложь;

Parbegin

Пр_1;

Пр_2;

Parend

End;

Тут снимается ограничения что первый должен входить первый в процесс.

Версия 2 не гарантирует взаимоисключения. Потому что оба процесса могут оказаться в своих критических участках.

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

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

В версии 4 гарантируется взаимоисключение и убирается проблема тупика однако появляется новая проблема бесконечная откладывание. Возникающая при параллельном выполнении процессов тандемов.

Лекция на дом