- •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. Достоинства и недостатки различных подходов.
Достоинства:
Высокая степень переносимости обусловлена тем, что весь машинно-зависимый код изолирован в микроядре, поэтому для переноса системы на новый процессор требуется меньше изменений и все они логически сгруппированы вместе.
Технология микроядер является основой построения множественных прикладных сред, которые обеспечивают совместимость программ, написанных для разных ОС. Абстрагируя интерфейсы прикладных программ от расположенных ниже операционных систем, микроядра позволяют гарантировать, что вложения в прикладные программы не пропадут в течение нескольких лет, даже если будут сменяться операционные системы и процессоры.
Расширяемость также является одним из важных требований к современным операционным системам. Является ли операционная система маленькой, как DOS, или большой, как UNIX, для нее неизбежно настанет необходимость приобрести свойства, не заложенные в ее конструкцию. Увеличивающаяся сложность монолитных операционных систем делала трудным, если вообще возможным, внесение изменений в ОС с гарантией надежности ее последующей работы. Ограниченный набор четко определенных интерфейсов микроядра открывает путь к упорядоченному росту и эволюции ОС.
Обычно операционная система выполняется только в режиме ядра, а прикладные программы - только в режиме пользователя, за исключением тех случаев, когда они обращаются к ядру за выполнением системных функций. В отличие от обычных систем, система построенная на микроядре, выполняет свои серверные подсистемы в режиме пользователя, как обычные прикладные программы. Такая структура позволяет изменять и добавлять серверы, не влияя на целостность микроядра.
Иногда имеется потребность и в сокращении возможностей ОС. На Windows NT или UNIX перешло бы большее число пользователей, если бы для этих операционных систем не требовалось 16 Мб оперативной памяти и 70 Мб и более пространства на жестком диске. Микроядро не обязательно подразумевает небольшую систему. Надстроенные службы, типа файловой системы и системы управления окнами, добавят к ней немало. Конечно же, не всем нужна безопасность класса C2 или распределенные вычисления. Если важные, но предназначенные для определенных потребителей свойства можно исключать из состава системы, то базовый продукт подойдет более широкому кругу пользователей.
Использование модели клиент-сервер повышает надежность. Каждый сервер выполняется в виде отдельного процесса в своей собственной области памяти, и таким образом защищен от других процессов. Более того, поскольку серверы выполняются в пространстве пользователя, они не имеют непосредственного доступа к аппаратуре и не могут модифицировать память, в которой хранится управляющая программа. И если отдельный сервер может потерпеть крах, то он может быть перезапущен без останова или повреждения остальной части ОС.
Эта модель хорошо подходит для распределенных вычислений, так как отдельные серверы могут работать на разных процессорах мультипроцессорного компьютера или даже на разных компьютерах. При получении от процесса сообщения микроядро может обработать его самостоятельно или переслать другому процессу. Так как микроядру все равно, пришло ли сообщение от локального или удаленного процесса, подобная схема передачи сообщений является элегантным базисом для RPC.
Еще плюс: из интервью Таненбаума: Если вы посмотрите на системы, в которых жизненно необходима непрерывная работа - например, авиационные системы, вентиляторы в госпиталях - системы, сбой в работе которых может привести к чьей-либо смерти, вы увидите, что в них используются микроядра. Для тех людей, которые делают самолеты и другое оборудование с подобными системами действительно необходимо, чтобы оно работало без сбоев. Ведь если что-то пойдет не так, потребуется перезагрузка, а это очень не хорошая вещь для самолета, находящегося в воздухе. Существует огромное количество военных, промышленных и медицинских систем, которые базируются на микроядрах, из-за того что покупатели пришли к выводу, что они более надежны. Микроядра широко используются во встраиваемых системах в высоко надежных изделиях, в которых работают практически безотказно.