- •1. Операционные системы
- •2. Функциональные компоненты локальной ос
- •3. Назначение и функции сетевой ос
- •4. Функциональные компоненты сетевой ос
- •5. Коммуникационные средства
- •6. Классификация ос
- •8. Архитектура ос
- •9. Монолитные и многоярусные ядра
- •10. Функциональные компоненты Linux
- •11. Структура ядра
- •12. Функции слоёв ядра
- •13. Вспомогательные модули
- •14. Микроядерные системы
- •15. Объектная модель функционирования
- •16. Состав исполнительной системы WinNt
- •17. Совместимость
- •18. Множественные прикладные среды. Способы реализации
- •19. Интерфейсы ос
- •20. Файловая система
- •21. Логическая организация файла
- •22. Физическая организация файла
- •23. Общая модель фс
- •Непрерывное
- •2) Цепочечная
- •3) Фиксированный
- •Битовые карты (таблицы) – каждому блоку ставится в соответствие свой бит (1 – занят, 0 – свободен)
- •Цепочки сводных свободных порций
- •Список свободных блоков
- •Индексированный
- •24. Функции фс
- •25. Фс unix-подобных ос
- •26. Структура фс
- •27. Структура фс базовых unix-подобных ос
- •28. Архитектура виртуальной фс
- •29. Последовательность действий при монтировании
- •30. Файловые дескрипторы и трансляция имён
- •31. Физическая организация fat
- •32. Физическая организация ntfs
- •33. Управление процессами
- •34. Контекст и дескриптор
- •35. Структура контекста процесса
- •36. Планирование и диспетчеризация
- •37. Алгоритмы планирования
- •38. Планирование и диспетчеризация в unix системах
- •39. Управление процессами в unix-подобных системах
- •40. Атрибуты, инфраструктура процесса
- •41. Создание процессов
- •42. Этап exec()
- •43. Межпроцессные взаимодействия (ipc)
- •44. Каналы (pipe)
- •45. Fifo
- •46. Пространство имен
- •47. Сообщения
- •48. Семафоры
- •49. Разделяемая память
- •50. Сигналы
- •51. Последовательность событий
- •52. Функции управления процессами
- •53. Сообщения в микроядерных ос.
- •54. Процессы и потоки в WinNt
- •55. Базовая структура процесса, создание процесса в WinNt
- •56. Основные различия управления процессами в различных средах
- •57. Состав потока в WinNt и контекст потока
- •58. Передача сообщений с помощью lpc (локальный вызов процедур)
- •59. Распределенные системы. Удаленный вызов процедур. Rpc (Remote Procedure Call)
- •60. Система ввода-вывода в Win nt
- •61. Реализация свв в Windows nt
- •62. Унифицированная модель драйвера
- •63. Формат пакета irp
- •64. Структура драйвера
- •65. Редиректор и сервер. Встроенные сетевые компоненты
26. Структура фс
bin – системные команды и утилиты общего назначения;
dev – специальные файлы устройств. Группируются по типам устройств (дисплеи, диски …);
etc – информационный каталог. Системные конфигурационные файлы, утилиты, скрипты инициализации системы;
lib – библиотечные файлы /lib/lib* * - типы библиотек;
lost+found – "потерянные" файлы - те, структура и содержимое которых являются правильными, однако для которых отсутствует имя в каком-либо из каталогов;
mnt – каталог результатов монтировок гибких дисков, дисководов;
home - домашний каталог пользователя;
proc -- специальные файлы процессов;
root -- домашний каталог root'а;
sbin -- системные бинарные файлы, необходимые для запуска системы;
usr - каталоги и обычные файлы, содержащие информацию, привлекаемую при решении задач пользователя;
usr/bin – исполнительные утилиты, ориентированные на пользователя;
usr/include – заголовочные файлы;
sys -- средства для изменения конфигурации системы;
tmp - общий каталог для хранения временных файлов;
var – хранение временных файлов различных сервисных подсистем – системы печати, электронной почты и т. д.
Владельцы файлов – пользователь и группа. Права владельца – гибкие. Права доступа для 3-х классов: владелец (u), группа (g), все остальные (o). Типы прав: чтение (r), запись (w), исполнение (x). Изменение прав: добавить (+), отнять (-), присвоить (=).
Утилита изменения прав доступа – chmod. Например, chmod u+r file. Смена владельца файла – chown.
При выполнении некоторой утилиты, она может потребовать права на каталог, если мы переходим в другой каталог cd – нужно иметь право на исполнение. Для того, чтобы вывести все файлы каталога (ls), достаточно права чтения каталога. Для выяснения размера: чтение + исполнение, если script – права на исполнение и для каталога, и для файла + чтение для файла (script – сценарий). Выполнить программу – исполнение для каталога и файла. Удалить файл из каталога – запись и исполнение для каталога
27. Структура фс базовых unix-подобных ос
Классический вариант: S5FS
-
Суперблок
Массив индексных дескрипторов ilist
Блоки хранения данных
В суперблоке хранятся:
stype – тип ФС
s_fsize – размер ФС
s_isize – размер массива индексных дескрипторов
s_tfree – число свободных блоков
s_tinode – число свободных индекс блоков Inode
s_fmod – флаги модификации
s_fronly – флаг режима
размер логического блока
размер в логических блоках (512, 1024, …)
список используемых/свободных inode
список адресов свободных блоков
Inode (индексные дескрипторы) – метаданные файла. Хранят информацию о файле, необходимую для обработки данных.
Массив индексных дескрипторов – содержит информацию о файле необходимую для обработки (при открытии файла ядро переписывает структуру данных в ОЗУ и размещает в таблице in_core inode (в ОЗУ)) dinode -> in_core inode (в ОЗУ)
Структура dinode: включает тип файла, доп атрибуты
di_mode – тип файла, доп атрибуты
di_nlinks – число ссылок на файл
di_uid, di_gid – id пользователя и группы
di_size – размер файла в байтах
di_atime, di_ctime – время последнего доступа/модификации
di_mtime – время последней модификации/доступа
di_addr[13] - адрес
di_inod – указатель наличия флага SUID. Чтобы прочитать файл др. польз-ля, не имея права чтения.
IFREG, IFDIR, IFBLK/IFCHR – константы, с помощью которых задаётся тип файла.
di_addr[13] – массив адресов дисковых блоков хранящихся данных.
di_addr[0] - di_addr[9] – непосредственная адресация по номеру блока (10 блоков)
di_addr[10] – косвенная адресация – указатель на блок (блок блоков)
di_addr[11] – двукратная косвенная адресация и т.д.
Система FFS = ufs
-
Суперблок
Массив свободных блоков и inode
ilist
Блоки хранения данных
Суперблок
…
Отличия от S5FS: предусмотрено логическое деление дискового разделения на 1 или несколько групп цилиндров (последовательно расположенных цилиндров).
На группу цилиндров отводится фиксированное число inode. Управляющая информация размешается с различным смещением от начала групп цилиндров (на одной пластине информация о всех группах). Смещение = один сектор относительно предыдущей группы. Для соседних групп информация размещается на различных пластинах диска. Это повышение надежности т.к. потеря одного сектора, цилиндра или пластины не приводит к потере всех копий суперблока.
Производительность ФС зависит от:
- размеров блока информации
- алгоритмов размещения свободных блоков на носителях и inode
Чем больше блок, тем лучше для производительности (меньше обращений к диску), но при этом нерациональное использование дискового пространства (нужна постоянная дефрагментация). Существуют алгоритмы, использующие вес блока или его части (дефрагментация).
Max размер фрагмента – 0,5 размера блока. Min – min единица адресации диска (= сектор)
Алгоритмы размешения зависят от ФС. Правила выбора алгоритма для повышения производительности:
- файл размещается в блоках хранения данных, принадлежащих одной группе цилиндров там, где его метаданные (это снижает tобращения);
- все файлы каталога находятся в одной группе цилиндров (это повышает vпослед. доступа);
- следующий подкаталог находится в группе цилиндров, отличной от родительского каталога (для равномерного распределения по диску);
- последующие блоки размещаются исходя из оптимизации физического доступа к диску (с некоторым смещением друг относительно друга в зависимости от скорости перемещения головки винчестера).
КПД ФС нормальное функционирование при > 10 % свободного места на диске
Запись каталога – структура данных.
Структура каталога:
d_ino - номер inode (индекс в массиве ilist)
d_reclen - длина записи
d_namlen - длина имени
d_name[] - имя файла
Здесь имя файла дополняется нулями до четырёх байтов. При удалении имени запись не удаляется, а присоединяется к предыдущей записи. В предыдущей записи меняется reclen (на длину удаляемого файла). Удаление первой записи (d_ino = NULL) -> не ограничивается длина имени.