- •1. Определение и функции ос. Классификация многозадачных ос. Принципиальные отличия требований к системам реального времени и к обычными системами разделения времени.
- •1 Вопрос. Определение и функции ос.
- •2 Вопрос. Три подхода к определению ос:
- •3 Вопрос. Классификация многозадачных ос
- •2. Ядро ос. Подходы к определению ядра ос (классический и по Василенко). Причины неоднозначности. Режим ядра и режим пользователя. Системный вызов и его реализация (на примере любой ос/архитектуры).
- •4 Вопрос. Подходы к определению ядра ос
- •7 Вопрос. Понятие процесса. Адресное пространство процесса
- •8 Вопрос. Контекст процесса. Регистровый контекст
- •9 Вопрос. Системный контекст
- •10 Вопрос. Контекст процесса.
- •Создание и завершение процесса
- •11 Вопрос. Создание и завершение процесса
- •12 Вопрос. Граф состояний процесса. Причины перехода между состояниями.
- •Все возможные причины блокировки процесса
- •4. Вытесняющая многозадачность. Цели алгоритма планирования и их противоречивость. Основные алгоритмы планирования и их модификации.
- •13 Вопрос. Вытесняющая многозадачность
- •14 Вопрос. Задачи алгоритмов планирования
- •15 Вопрос. Планирование в системах пакетной обработки данных
- •17 Вопрос. Наименьшее оставшееся время выполнения. Трехуровневое планирование
- •18 Вопрос. Планирование в интерактивных системах
- •19 Вопрос. Несколько очередей. "Самый короткий процесс - следующий"
- •20 Вопрос. Гарантированное планирование. Лотерейное планирование. Справедливое планирование
- •21 Вопрос. Планирование в системах реального времени
- •22 Вопрос. Иерархия классов в Linux: rt, cfs, idle, stats.
- •23 Вопрос. Реальные алгоритмы планирования
- •24 Вопрос. Проблема балансировки нагрузки в smp-системах
- •Область применения нитей и процессов.
- •Реализация потоков в ядре
- •7. Синхронизация процессов и нитей (в т.Ч. Ядерных). Основные примитивы синхронизации. Различия семафоров и спин-блокировки. Ограничения использования семафоров в ядре (сюда же can_sleep()).
- •25 Вопрос. Примитивы межпроцессного взаимодействия
- •Спин-блокировки:
- •26 Вопрос. Семафоры
- •27 Вопрос. Мьютексы
- •[Крищенко: метода sys_linux]
- •28 Вопрос. Виртуальная память
- •Задачи, решаемые виртуальной памятью:
- •Вопросы из лекций:
- •29 Вопрос. Страничная организация виртуальной памяти
- •30 Вопрос. Сегментная и сегментно-страничная организации виртуальной памяти
- •31 Вопрос. Преобразование виртуального адреса в физический при страничном преобразовании
- •32 Вопрос. Tlb и его назначение. Моменты сброса tlb.
- •Адресное пространство процесса
- •Разделы адресного пространства процесса (32 разряда)
- •Выделение памяти процессу и освобождение им памяти. Связь функций выделения памятью стандартной библиотеки и системных вызовов, необходимость менеджера памяти режима пользователя
- •11. Виды межпроцессного взаимодействия и их классификация. Виды ipc в стандартах posix. Использование сокетов tcp/ip при большом количестве соединений Методы межпроцессного взаимодействия.
- •Виды ipc в стандартах posix
- •Использование сокетов tcp/ip при большом количестве соединений
- •32 Вопрос. Ввод-вывод и обработка прерываний.
- •33 Вопрос. Первичная и отложенная обработка прерываний, необходимость такого разделения. Реализация отложенной обработки.
- •13. Планировщик ввода-вывода для дисковых устройств. Алгоритмы планирования ввода-вывода для дискового устройства. Буферизация запросов.
- •34 Вопрос. Структура системы ввода-вывода
- •35 Вопрос. Алгоритмы планирования
- •36 Вопрос. Механизм ввода-вывода
- •36. Вопрос. Дескрипторы очереди запросов. Дескриптор запроса. Процесс планирования ввода-вывода
- •Процесс планирования ввода-вывода
- •14. Подсистема виртуальной фс в ядре ос. Кеширование. Ввод-вывод и прямой доступ к памяти на примере дискового устройства. Необходимость в уровне буферов (на примере Линукс)
- •Основные структуры
- •Уровень виртуальной файловой системы
- •Менеджер ввода-вывода
- •Стратегии организации ввода-вывода:
- •Ещё заметка про уровень буфферов
- •37 Вопрос. Основные структуры файловой системы.
- •Задачи файловой системы (from wiki)
- •38 Вопрос. Различные подходы к организации структур фс
- •39 Вопрос. Неразрывные файлы
- •40 Вопрос. Связанные списки. Связанные списки с индексацией
- •Связанные списки с индексацией
- •41 Вопрос. Индексные узлы
- •42 Вопрос. Реализация простой фс (предлагаю на примере minix file system).
- •43 Вопрос. Битовые карты, индексные узлы в minix 3
- •Индексные узлы
- •44 Вопрос. Журналируемые фс.
- •45 Вопрос. Физическая организация fat
- •46 Вопрос. Физическая организация s5 и ufs
- •47 Вопрос. Поиск адреса файла по его символьному имени
- •49 Вопрос. Физическая организация ntfs
- •50 Вопрос. Первый отрезок mft
- •51 Вопрос. Структура файлов ntfs
- •52 Вопрос. Виды файлов в ntfs
- •53 Вопрос. Каталоги ntfs
- •54 Вопрос. Файловые операции
- •55 Вопрос. Открытие файла
- •56 Вопрос. Обмен данными с файлом
- •57 Вопрос. Блокировки файлов
- •58 Вопрос. Стандартные файлы ввода и вывода, перенаправление вывода
- •59 Вопрос. Контроль доступа к файлам
- •60 Вопрос. Механизм контроля доступа
- •61 Вопрос. Организация контроля доступа в ос unix
- •62 Вопрос. Организация контроля доступа в ос Windows nt
- •63 Вопрос. Разрешения на доступ к каталогам и файлам
- •64 Вопрос. Встроенные группы пользователей и их права
- •65 Вопрос. Выводы
- •16. Сетевая подсистема ос и её функции. Причины включения tcp/ip в ядро ос. Реализация сетевых файловых систем.
- •Реализация сетевых файловых систем
- •Таненбаум Файловая система nfs
- •17. Идея микроядра. Недостатки и достоинства концепции микроядра (см. Qnx, Hurd, Minix, использование Mach в Mac os X). Идея микроядра
- •Достоинства:
- •Недостатки:
- •Более подробно о микроядре на примерах:
- •18. Идея ос на базе jit-vm. Недостатки, достоинства, ограничения концепции (смотреть, например, Singularity)
- •20. Существующие стандарты на интерфейсы ос. Группа стандартов Posix. Достоинства и недостатки реализации нестандартных интерфейсов (на примере WinApi). Реализация интерфейсов "чужеродных" ос.
- •Основные идеи стандарта posix
- •Api операционных систем. Проблемы, связанные с многообразием api (статья Wikipedia: Интерфейс программирования приложений)
- •21. Графическая подсистема и её место в ос на примере x11/Cocoa/WinApi. Достоинства и недостатки различных подходов.
42 Вопрос. Реализация простой фс (предлагаю на примере minix file system).
Ф айловая система MINIX 3 представляет собой самостоятельную логическую сущность с индексными узлами, каталогами и блоками данных. Она может храниться на любом блочном устройстве, например на дискете или жестком диске (или разделе жесткого диска). В любом случае, файловая система имеет одну и ту же структуру. Рисунок 5.29 иллюстрирует эту структуру на примере дискеты или небольшого жесткого диска с блоком размером 1 Кбайт и индексными узлами в количестве 64. В этом простом случае битовая карта зон занимает 1 Кбайт. Она позволяет отслеживать не более 8192 8-килобайтных зон (блоков), а, следовательно, размер файловой системы составляет не более 8 Мбайт. Даже для гибкого диска 64 индексных узла делают число файлов весьма ограниченным, поэтому под индексные узлы обычно отводят не 4 блока, как на рисунке, а больше.
На практике 8 блоков было бы лучше, однако в этом случае наша диаграмма утратила бы наглядность. Разумеется, для современного жесткого диска и индексные узлы, и битовые карты зон занимают значительно больше, чем один блок.
Относительный размер различных компонентов (рис. 5.29) варьируется от одной файловой системы к другой и зависит от ее размера, максимального числа файлов и других параметров. Тем не менее наличие всех компонентов и их порядок всегда неизменны.
Любая файловая система начинается с загрузочного блока. Этот блок содержит исполняемый код. Размер загрузочного блока всегда составляет 1024 байта (два сектора диска), хотя в других случаях в MINIX 3 могут использоваться блоки большего размера (что и имеет место по умолчанию). При включении компьютера его аппаратное обеспечение считывает содержимое загрузочного блока в память и исполняет его. Код в загрузочном блоке инициирует процесс загрузки самой операционной системы. После того как система загружена, загрузочный блок больше не используется. Для загрузки системы подходит не каждый дисковый накопитель, но ради единообразия структуры на каждом блочном устройстве резервируется загрузочный блок. Худшее, к чему может привести такая стратегия, — это потеря одного блока. Чтобы аппаратное обеспечение не пыталось загрузиться с устройства, не предназначенного для загрузки, в известное заранее место загрузочного блока записывается сигнатура {«магическое» число) в том и только том случае, если блок содержит исполняемый код. Аппаратура (а в действительности, код BIOS) откажется загружаться с устройства, если загрузочный блок не имеет такой сигнатуры. Таким образом, случайный «мусор» в качестве программы не запустится. Суперблок содержит информацию, описывающую структуру файловой системы. Его размер, как и размер загрузочного б лока, составляет 1024 байта независимо от размера блоков, используемых в остальной части файловой системы. Структура суперблока оказана на рис. 5.30.
Основное назначение суперблока — сообщить файловой системе, насколько велики отдельные ее части. Зная размер блока и число индексных узлов, несложно подсчитать размер битовой карты индексных узлов и количество блоков индексных узлов. Например, если блок имеет размер 1 Кбайт, каждый блок битовой карты будет содержать 1 Кбайт (8 Кбит), то есть может быть использован для отслеживания состояния 8192 индексных узлов. (Строго говоря, первый блок битовой карты описывает только 8191 индексный узел, так как 0-го индексного узла нет, но бит в битовой карте для него все равно выделяется.) Если всего имеется 10 000 индексных узлов, то потребуется два блока для хранения битовой карты. Так как каждый индексный узел занимает 64 байта, блок размером 1 Кбайт может содержать до 16 индексных узлов. При наличии 64 используемых индексных узлов для их хранения потребуется 4 дисковых блока. Битовая карта зон содержит только зоны, занимаемые данными (то есть в нее не попадают блоки, хранящие битовые карты и индексные узлы), причем первая зона данных соответствует биту 1 в битовой карте. Как и в случае с картой индексных узлов, нулевой бит не используется, а значит, первый блок битовой карты описывает 8191 зон, а последующие — 8192 каждый. Если вы посмотрите на битовые карты только что отформатированного диска, вы увидите, что в обеих битовых картах (зон и индексных узлов) установлено два бита. Первый из них соответствует несуществующей 0-й зоне или индексному узлу. Второй соответствует индексному узлу и зоне корневого каталога устройства, которая создается при создании файловой системы. Информация, хранящаяся в суперблоке, избыточна, так как иногда она требуется в одной форме, а иногда в другой. Так как на размещение суперблока отводится 1 Кбайт места, имеет смысл хранить информацию во всех необходимых представлениях, а не преобразовывать ее в ходе работы. Например, номер первой зоны данных на диске можно вычислить, исходя из размера блока, размера зоны, числа индексных узлов и числа зон, но удобнее просто хранить это значение в суперблоке. Оставшаяся часть суперблока все равно не используется, потому выделение в нем одного лишнего слова ничего не стоит.