- •Раздел 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
Основы файловой системы ос unix
С точки зрения пользователей, в UNIX есть два типа объектов: файлы и процессы.
Все данные хранятся в виде файлов, а когда запускается программа, ядро загружает соответствующий исполняемый файл, создаёт образ процесса и передаёт ему управление. Во время работы процессы могут взаимодействовать с файлами.
Файлы в операционной системе играют одну из важнейших ролей, т.к. в них хранятся не только данные, но файлы также определяют и привилегии пользователей путём введения прав доступа к файлам. При обращении пользователя к файлу сравниваются права доступа, установленные для файла с правами конкретного пользователя. Файлы также обеспечивают доступ к периферийным устройствам машины. Причём доступ к различным устройствам с точки зрения программирования выглядит одинаково.
Файлы организованы в древовидную файловую систему. Каждый файл имеет имя, определяющее его положение в дереве файловой системы. Корнем дерева является корневой каталог с именем “/”, имена всех остальных файлов содержат путь, представляющий собой список каталогов, которые нужно пройти до конкретного имени: /home/student/proga.cpp. Полное имя файла начинается с наклонной черты и не содержит указателя устройства (в отличие от MS-DOS или Windows).
Имя файла – это атрибут файловой системы, а не набора некоторых данных на носителе, на котором он хранится. Каждый файл имеет связанные с ним т.н. метаданные, которые хранятся в индексных дескрипторах. Индексный дескриптор содержит все характеристики файла, позволяющие операционной системе выполнять по отношению к файлу операции, затребованные прикладной задачей. В метаданных содержатся и указатели на дисковые области, в которых хранятся данные.
Имя файла в файловой системе – это, фактически, указатель на его метаданные. Сами метаданные не содержат указателя на имя файла.
Типы файлов
В UNIX существуют следующие типы файлов, различающиеся по функциональному значению и действиям операционной системы при выполнении тех или иных операций над файлами:
Обычный файл;
Каталог;
Специальный файл устройства;
Файл FIFO или именованный канал;
Связь (link);
Сокет (socket).
Рассмотрим эти типы файлов подробнее:
Обычный файл: наиболее общий тип файлов, содержащий данные в некотором формате. Для операционной системы такие файлы представляют собой просто последовательность байтов. Вся интерпретация содержимого файла производится прикладной программой, обрабатывающей конкретный файл. К таким файлам относятся текстовые файлы, бинарные данные, исполняемые программы и другие типы файлов.
Каталог - файл, содержащий имена находящихся в нём файлов и номера индексных дескрипторов или, другими словами, указатели на дополнительную информацию (метаданные), позволяющую операционной системе производить операции над этими файлами. Каталоги определяют положение файла в дереве файловой системы.
Любая задача, имеющая право на чтение каталога, может прочитать его содержимое, но только ядро имеет право на запись в каталог.
Индексные дескрипторы |
Имена файлов |
1753 |
. |
2036 |
. . |
751 |
P1.txt |
854 |
P2.c |
Специальный файл устройства обеспечивает доступ к физическому устройству. В UNIX различаются символьные и блочные файлы устройств. Доступ к устройствам осуществляется путём открытия, чтения и записи в специальные файлы устройств. Символьные файлы устройств применяются для небуферизированного обмена данными с устройствами (клавиатура, экран терминала), а блочные файлы позволяют производить обмен данными в виде пакетов фиксированной длины (блоков).
Файл FIFO или именованный канал – это специальный файл для связи между процессами. Поддержка файла FIFO появилась, начиная с System-5.
По умолчанию файл FIFO имеет два дескриптора.
Связь (link).
/home/katalog1 /home/katalog2
534 |
. |
734 |
. . |
1374 |
P1.dat |
М
1374 5374
(inode)файла
534 |
. |
734 |
. . |
1374 |
Name2 |
5374 |
Sym_name |
Данные файла
/../katalog1/P1.dat
Данные файла
/
home
Katalog1 Katalog2
P1.dat Name2 Sym_name
Жесткая связь
Символическая связь
Метаданные не содержат ни имени файла, ни указателя на это имя. Такой подход позволяет одному файлу иметь несколько имён в файловой системе. Имена жёстко связаны с метаданными, и, соответственно, с данными файла, а сам файл существует независимо от того, как его называют в файловой системе. Такая связь имени файла с его данными называется жёсткой связью. С помощью команды ln можно создавать жесткие связи.
> ln p1.dat /home/katalog2/name2
Жёсткая связь является естественной формой связи имени файла с его индексным дескриптором и не принадлежит к особому типу файлов.
Специальным файлом является символическая связь, позволяющая косвенно адресовать файл. Символическая связь адресует файл, который в свою очередь ссылается на другой файл. Этот файл содержит только имя целевого файла.
Символическая связь создаётся командой ln с параметром –s.
> ln –s p1.dat /home/katalog2/sym_name
Символическая связь является особым типом файла и операционная система работает с таким файлом не так, как с обычным.
#include<unistd.h>
int link(const char *original_path, const char *new_path);
int symlink(const char *realname, const char *symname);
. . .
link(“/home/katalog1/P1.dat”, ”/home/katalog2/name2”);
Сокет (socket) - специальный файл, предназначенный для взаимодействия между процессами. Интерфейс сокетов часто используется для доступа к сети TCP/IP.
В некоторых реализациях с его помощью осуществляется межпроцессорное взаимодействие, на базе которого работают многие системные серверы.