Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Контрольная работа [вариант 4] / Контрольная работа по СПО.doc
Скачиваний:
29
Добавлен:
02.05.2014
Размер:
213.5 Кб
Скачать

1.3. Файловая система ос unix.

В ОС UNIX вся информация размещается в файлах. Файлы организованы в файловую систему.

В ОС UNIX файл - это любая информация, такая как письмо, отчет доклад, программа и т.д., которую вы храните. Файл имеет несколько частей: имя, содержание и индексный дескриптор inode (information node). В индексном дескрипторе хранится служебная и системная информация, такая как длина файла, место хранения содержания файла на диске и т.д.

Существует четыре основных типа файлов: обычный файл (regular), каталог (directory), специальный (special) и символическая связь (symbolic link).

Обычный файл содержит тексты заметок, программ или числа. Как правило, такие файлы вы создаете редактором (например, vi) или текстовым процессором. Обычные файлы могут быть исполняемыми. Один тип исполняемых файлов - это shell программа, содержащая командные строки подобные тем, что вы вводите в ответ на приглашение shell. Другой тип выполняемого файла - это откомпилированная программа, которая содержит команды, переведенные с языка программирования высокого уровня (например, C) на машинный язык. Большинство команд ОС UNIX - это откомпилированные программы.

Каталог организует или группирует вместе родственные файлы. Каталоги содержат имена своих файлов и индексные дескрипторы в таблице информации о файлах. Каждая запись в таблице является информацией о файле, такой как владелец файла, тип файла (каталог, обычный, специальный), размер файла, права доступа (чтение, запись, выполнение) и т.д. Каталог, находящийся на один уровень ниже другого каталога в файловой системе, называется подкаталогом.

Специальные файлы - это файлы устройств, таких как терминалы, диски, принтеры, ленточные устройства. Системный администратор обычно создает новые специальные файлы, когда в систему добавляется новое оборудование. Специальный файл связан с устройством.

Символическая связь - это файл, содержащий инструкции, которые указывают на другой файл. Символические связи могут связывать файлы в разных файловых системах. Они также помогают сохранять более старые имена каталогов совместно с более новыми. Например, в ранних версиях ОС UNIX каталог news был организован в каталоге usr. Сейчас каталог news символически связан с каталогом news, находящемся в каталоге var.

В отличие от других языков программирования в ОС UNIX не требуется объявлять тип и резервировать место для файла перед его использованием. Нет также основанных на имени файла ограничений на его содержание.

ФАЙЛОВАЯ СИСТЕМА ОС UNIX

  • Иерархическая

  • Перевернутое дерево

  • Начинается в корневом каталоге с именем /

1.4. Запрограммировать схему "клиенты – официант", используя семафоры. Распространить схему на случай нескольких официантов, причем запрос на услугу может выполняться любым из них. Предусмотреть возможность появления клиента, который должен обслуживаться немедленно (т.е. предусмотреть два уровня приоритетов).

Для программирования такого взаимодействия будут использованы три семафорные переменные start, client, oficiant и счетчики процессов- официантов -of и процессов – клиентов -cl.Семафорstartобеспечивает взаимное исключение при доступе к счетчикамofиcl.Семафорclient обеспечивает взаимное исключение процессов-клиентов, а семафорoficiant- процессов- официантов.

Вначале описываются общие переменные процессов. var start =1, client =1, oficiant =1, murex = 1:semaphore; /* Все семафоры инициализируются значением 1 */

of, cl: integer; of, cl:=0; . . .

Client:

{ P(start);     cl: = cl + l;/* пришел очередной процесс-писатель*/   ifcl=1thenP(client);

/* Первый пришедший процесс-клиент останавливает старт новых процессов-официантов */

V(start);     if of ≠ O then P(oficiant);

/* Процессы-клиенты должны ждать завершения стартовавших процессов-официантов */

P(mutex) .../* осуществляется запись */V(mutex)

P(start);cl: = cl - 1;/* процесс-клиент завершился*/     ifcl=0 then V(client);

/* последний процесс-клиент завершился, семафор clientоткрыт для процессов-официантов*/

V(start); }

Oficiant:

{     L : if cl ≠ 0 then P(client);

/* если работают процессы-клиенты, то надо ждать их завершения */

P(start);     if cl ≠ 0 then (V(start); go to L;);     of: = of + l;      if of = 1 then P(oficiant); V(start);     ... производится чтение ... P(start);     of: = of - 1;     if of = 0 then V(oficiant); V(start); }