- •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. Достоинства и недостатки различных подходов.
Ещё заметка про уровень буфферов
Ниже уровня файловой системы находится кэш буферов, предоставляющий общий набор функций к уровню файловой системы (независимый от конкретной файловой системы). Этот уровень кэширования оптимизирует доступ к физическим устройствам за счет краткосрочного хранения данных (или упреждающего чтения, обеспечивающего готовность данных к тому моменту, когда они понадобятся)...
15. Файловая система. Основные структуры файловой системы (суперблок и далее везде). Решаемые ФС задачи. Различные подходы к организации структур ФС. Битовые маски и списки блоков и их использование. Реализация простой ФС (предлагаю на примере MINIX file system). Журналируемые ФС.
А вообще Крищенко сказал, что можно только про minix рассказать, поэтому minix немного поподробнее почитайте. http://iu7-world.ru/index.php?topic=1439.msg9434#msg9434
Не знаю, надо ли рассказывать про организацию дискового пространства, типа как выделяются блок и т.д., но в конце это есть.
37 Вопрос. Основные структуры файловой системы.
Ф айлы могут быть структурированы несколькими способами.
Н еструктурированная последовательность байтов. ОС не интересуется содержимым файла, она видит только байты. Значения этим байтам присваивается программами пользовательского уровня. Это обеспечивает максимальную гибкость. Пользовательские программы могут помещать в них все что угодно и именовать любым удобным для них способом.
Файл представляет последовательность записей фиксированной длины, каждая со своей внутренней структурой. Операция чтения возвращает одну запись, а операция записи обновляет или добавляет 1 запись.
Ф айл представляет собой дерево записей, не обязательно одной и той же длины. Каждая запись содержит ключевое поле в фиксированной позиции. Дерево упорядочено по ключевому полю с целью быстрого поиска по заданному ключу. В животном примере Таненбаума можно запросить у системы запись с ключом КУРИЦА, не беспокоясь о точном положение записи в файле. Основной файловой операцией здесь является не получение следующей записи, а получение записи с указанным значение ключа. При добавление новой записи ОС, а не юзер должна решать , куда ее поместить. Подобные ФС характерны для больших mainframe.
Задачи файловой системы (from wiki)
Основные функции любой файловой системы нацелены на решение следующих задач:
именование файлов;
программный интерфейс работы с файлами для приложений;
отображения логической модели файловой системы на физическую организацию хранилища данных;
устойчивость файловой системы к сбоям питания, ошибкам аппаратных и программных средств;
содержание параметров файла необходимых для правильного его взаимодействия с другими объектами системы (ядро, приложения и пр.)
слежение за блоками на диске и за свободными блоками
выделять и освобождать пространство для файлов
В многопользовательских системах появляется еще одна задача: защита файлов одного пользователя от несанкционированного доступа другого пользователя.
38 Вопрос. Различные подходы к организации структур фс
Как правило, файловые системы хранятся на дисках. Большинство дисков можно разбить на разделы, каждый из которых имеет независимую файловую систему. Сектор 0 диска называется главной загрузочной записью (Master Boot Record, MBR) и используется для загрузки компьютера. В конце главной загрузочной записи находится таблица разделов, содержащая начальные и конечные адреса всех разделов. Один из разделов таблицы может быть помечен как активный.
Системы, совместимые с персональными компьютерами, могут иметь не более четырех главных разделов, поскольку между главной загрузочной записью и границей первого 512-байтового сектора есть место под массив, включающий лишь 4 элемента. Некоторые операционные системы позволяют выделять в таблице разделов один расширенный раздел, указывающий на связанный список логических разделов. Такая структура позволяет иметь неограниченное количество дополнительных разделов. BIOS не может запустить операционную систему с логического раздела, поэтому начальную загрузку требуется проводить с главного раздела, чтобы загрузить код, управляющий логическими разделами.
В MINIX 3 применяется альтернативный подход к расширенным разделам. Раздел может содержать таблицу подразделов. Преимущество этого подхода заключается в том, что таблица подразделов имеет ту же структуру, что и главная таблица разделов, а, следовательно, обеими таблицами может управлять один и тот же код. Потенциально можно выделить собственные подразделы под корневое устройство, подкачку, двоичные системные файлы и пользовательские файлы.
В этом случае проблемы в одном подразделе не затронут другой, а новую версию операционной системы можно будет установить, изменив содержимое лишь некоторых, а не всех подразделов.
Помимо неизменного загрузочного блока, расположенного в начале раздела, остальная структура дискового раздела может меняться в зависимости от файловой системы. UNIX-подобная файловая система содержит некоторые элементы, представленные на рис. 5.6. Первый из них, суперблок, включает все базовые параметры файловой системы и считывается в память при загрузке компьютера или первом использовании файловой системы.
Далее представлена информация о свободных блоках в файловой системе. Затем могут следовать индексные узлы — массив структур данных, каждая из которых соответствует файлу, описывает его и задает расположение его блоков. После этого может быть задан корневой каталог, выступающий в качестве вершины дерева файловой системы.
Вероятно, наиболее важным моментом в реализации механизма хранения файлов является учет соответствия блоков диска файлам. Для определения того, какой блок какому файлу принадлежит, в различных операционных системах применяются различные методы. Некоторые из них рассмотрены в данном разделе.