- •Основы файловой системы unix
- •Типы файлов
- •Структура файловой системы unix
- •Владельцы файлов
- •Права доступа к файлу
- •Дополнительные атрибуты файлов
- •1 Установить обязательное блокирование файлов при выполнении
- •Устройства
- •Процессы unix
- •Vhand диспетчер страничного замещения
- •Создание и управление процессами
- •Системные функции типа exec
- •Системный вызов _exit
- •Взаимодействие процессов посредством каналов
- •Сигналы
- •Обработка ошибок
- •Пользователи системы, Атрибуты пользователя
- •Форматы исполняемых файлов
- •Файлы отображаемые в памяти
- •Метаданные файла
- •Индексные дескрипторы
- •Имена файлов
- •Недостатки и ограничения файловой системы s5fs
- •Файловая система ffs (Fast File System)
- •Каталоги ffs
- •Сравнение процессов может быть произведено с использованием понятия "трасса" порядок и длительность пребывания процесса в допустимых состояниях на интервале существования.
- •Ресурсы, Понятие и классификация
- •Решение №1.
- •Сообщенная задача взаимного исключения
- •Синхронизирующие примитивы
- •V(свободно);
- •Взаимодействие через переменные состояния
- •Пример применения приоритетного правила
- •Проблема тупиков
- •Алгоритм банкира
- •Основными вопросами при решении такой задачи являются:
- •Применение алгоритма банкира
- •Основные направления совершенствования структуры
- •Системы с параллельным выполнением операций. Параллельные процессы.
- •Схемы типа окмд
- •Особенности организации процессоров по принципу окмд (одиночный поток команд – множественный поток данных)
- •Мультипроцессорные системы
- •Транспьютеры
- •Центральный процессор
- •Распределение памяти в транспьютерах
- •Диспетчеризация процессов
- •Ввод / вывод
Сообщенная задача взаимного исключения
begin integer array b, c [0..N];
integer очередь;
for очередь = 1 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[j] = 0)) then goto Li;
Критический интервал i;
очередь := 0;
C[i] := 1;
b[i] := 1;
Oстаток цикла i;
goto Ai;
end;
Даны N процессов, каждый со своим критическим интервалом. Необходимо организовать их функционирование так, чтобы в любой момент самое большее один процесс находился в критическом интервале. Для проверки правильности решения проверяем три условия.
Синхронизирующие примитивы
Неделимое обращение к общей переменной всегда подразумевает одностороннее движение информации. Отдельный процесс может либо присвоить новое значение, либо проверить текущее значение. Однако такая проверка не оставляет следов для других процессов. В следствие этого, в то время как процесс желает отреагировать на текущее значение общей переменной, значение этой переменной может быть изменено другими процессами. То есть такое взаимодействие через общие переменные нельзя считать во всех случаях адекватным. Для разрешения такой ситуации:
-
Вводятся специальные целочисленные общие переменные, называемые семафорами
-
Добавляются к набору действия, из которых состоят процессы, два новых примитива: p-операция и v-операция.
Эти две операции всегда выполняются над семафорами и представляют единственный способ обращения к семафорам со стороны одновременно действующих процессов. Для решения задачи взаимного исключения область значений семафоров 0 и 1 (двоичные семафоры), но существует понятие и общего семафора, при котором он может принимать определенное количество целочисленных значений.
s1 – семафор,
p(s1) или v(s1) – запись операций над семафором.
v-операция – операция с одним аргументом, который должен быть семафором. Ее назначение – увеличение аргумента на единицу. Это действие рассматривается как неделимая операция. Имеется достаточно принципиальное различие между семафорными операциями. Если выполнена семафорная операция v(s1) – получим увеличение на два, так как пока процесс не закончит операцию, программа не выйдет из него.
П1
S1 := S1+1
v(S1)
П2
S1 := S1+1
v(S1)
p-операция – операция с одним аргументом, который должен быть семафором. Ее назначение – уменьшение аргумента на единицу, если только результирующее значение не становится отрицательным. Завершение р-операции, то есть решение о том, что в настоящий момент является подходящим для выполнения уменьшения и последующее уменьшение значения аргумента, рассматривается как неделимая операция.
р-операция определяет потенциальную задержку. Если инициируется р-операция над семафором, который в этот момент равен нулю, то в данном случае р-операция не может завершиться, пока какой-либо другой процесс не выполнит v-операцию над тем же семафором и не присвоит ему значение 1. несколько процессов могут одновременно начать р-операцию над одним семафором. Утверждение о том, что завершение р-операции есть неделимое действие, означает, что когда семафор получит значение 1, только одна из начавшихся р-операций над семафором завершится, какая именно – не определено.
begin integer свободно;
свободно := 1;
очередь := 0;
parbegin
процесс 1: begin … end;
процесс 2: begin … end;
…
процесс N: begin … end;
parend;
end;
процесс i:
begin
Li p(свободно);
Критический интервал i;