- •Основные понятия и определения.
- •Эволюция ос.
- •2.Архитектура ос.
- •3.Микроядерная архитектура эвм.
- •Основные концепции управления ос.
- •4. Процессор. Управление процессами.
- •5.Описатели процесса.
- •6. Классификация ос по признаку поддержки процессов и потоков.
- •6 Марта 2012 г.
- •7. Управление задачами.
- •16 Марта 2012 г.
- •8. Асинхронные параллельные процессы.
- •9.Семафоры.
- •Мониторы.
- •10. Тупики.
- •Управление памятью.
- •11.Физическая память.
- •12.Связное и несвязное распределение памяти.
- •13.Виртуальная память.
- •14. Преобразование адреса виртуальной памяти в реальный адрес осуществляется по схеме:
- •15.Управление виртуальной памятью, стратегии управления.
- •16. Кэширование данных.
- •Принцип действия кэш–памяти.
- •17.Способы отображения оп на кэш-память.
- •18. Ввод/вывод. Управление файлами и файловой системой.
- •19.Логическая организация фс.
- •Логическая организация файлов.
- •20. Физическая организация фс.
- •Права доступа к файлу.
- •Часть 2. Unix
- •Имена файлов.
- •Индексный дескриптор файла и жесткие ссылки.
- •2. Типы файлов.
- •Создание и монтирование фс.
- •Структура фс ext2fs.
- •3.Структура дискового раздела.
- •Индексные дескрипторы файлы и системы адресации файлов.
- •4.Структура системы и ядро классической Unix.
- •5.Управление процессами.
- •История.
- •Часть 3.
- •1.Структура ос Windows.
- •2.Подсистема win32.
- •3.Объекты, менеджер объектов.
- •Объекты ядра.
- •Структура объектов.
- •Описатели объектов.
- •Именование объектов.
- •Совместное использование объектов.
- •Реестр.
- •Поиск файлов по имени.
- •Точки повторного анализа.
- •5.Совместный доступ к файлу.
- •Производительность фс.
- •Надежность фс.
- •Поддержка нескольких фс.
16 Марта 2012 г.
8. Асинхронные параллельные процессы.
Процессы называются параллельными, если они существуют одновременно. Параллельные процессы могут работать совершенно независимо друг от друга или они могут быть асинхронными – им необходимо периодически синхронизироваться или взаимодействовать.
Ag a
Par begin
Оператор1; оператор2; …; операторN;
Par end.
X:=(–b+(b^2–4*a*c)^0,5)/(2*a)
Par begin
R1:= –b;
R2:=b^2;
R3:=4*a;
R4:=2*a;
Par end
R5:=R3*c;
R5:=R2–R5;
R5:=R5^0,5;
R5:=R1+R5;
X:=R5/R4;
При параллельном вычислении процессам приходится обращаться к общим данным (ресурсам). Ситуации, при которых конечный результат одновременной работы с общими данными зависит оттого, кто из них был первым, называются состояниями состязания. Подобные ситуации необходимо исключать путем введения определенных правил обращения к разделяемым данным.
Если во время обращения одного процесса к совместно-используемым данным всем другим процессам это запрещается, то такой способ взаимодействия называется взаимным исключением.
Если процесс обращается к разделяемым данным, то говорят, что он находится в своем критическом участке, а часть программы, в которой есть обращение к разделяемым данным, называется критической секцией или областью. Впервые программа реализации взаимного исключения была разработана Деккером. Свойства этого алгоритма:
не требует специальных аппаратных команд
процесс, работающий вне своего критического участка, не может помешать другому процессу войти в его критический участок
процесс, желающий войти в свой критический участок, получает эту возможность без бесконечного откладывания.
Var N: integer;
Procedure Процесс1;
Begin
While true do
Begin
While N=2 do;
КритическийУчасток1;
N:=2;
ПрочиеОператоры1;
end;
end;
procedure Процесс2;
begin
while true do
begin
while N=1 do;
КритическийУчасток2;
N:=1;
ПрочиеОператоры2;
End; end;
BEGIN
N:=1;
Par begin
Процесс1; Процесс2;
Par end
END.
Примитив «вход взаимного исключения» реализуется как один цикл while, который повторяется до тех пор, пока переменная «номер процесса» не станет равной номеру данного процесса. Примитив «выход» реализуется как одна команда, который устанавливает для переменной N значение, равное номеру другого процесса. Алгоритм Деккера реализует взаимного исключения для двух процессов.
1981 год – алгоритм Петерсона.
Кроме программных, существуют и аппаратные способы решения проблемы взаимоисключения. Кроме алгоритмов существуют семафоры.
9.Семафоры.
Концепция семафоров была предложена Дейкстра. Семафор представляет собой целочисленную переменную S, с которой ассоциирована очередь ожидающих процессов. Пытаясь пройти через семафор, процесс одновременно вычитает из S единицу. Если S>=1 (семафор открыт), то процесс проходит сквозь семафор, если S=0 (семафор закрыт), то процесс останавливается и ставится в очередь.
Закрытие семафора соответствует захвату объекта или ресурса, доступ к которому контролируется этим семафором. Если объект захвачен, остальные процессы вынуждены ждать его освобождения. Закончив работу с объектом, процесс увеличивает значения семафора на единицу, открывая его. В простейшем случае работает двоичный семафор, который может быть либо нулем, либо единицей. Есть семафоры общего вида, принимающие любые целочисленные значения, соответствуют случаю, когда с объектом могут работать несколько процессов, разрешается добавлять и отнимать у S любое значение, есть реализации, у которых S<0, значение семафора можно читать и менять с помощью специальных операций, которые обозначаются Р и V, а также операцией инициализации Init Sem (Имя семафора, начальное значение). P(S): if S>0 then S:=S–1; else остановка процесса и помещение его в очередь ожидания. V(S): S:=S+1; активация одного из ожидающих процессов.
К переменной S нет доступа других процессов во время выполнения.
Выборка, наращивание и запоминание не могут быть прерваны.
Никакие прерывания во время выполнения примитивов Р и V недопустимы.
При отказе доступа к критическому ресурсу используется режим пассивного ожидания. Поэтому в состав механизма семафоров включаются средства формирования и обслуживания очередей. Эти средства реализуются супервизором ОС. Семафоры также можно использовать для реализации механизма синхронизации процессов путем блокирования возобновления: один процесс блокирует себя (выполняя операцию P(S) до начального значения S), чтобы подождать наступления некоторого события, другой процесс обнаруживает, что ожидаемое событие произошло, и возобновляет заблокированный процесс (с помощью V(S)).
Участки взаимоисключения обрамляются операциями P и V. Если одновременно несколько процессов попытаются выполнить V, то это будет разрешено только одному из них.
Program BinSemaphore
Var S: semaphore;
Procedure процесс1;
Begin
While true do
begin
P(S);
КритическийУчасток1;
V(S);
End; end;
Procedure процесс2;
Begin
While true do
Begin
P(S);
КритическийУчасток2;
V(S);
End; end;
BEGIN
Init Sem (S,1);
Par begin
Процесс1; процесс2;
Par end
END.
Пример считающих семафоров – взаимодействие двух, выполняющихся в режиме мультипрограммирования, потоков или процессов, один из которых пишет данные в буфер, а другой считывает их.
20 марта 2012 г.