- •Раздел 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 ЧПБ, ЧПП, РБ;
ЧПБ:=0; ЧПП:=N; РБ:=1;
parbegin
производитель: begin
n1: производство новой порции;
P(ЧПП);
P(РБ);
добавление порции к буферу;
V(РБ);
V(ЧПБ);
goto n1;
end;
потребитель: begin
n1: P(ЧПБ);
P(РБ);
взятие порции из буфера;
V(РБ);
V(ЧПП);
обработка взятой порции;
goto n2;
end;
parend;
end.
Порядок р-операций и у производителя, и у потребителя имеет значение.
Взаимодействие через переменные состояния
Исходные положения:
Можно определять отдельные процессы;
Процессы могут взаимодействовать друг с другом через общие переменные;
Имеются средства синхронизации процессов.
Замечания:
При взаимодействии процессов могут возникать решения, которые касаются более чем одного процесса, и не всегда очевидно, какое решение должен принять какой-либо из процессов. Если не определён какой-то руководящий принцип (например, критерии эффективности), то с целью определённости нужно установить некоторые ограничения.
Если разрабатываются реальные системы, то требуется убедиться в корректности предлагаемых решений. При параллельном программировании использование проверяющих тестов затруднено, поэтому вопросы проверки правильности решения должны рассматриваться в самых начальных этапах проектирования системы.
Постановка задачи:
Рассматриваются производители, которые выдают порции информации различного размера, размер порции выражается в некоторых единицах. Потребители обрабатывают последовательные порции из буфера и умеют обрабатывать порции, размер которых заранее не определён. Максимальный размер буфера определён в единицах информации, а не в количестве порций, как в предыдущей задаче. Размер буфера - не менее максимального размера порции информации. Так как буфер ограничен, может оказаться, что производитель должен будет ждать того момента, когда он сможет поместить в буфер произведённую порцию. Если имеется более одного производителя и какой-то из них ждет из-за отсутствия достаточного места в буфере, то другие производители могут продолжать работу и достигнуть точки, когда они желают выдать выработанную порцию информации в буфер.
С целью придания определённости решению этой задачи к решению предъявляются следующие требования:
- производитель, предлагающий большую порцию, получает приоритет по отношению к производителю, предлагающему меньшую порцию (когда порции одинаковы - безразлично);
- если какой-то производитель находится в состоянии ожидания потому, что его порцию нельзя разместить в буфере, то никакой другой производитель не сможет добавить свою порцию в буфер до момента появления дополнительного свободного места потому, что если его порция больше, то её некуда разместить, а если меньше, то он имеет более низкий приоритет.
Дано: N производителей; M потребителей; RB размер буфера.
begin