- •Раздел 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
Integer array желание[1:n], сп[1:n];
Integer чпб, бб, рб, чсеб, I;
for i:=1 step 1 until N do begin
желание[i]:=0;
СП[i]:=0;
end;
ЧПБ:=0; ЧСЕБ:=RB; ББ:=0; РБ:=1;
parbegin
производитель n: begin integer разм_п;
n: производство новой порции и установка её размера;
P(РБ);
if ((ББ=0) and (ЧСЕБ ≥ разм_п)) then
ЧСЕБ:=ЧСЕБ-разм_п
else
begin
ББ:=ББ+1;
желание[n]:=разм_п;
V(РБ);
P(СП[n]);
P(РБ);
end;
добавление порции к буферу;
V(РБ);
V(ЧПБ);
goto n;
end;
потребитель m: begin
Integer разм_п, n, max, nmax;
m: P(ЧПБ);
P(РБ);
взятие порции из буфера и установка разм_п;
ЧСЕБ:=ЧСЕБ+разм_п;
проверка:
if (ББ>0) then
begin
max:=0;
for n:=1 step 1 until N do
if (max<желание[n]) then
begin
max:=желание[n];
nmax:=n;
end
if (max ≤ ЧСЕБ) then
begin
ЧСЕБ:=ЧСЕБ-max;
желание[nmax]:=0;
ББ:=ББ-1;
V(СП[nmax]);
goto проверка;
end;
end;
V(РБ);
обработка взятой порции;
goto m;
end;
Для организации взаимодействия процессов введены следующие переменные состояния:
- для каждого производителя “желание”, определяющая число единиц буфера, необходимых для размещения порции, которая в текущий момент не может быть добавлена к буферу. Если для процесса-производителя эта переменная равна нулю, то производитель не имеет неудовлетворённого требования на добавление порции;
- для каждого производителя вводится двоичный семафор СП (семафор производителя);
- для буфера вводится двоичный семафор РБ (работа с буфером), предназначенный для взаимного исключения при работе с буфером;
- семафор ЧПБ (число порций в буфере) определяет число порций, действительно занесённых в буфер и ещё не замеченных потребителем;
- целочисленная переменная ББ (блокировка буфера), значение которой равно числу положительных (>0) элементов массива ‘желание’, то есть определяет, сколько производителей имеют желание добавить порцию в буфер.
Как только одна из переменных ‘желание’ станет положительной, никакие добавления к буферу производиться не могут до появления свободного места в буфере и передачи уведомления буфером о том, что это место появилось.
В качестве механизма сигнализации потребителям о появлении новой порции в буфере, применяется общий семафор ЧПБ. Этот семафор определяет число порций, а не единиц информации, так как для потребителя не имеет значения размер порции.
Таким образом, из области взаимодействия мы рассмотрели:
- задачу взаимного исключения (решение с помощью переменных и с помощью семафорных операций: семафорная операция V (инкрементация семафора) и операция Р (декрементация семафора и ожидание его увеличения, если семафор равен нулю));
- задачи «производитель-потребитель» (взаимодействие процессов через буфер обмена).