- •Раздел 1. Операционная система unix. Введение в операционную систему unix
- •Отличительные черты ос unix
- •Основы архитектуры операционной системы unix Модель системы unix.
- •Структура ядра ос unix.
- •Основы файловой системы ос unix
- •Типы файлов
- •Структура файловой системы unix
- •Владельцы файлов
- •Права доступа к файлу
- •Дополнительные атрибуты файлов
- •Устройства
- •Маска создания файла
- •Программы Oc unix
- •Процессы ос unix
- •Типы процессов
- •Атрибуты процесса
- •Процесс создания и запуска программ
- •Системный вызов завершения процесса exit
- •Системные функции типа exec
- •Обработка ошибок
- •Ограничения для процессов
- •Пользователи системы, Атрибуты пользователя
- •Средства ВзаимодействиЯ между процессАми
- •Сигналы
- •Посылка сигналов.
- •Int raise (int sig); // посылает сигнал вызывающему процессу (т.Е. Самому себе).
- •Обработка сигналов.
- •Набор сигналов.
- •Файловая подсистема ос unix
- •Индексный дескриптор
- •Блоки хранения данных
- •Недостатки и ограничения файловой системы s5fs
- •Файловая система ffs (Fast File System)
- •Основные отличия ffs от s5fs
- •Ограничения ffs
- •Каталоги ffs
- •Раздел 2. Взаимодействие процессов. Процесс, Понятие и классификация
- •Ресурсы, Понятие и классификация
- •Взаимодействие процессов Задача взаимного исключения
- •Integer очередь;
- •ОБобщенная задача взаимного исключения
- •Integer очередь;
- •Синхронизирующие примитивы (семафоры)
- •Процесс 1 :
- •Процесс 2 :
- •V(свободно);
- •Задача “производитель-потребитель” применение ОбщиХ семафорОв
- •Задача “производитель-потребитель” (буфер ограниченНый)
- •Взаимодействие через переменные состояния
- •Integer array желание[1:n], сп[1:n];
- •Integer чпб, бб, рб, чсеб, I;
- •Integer разм_п, n, max, nmax;
- •Проблема тупиков
- •Алгоритм банкира
- •Integer Св_Деньги; boolean Безопасно;
- •If ((Завершение_под_сомнением [I]) and
- •Применение алгоритма банкира
- •V(Взаимн_искл);
- •V(Возвращенные_Талеры[Номер_Клиента[m]]);
- •If (Попытка_выдать_талер_клиенту(h))
- •Монитороподобные средства синхронизации
- •Механизм типа «критическая область»
- •Механизм типа «условная критическая область»
- •Var s : semaphore; считывание : boolean; m : t;
- •Раздел 3. Вычислительные структуры. Машины, управляемые контроллерами (устройствами управления)
- •Усовершенствованная структура вычислительной машины, управляемой контроллерОм
- •Системы с операционным конвейером
- •Мультипроцессорные системы
- •Транспьютеры
- •Распределение памяти в транспьютерах
- •Диспетчеризация процессов
- •Организация ВводА / выводА в транспьютере.
- •Гарвардская архитектура на примере процессоров семейства adsp
ОБобщенная задача взаимного исключения
Даны N циклических процессов, каждый со своим критическим интервалом. Можно ли организовать работу таким образом, чтобы в любой момент времени только один из процессов мог находиться в своём критическом интервале?
begin integer array b, c [0..N];
Integer очередь;
for очередь := 0 step 1 until N do
begin
b [очередь] := 1;
c [очередь] := 1;
end;
очередь := 0;
parbegin
процесс 1: begin … end;
процесс 2: begin … end;
. . .
процесс N: begin … end;
parend;
end;
процесс i:
begin integer j, k;
Ai: b [i] := 0;
Li: if (очередь ≠ i) then
begin
С[i] = 1;
k = очередь;
if (b [k] = 1) then очередь := i;
goto Li;
end;
C[i] := 0;
for j := 1 step 1 until N do
if ((j ≠ i) and (C[i] = 0)) then goto Li;
Критический интервал i;
очередь := 0;
C[i] := 1;
b[i] := 1;
Oстаток цикла i;
goto Ai;
end;
Если один из процессов с номером i присваивает переменной ’очередь’ свой номер, то никакой другой процесс не сможет выполнить присваивание этой переменной прежде, чем i-тый процесс завершит свой критический интервал.
Для проверки правильности решения проверяем те же три условия.
Синхронизирующие примитивы (семафоры)
Неделимое обращение к общим переменным всегда подразумевает одностороннее движение информации.
Отдельный процесс может либо присвоить новое значение переменной, либо проверить её текущее значение. Однако такая проверка не оставляет следов для других процессов. Вследствие этого, пока процесс желает отреагировать на текущее значение общей переменной, значение этой переменной может быть изменено другими процессами. Таким образом, такая организация связей между процессами не может считаться полностью удовлетворительной.
Для разрешения такой ситуации:
Вводятся специальные целочисленные общие переменные, называемые семафорами;
К набору элементарных действий, из которых состоят процессы, добавляются две новых операции (два новых примитива), называемые p-операцией и v-операцией.
Эти две операции всегда выполняются над семафорами и являются единственным способом обращения к семафорам со стороны одновременно действующих процессов.
В большинстве случаев применяются двоичные семафоры, которые могут принимать значения 0 и 1, но существует и понятие общего семафора, который подразумевает, сто переменная может принимать определенное ограниченное количество целочисленных значений.
Определение v-операции:
v-операция – это операция с одним аргументом, который должен быть семафором. Ее назначение – увеличение значения аргумента на единицу. Это действие рассматривается как неделимая операция.
Integer S;
Процесс 1 :
V(S);
Процесс 2 :
V(S);
В результате значение S увеличится на 1.
Если бы вместо v(S) было S :=S+1 ,то S могло бы увеличиться только на 1, в случае параллельного выполнения процессов. V-операция исключает такую ситуацию даже при одновременном её выполнении обоими процессами.
Определение р-операции:
p-операция – операция с одним аргументом, который должен быть семафором. Ее назначение – уменьшение аргумента на единицу, если только результирующее значение не становится отрицательным.
р-операция представляет собой потенциальную задержку. Если процесс инициирует р-операцию над семафором, который в этот момент равен нулю, то в данном случае р-операция не может завершиться, пока какой-либо другой процесс не выполнит v-операцию над тем же семафором и не присвоит ему значение 1.
Несколько процессов могут одновременно начать р-операцию над одним семафором. Тогда утверждение о том, что завершение р-операции есть неделимое действие, означает, что когда семафор получит значение 1, только одна из начатых р-операций над этим семафором завершится, какая именно – не определено.
Считается, что р и v-операции реализуются на вычислительной машине.
Очевидно, что применение семафоров позволяет несложно записать решение задачи взаимного исключения в общем виде.
begin integer свободно;
свободно := 1;
очередь := 0;
parbegin
процесс 1: begin … end;
процесс 2: begin … end;
. . .
процесс N: begin … end;
parend;
end;
процесс i:
begin
Li: p(свободно);
Критический интервал i;