- •Кафедра программного обеспечения информационных технологий
- •ВВЕДЕНИЕ
- •ТЕМА 1
- •1.1. Разработка программ в ОС UNIX
- •1.1.1. Стандарты ОС UNIX
- •1.1.2. Отличительные черты ОС UNIX
- •1.1.3. Основы архитектуры операционной системы UNIX
- •1.1.4. Ядро системы
- •1.1.5. Пользователи системы, атрибуты пользователя
- •1.1.6. Системные вызовы и функции стандартных библиотек
- •1.1.7. Описание программы, переменные окружения
- •1.1.8. Запуск и завершение программы
- •1.1.9. Обработка ошибок
- •1.1.12. Формат ELF
- •1.1.13. Формат COFF
- •ТЕМА 2
- •2.1. Файловая система ОС UNIX
- •2.1.1. Введение
- •2.1.3. Структура файловой системы UNIX
- •2.1.4. Владельцы файлов
- •2.1.5. Права доступа к файлу
- •2.1.7. Устройства
- •2.1.8. Системные вызовы и библиотечные функции
- •2.1.9. Файлы отображаемые в памяти
- •2.1.10. Каталоги
- •2.1.11. Метаданные файлов
- •2.1.12. Базовая файловая система UNIX S5FS
- •2.1.13. Файловая система FFS (Fast File System)
- •ТЕМА 3
- •3.1. Процессы в ОС UNIX
- •3.1.1. Место процессов в ОС UNIX
- •3.1.2. Типы процессов
- •3.1.3. Создание процесса
- •3.1.4. Атрибуты процесса
- •3.1.5. Системные функции типа exec
- •3.1.6. Системные функции типа wait
- •3.1.7. Системный вызов _exit
- •3.1.8. Обработка ошибок. Коды ошибок
- •ТЕМА 4
- •4.1. Взаимодействие между процессами
- •4.1.1. Взаимодействие процессов через файлы
- •4.1.2. Взаимодействие процессов через каналы
- •4.1.3. Взаимодействие процессов с использованием сигналов
- •4.1.4. Ограничения для процессов
- •4.1.5. Дополнительные средства межпроцессного взаимодействия
- •4.1.6. Понятие потока в ОС UNIX
- •СОКРАЩЕНИЯ
- •СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
ТЕМА 2
2.1. Файловая система ОС UNIX
2.1.1.Введение
Сточки зрения пользователей в UNIX есть два типа объектов: файлы и процессы. Все данные хранятся в виде файлов, а когда запускается программа, ядро загружает соответствующий исполняемый файл, создаёт образ процесса и передаёт ему управление. Во время работы процессы могут взаимодействовать с файлами.
Файлы в операционной системе играют одну из важнейших ролей, т.к. в них хранятся не только данные, но файлы также определяют и привилегии пользователей путём введения прав доступа к файлам. При обращении пользователя к файлу сравниваются права доступа, установленные для файла с правами конкретного пользователя. Файлы также обеспечивают доступ к периферийным устройствам машины.
Файлы организованы в древовидную файловую систему. Каждый файл имеет имя, определяющее его положение в дереве файловой системы. Корнем дерева является корневой каталог с именем “/”, имена всех остальных файлов содержат путь: /home/student/proga.cpp
Имя файла атрибут файловой системы, а не набора некоторых данных на диске. Каждый файл имеет связанные с ним метаданные, которые хранятся в индексных дескрипторах. Индексный дескриптор содержит все характеристики файла, позволяющие операционной системе выполнять операции, затребованные прикладной задачей. В метаданных содержатся и указатели на дисковые области, в которых хранятся данные.
Имя файла в файловой системе указатель на его метаданные. Сами метаданные не содержат указателя на имя файла. Полное имя файла не содержит указателя на физический носитель, где находится файл.
2.1.2.Типы файлов
ВUNIX существуют следующие типы файлов:
1.Обычный файл
2.Каталог
3.Специальный файл устройства
4.Файл FIFO или именованный канал
5.Связь (link)
6.Сокет (socket)
26
Обычный файл: наиболее общий тип файлов, содержащий данные в некотором формате. Для операционной системы такие файлы представляют собой просто последовательность байтов. Интерпретация содержимого определяется прикладной программой, обрабатывающей файлы.
Каталог: файл, содержащий имена, находящихся в нём файлов, а также указатели на дополнительную информацию (индексные дескрипторы), позволяющую операционной системе производить операции над этими файлами. Каталоги определяют положение файла в дереве файловой системы, т.к. сам файл не содержит информации о своём местонахождении. По существу каталог представляет собой таблицу, где каждая запись соответствует одному файлу.
Индексные деск- |
Имена файлов |
рипторы |
|
1753 |
. |
2036 |
. . |
751 |
P1.txt |
854 |
P2.c |
Рис. 2.1. Таблица каталога
Специальный файл устройства: обеспечивает доступ у физическому устройству. В UNIX различаются символьные и блочные файлы устройств. Символьные устройства применяются для не буферизированного обмена данными с устройствами (клавиатура, экран терминала), а блочные файлы для обмена данными в виде пакетов фиксированной длины (дисковые накопители). К некоторым устройствам доступ может быть как блочный, так и символьный. Доступ к устройствам, как и к файлам, осуществляется путём открытия, чтения и записи в специальные файлы устройств.
Файл FIFO или именованный канал: специальный файл для связи между процессами - на запись и чтение и позволяет связать по данным несколько процессов. Поддержка файла FIFO появилась в UNIX, начиная с Release-5.
Связь (link). Индексные дескрипторы не содержать ни имени файла, ни указателя на него. Такой подход позволяет одному файлу иметь несколько имён в файловой системе. Имена жёстко связаны с индексными дескрипторами, и, соответственно, с данными файла, а сам файл существует независимо от того, как его называют, в файловой системе. Такая связь имени файла с его данными
-жёсткая связь.
Спомощью команды
ln P1.dat /home/katalog2/Name2
будет создана жёсткая связь.
Жёсткие связи абсолютно равноправны. Изменения, вносимые в файл, проявятся во всех файлах.
Жёсткая связь является естественной формой связи имени файла с его ин-
27
дексным дескриптором и не принадлежит к особому типу файлов.
/home/katalog1 |
|
|
|
|
|
/home/katalog2 |
|||||||
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
534 |
. |
||||
534 |
|
. |
|
|
|
|
|||||||
734 |
|
. . |
|
|
|
|
|
734 |
. . |
||||
1374 |
P1.dat |
|
|
|
|
|
|
|
|||||
|
|
|
|
|
1374 |
Name2 |
|||||||
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
5374 |
Sym_na |
|
|
|
|
|
|
|
|
|
|
|
|
|
me |
Метаданные |
|
|
|
1374 |
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|||
(inode)файла |
|
|
|
|
|
|
|
5374 |
|
|
|
||
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Данные фай- |
|
|
|
|
|
Данные файла |
|||
|
|
|
|
|
/../katalog1/P1.dat |
||||||||
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 2.2. Структура каталогов
Особым типом файла является символическая связь, позволяющая косвенно адресовать файл, который, в свою очередь, ссылается на другой файл. В результате последний файл в такой цепочке адресуется символической связью косвенно. В файле, который является символической связью, содержится только имя целевого файла. Создать символическую связь можно с помощью команды:
ln -s Sym_name /home/skatalog1/P1.dat
Теперь по команде cat Sym_name на экран будет выведено содержимое файла
P1.dat.
Таким образом, при обращении к файлу, который является символической связью, действие переадресуется тому файлу, на который указывает связь.
Сокет (socket): специальный файл, предназначенный для взаимодействия между процессами. Интерфейс сокетов часто используется для доступа к сети TCP/IP, в некоторых реализациях с его помощью осуществляется межпроцессорное взаимодействие.
28
|
|
|
|
|
|
|
|
|
|
|
|
|
/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
home |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
Katalog1 |
|
|
|
|
|
|
Katalog2 |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
P1.dat |
|
|
|
|
|
|
Name2 |
|
|
|
Sym_name |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Жесткая связь
Символическая связь
Рис. 2.3. Каталоги с жесткой и символической связями между файлами
2.1.3. Структура файловой системы UNIX
Корневой каталог основа файловой системы UNIX. Все остальные файлы и каталоги располагаются в рамках структуры, порождённой корневым каталогом, независимо от их физического местонахождения.
В /bin находятся наиболее часто употребимые команды и утилиты систе-
мы.
В/dev находятся специальные файлы устройств, являющиеся интерфейсом доступа к периферийным устройствам. Этот каталог может содержать несколько подкаталогов, группирующих несколько файлов устройств одного типа.
В/etc находятся системные конфигурационные файлы и утилиты админи-
стрирования. Самые важные скрипты инициализации системы, которые хранятся в каталогах rcN, где N номер, определяющий уровень выполнения системы.
В/default находятся параметры, задающиеся по умолчанию для многих команд.
В/lib находятся библиотечные файлы C и других языков программирова-
ния.
Каталог /lost+found каталог потерянных файлов. При аппаратных сбоях и сбоях операционной системы могут появляться безымянные файлы. Программы проверки и восстановления помещают сюда неповреждённые безымянные файлы под числовыми именами.
/
29