- •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. Достоинства и недостатки различных подходов.
Использование сокетов tcp/ip при большом количестве соединений
При использовании большого количества подключений неэффективно создавать по одному потоку на каждое подключение по сокету, т.к. значительное время потоки будут простаивать в ожидании появления данных. Для более рационального использования времени процессора используются подходы:
Использование функций, позволяющих опрашивать несколько сокетов одновременно (такие как poll() и select()). Таким функциям передается набор сокетов, и их вызов ждет появления указанного события на одном из переданных сокетов или истечения тайм-аута.
Использование RT-сигналов. В программе при помощи функции fcntl() устанавливается получение некоторым потоком сигнала при приходе данных на указанный сокет. Поток в цикле вызывает функцию sigwaitinfo() для синхронного извлечения сигналов из очереди и определения сокета, связанного с сигналом. С одним потоком можно связать сигналы для нескольких сокетов.
12. Ввод-вывод и обработка прерываний. Первичная и отложенная обработка прерываний, необходимость такого разделения. Реализация отложенной обработки (раз на примере Виндоуз было, давайте на примере Линукс, см. например LDD).
32 Вопрос. Ввод-вывод и обработка прерываний.
Операция ввода-вывода может выполняться тремя способами.
При помощи программного ввода-вывода, при котором центральный процессор вводит или выводит каждый байт или слово, находясь в цикле ожидания готовности устройства ввода-вывода.
Второй способ представляет собой управляемый прерываниями ввод-вывод, при котором центральный процессор начинает передачу ввода-вывода для символа или слова, после чего переключается на другой процесс, пока прерывание от устройства не сообщит ему об окончании операции ввода-вывода.
Третий способ заключается в использовании прямого доступа к памяти (DMA), при котором отдельная микросхема управляет переносом целого блока данных, и инициирует прерывание только после окончании операции переноса блока.
Ввод-вывод можно разбить на четыре уровня иерархии:
процедуры обработки прерываний,
драйверы устройств (управляют деталями работы устройств и предоставляют однородные интерфейсы к остальной части операционной системы.)
независимое от устройств программное обеспечение ввода-вывода и библиотеки ввода-вывода (занимается буферизацией и сообщением об ошибках.)
спулеры, работающие в пространстве пользователя.
Прерывания. На рис. 1.10, а показан трехшаговый процесс ввода-вывода.
На первом шаге драйвер передает команду контроллеру, записывая информацию в регистры устройства. Затем контроллер запускает устройство.
Когда контроллер заканчивает чтение или запись того количества байтов, которое ему было указано передать, он посылает сигнал микросхеме контроллера прерываний, используя определенные провода шины, - это шаг 2.
На шаге 3, если контроллер прерываний готов к приему прерывания (а этого может и не быть, если он занят прерыванием более высокого приоритета), то он подает сигнал на определенный контакт процессора, таким образом информируя центральный процессор. 4) На шаге 4 контроллер прерываний выставляет номер устройства на шину так, чтобы центральный процессор мог прочесть его и узнать, какое устройство только что завершило свою работу (ведь в одно и то же время могут работать несколько устройств).
Рис. 1.10. Действия, выполняемые при запуске устройства ввода-вывода и получении прерывания (а); обработка прерывания включает в себя получение прерывания, переход к обработчику прерываний и возврат к программе пользователя (б)
Как только центральный процессор решил принять прерывание, содержимое счетчика команд (PC) и слова состояния процессора (PSW) помещается в текущий стек, а процессор переключается в режим работы ядра. Номер устройства может использоваться как индекс части памяти, служащий для поиска адреса обработчика прерываний данного устройства. Эта часть памяти называется вектором прерываний. Когда обработчик прерываний (это часть драйвера устройства, пославшего прерывание) начинает свою работу, он удаляет расположенные в стеке счетчик команд и слово состояния процессора, сохраняет их и запрашивает устройство, чтобы получить информацию о его состоянии. После того как обработка прерывания целиком завершена, управление возвращается к работавшей до этого программе пользователя, к той команде, выполнение которой еще не было закон- закончено. Описанные шаги показаны на рис. 1.10, б.
Когда происходит прерывание, начинает работу обработчик прерываний. По окончании необходимой работы он может разблокировать драйвер, запустивший его. Драйвер разблокируется обработчиком прерываний.