Скачать презентацию ОПЕРАЦИОННЫЕ СИСТЕМЫ Вощинская Гильда Эдгаровна 1 Классификация Скачать презентацию ОПЕРАЦИОННЫЕ СИСТЕМЫ Вощинская Гильда Эдгаровна 1 Классификация

ОС - Лекция 2.ppt

  • Количество слайдов: 18

ОПЕРАЦИОННЫЕ СИСТЕМЫ Вощинская Гильда Эдгаровна 1 ОПЕРАЦИОННЫЕ СИСТЕМЫ Вощинская Гильда Эдгаровна 1

Классификация ОС • По особенности алгоритмов управления ресурсами • По особенности аппаратных платформ • Классификация ОС • По особенности алгоритмов управления ресурсами • По особенности аппаратных платформ • По особенности областей использования • По особенности методов построения 2

Понятие программы 3 Понятие программы 3

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

Понятие процесса процедура процессор среда процесс 1. 2. 3. Операции выполняются последовательно. Между шагами Понятие процесса процедура процессор среда процесс 1. 2. 3. Операции выполняются последовательно. Между шагами процесс может быть прерван. Среда изменяется не только самим процессом, но и другими процессами. процесс - открытая система 5

Реализация процессов Программный процесс однозначно определяет информационная структурадескриптор (вектор состояния): 1. Статус состояния. 2. Реализация процессов Программный процесс однозначно определяет информационная структурадескриптор (вектор состояния): 1. Статус состояния. 2. Защищённая область для сохранения регистров при прерывании. 3. Информация о ресурсах, которыми владеет процесс. 6

Состояние процесса выполняется готов заблокирован 7 Состояние процесса выполняется готов заблокирован 7

Управление процессами • • Создать процесс (создать дескриптор, выделить ресурсы) Запустить процесс (предоставить процессор) Управление процессами • • Создать процесс (создать дескриптор, выделить ресурсы) Запустить процесс (предоставить процессор) Остановить процесс (отобрать процессор) Уничтожить процесс (отобрать ресурсы и дескриптор) 8

Общение между процессами • • Разделение ресурсов(логических и физических) Синхронизация процессов процесс1: temp 1: Общение между процессами • • Разделение ресурсов(логических и физических) Синхронизация процессов процесс1: temp 1: =count; temp 1: =temp 1+1; count: =temp 1; процесс2: temp 2: =count; temp 2: =temp 2+1; count: =temp 2; 9

Механизм синхронизации 1. 2. Если несколько процессов хотят обратиться к одному и тому же Механизм синхронизации 1. 2. Если несколько процессов хотят обратиться к одному и тому же критическому ресурсу, то какой-то из них должен получить разрешение. Не более, чем одному процессу предоставляется критический ресурс. Синхронизация На нижнем уровне на верхнем уровне 10

Синхронизация на нижнем уровне Блокировка памяти 2. Операция «проверка и установка» Test_Set(loc, comm) 1. Синхронизация на нижнем уровне Блокировка памяти 2. Операция «проверка и установка» Test_Set(loc, comm) 1. 3. Семафоры 11

Блокировка памяти. Пример с ошибкой program error_solution; var switch 1, switch 2: boolean; Begin Блокировка памяти. Пример с ошибкой program error_solution; var switch 1, switch 2: boolean; Begin switch 1: =false; switch 2: =false; parbegin process 1: while (true) do begin while(switch 2) do; switch 1: =true; Critical_section 1; switch 1: =false; end; process 2: while (true) do begin while(switch 1) do; switch 2: =true; Critical_section 2; switch 2: =false; end; parend; end. 12

Блокировка памяти Алгоритм Деккера program Dekker; var c 1, c 2: integer; queue: integer; Блокировка памяти Алгоритм Деккера program Dekker; var c 1, c 2: integer; queue: integer; begin c 1: =0; c 2; =0; queue: =1; parbegin process 1: while(true) do begin c 1: =1; while c 2=1 do begin if queue=2 then begin c 1: =0; while queue=2 do; c 1: =1; end; Critical_section 1; c 1: =0; queue: =2; end; process 2: while(true) do begin c 2: =1; while c 1=1 do begin if queue=1 then begin c 2: =0; while queue=1 do; c 2: =1; end; Critical_section 2; c 2: =0; queue: =1; end; parend; end. 13

Операция «проверка и установка» program Example_Test_Set; var comm: integer; loc 1, loc 2: integer; Операция «проверка и установка» program Example_Test_Set; var comm: integer; loc 1, loc 2: integer; begin comm: =0; parbegin process 1: while(true) do begin repeat Test_Set(loc 1, comm); until loc 1=0; Critical_section 1; comm: =0; end; process 2: while(true) do begin repeat Test_Set(loc 2, comm); until loc 2=0; Critical_section 2; comm: =0; end; parend; end. 14

Семафоры Семафор-это целая переменная S, значения которой могут изменяться специальными операциями P и V. Семафоры Семафор-это целая переменная S, значения которой могут изменяться специальными операциями P и V. P(S) dec(S); если S>=0 , то процесс продолжает работу если S<0, то процесс блокируется; V(S) inc(S); если S>0 , то процесс продолжает работу; если S<=0, то процесс продолжает работу и из очереди заблокированных процессов запускается один процесс; 15

Синхронизация с помощью семафоров program Example_Semaphore; var S: integer; begin S: =1; parbegin process Синхронизация с помощью семафоров program Example_Semaphore; var S: integer; begin S: =1; parbegin process 1: while(true) do begin P(S); Critical_section 1; V(S); end; process 2: while(true) do begin P(S); Critical_section 2; V(S); end; parend; end. 16

Поставщик-потребитель Поставщик помещает Потребитель забирает сообщения в хвост сообщения из начала очереди заполненных буферов. Поставщик-потребитель Поставщик помещает Потребитель забирает сообщения в хвост сообщения из начала очереди заполненных буферов. Поставщик положить если есть буфера. может Потребитель может взять сообщение, если есть свободные заполненные буфера. Поставщик и потребитель не должны одновременно обращаться к буферу. 17

Поставщик-потребитель. Реализация с помощью семафоров program Supplier_Consumer; Consumer: //потребитель var while(true) do presence: integer; Поставщик-потребитель. Реализация с помощью семафоров program Supplier_Consumer; Consumer: //потребитель var while(true) do presence: integer; //наличие begin filled: integer; //заполнено P(filled); excep: integer; //взаимоисключение P(excep); Begin Receive_mes; //получить presence: =quantity_of_buffers; //кол-во буферов // сообщение filled: =0; excep: =1; V(presence); parbegin V(excep); Supplier: //поставщик Treat_mes; //обработать while(true) do // сообщение begin end; Prepare_mes; //подготовить сообщение parend; P(presence); end. P(excep); Send_mes; //поместить сообщ. в буфер V(filled); V(excep); 18 end;