- •Функции ос по обслуживанию файловой структуры
- •Прикладное программное обеспечение
- •Эволюция ос Первый период (1945 -1955)
- •Второй период (1955 - 1965)
- •Третий период (1965 - 1980)
- •Четвертый период (1980 - настоящее время)
- •3.3. Параметры планирования
- •4.1.Управление процессами и потоками.
- •4.2.Понятия «процесс» и «поток»
- •11. Файловая система. Форматирование диска и создание разделов. Загрузочная запись. Таблица размещения файлов. Директория (каталог, папка, folder), файл (file).
- •Уровни модели osi
- •8.3.2 Свопинг
- •Страничная организация памяти. Виртуальная память.
- •E.2.1. Структура страниц.
- •E.2.2. Формирование адреса при страниvчном преобразовании.
- •Сегментация памяти в защищенном режиме.
- •E.1.1. Дескрипторные таблицы.
- •Глобальная дескрипторная таблица (gdt).
- •Дескрипторная таблица прерываний (idt).
- •Локальная дескрипторная таблица (ldt).
- •E.1.2. Селекторы.
- •E.1.3. Формирование линейного адреса.
- •E.1.4.Формат дескрипторной таблицы.
- •Графическая среда kde
- •Основные функции и компоненты системы unix
- •1.2. Ядро
- •Архитектура unix.
- •Файловая система
- •Семафоры
- •Очереди сообщений
- •Разделяемая память
- •Средства графического интерфейса пользователей
Файловая система
Как мы отмечали в разделе 2.1, понятие файла является одним из наиболее важных для ОС UNIX. Все файлы, с которыми могут манипулировать пользователи, располагаются в файловой системе, представляющей собой дерево, промежуточные вершины которого соответствуют каталогам, и листья - файлам и пустым каталогам. Примерная структура файловой системы ОС UNIX показана на рисунке 2.1. Реально на каждом логическом диске (разделе физического дискового пакета) располагается отдельная иерархия каталогов и файлов. Для получения общего дерева в динамике используется "монтирование" отдельных иерархий к фиксированной корневой файловой системе.
Замечание: в мире ОС UNIX по историческим причинам термин "файловая система" является перегруженным, обозначая одновременно иерархию каталогов и файлов и часть ядра, которая управляет каталогами и файлами. Видимо, было бы правильнее называть иерархию каталогов и файлов архивом файлов, а термин "файловая система" использовать только во втором смысле. Однако, следуя традиции ОС UNIX, мы будем использовать этот термин в двух смыслах, различая значения по контексту.
Каждый каталог и файл файловой системы имеет уникальное полное имя (в ОС UNIX это имя принято называть full pathname - имя, задающее полный путь, поскольку оно действительно задает полный путь от корня файловой системы через цепочку каталогов к соответствующему каталогу или файлу; мы будем использовать термин "полное имя", поскольку для pathname отсутствует благозвучный русский аналог). Каталог, являющийся корнем файловой системы (корневой каталог), в любой файловой системе имеет предопределенное имя "/" (слэш). Полное имя файла, например, /bin/sh означает, что в корневом каталоге должно содержаться имя каталога bin, а в каталоге bin должно содержаться имя файла sh. Коротким или относительным именем файла (relative pathname) называется имя (возможно, составное), задающее путь к файлу от текущего рабочего каталога (существует команда и соответствующий системный вызов, позволяющие установить текущий рабочий каталог).
В каждом каталоге содержатся два специальных имени, имя ".", именующее сам этот каталог, и имя "..", именующее "родительский" каталог данного каталога, т.е. каталог, непосредственно предшествующий данному в иерархии каталогов.
Семафоры
Механизм семафоров, реализованный в ОС UNIX, является обобщением классического механизма семафоров общего вида, предложенного более 25 лет тому назад известным голландским специалистом профессором Дейкстрой. Заметим, что целесообразность введения такого обобщения достаточно сомнительна. Обычно наоборот использовался облегченный вариант семафоров Дейкстры - так называемые двоичные семафоры. Мы не будем здесь углубляться в общую теорию синхронизации на основе семафоров, но заметим, что достаточность в общем случае двоичных семафоров доказана (известен алгоритм реализации семафоров общего вида на основе двоичных). Конечно, аналогичные рассуждения можно было бы применить и к варианту семафоров, примененному в ОС UNIX.
Семафор в ОС UNIX состоит из следующих элементов:
значение семафора;
идентификатор процесса, который хронологически последним работал с семафором;
число процессов, ожидающих увеличения значения семафора;
число процессов, ожидающих нулевого значения семафора.
Для работы с семафорами поддерживаются три системных вызова:
semget для создания и получения доступа к набору семафоров;
semop для манипулирования значениями семафоров (это именно тот системный вызов, который позволяет процессам синхронизоваться на основе использования семафоров);
semctl для выполнения разнообразных управляющих операций над набором семафоров.