- •1. Предназначение операционных систем. Основные понятия ос. (Лекция 1)
- •2. Системные вызовы. (Лекция 1)
- •3. Аппаратные особенности выполнения программ. (Лекция 1)
- •4. Аппаратные прерывания. Выполнение операций ввода/вывода. (Лекция 1)
- •5. Обработка прерываний в Windows. (Лекция 1)
- •6. Процессы и потоки (определения). Отличия методов klt и ult. (Лекция 2)
- •7. Состояния потока (модели с двумя и с пятью состояниями). (Лекция 2)
- •8. Планирование процессов (потоков). (Лекция 2)
- •9. Состояние потоков в Windows. (Лекция 3)
- •10. Уровни приоритета, квант потока в Windows. (Лекция 3)
- •11. Сценарии планирования потоков в Windows. (Лекция 3)
- •12. Динамическое управление приоритетом потоков в Windows. (Лекция 3)
- •13. Проблема переключения контекста. Виртуальная память процесса в Windows. (Лекция 3)
- •14. Проблема разделяемых ресурсов. Требования к реализации механизма взаимных исключений. (Лекция 4)
- •15. Взаимное исключение с активным ожиданием. Алгоритмы переменной-замка, строгого чередования, флагов готовности, Петерсона. (Лекция 4)
- •16. Взаимное искл. С активным ожиданием. Алгоритм Петерсона. Недост. Алгоритмов с активным ожиданием. (Лекция 4)
- •17. Решение задачи о производителях и потребителях с помощью примитивов (функций ядра) блокирования и запуска процессов. (Лекция 4)
- •18. Семафоры и мьютексы. (Лекция 5)
- •19. Применение семафоров и мьютексов в задаче о производителях и потребителях. (Лекция 5)
- •20. Передача данных как метод синхронизации. (Лекция 5)
- •2 1. Применение сообщений в задаче о производителях и потребителях. (Лекция 5)
- •22. Проблема взаимоблокировки, траектории ресурсов, граф распределения. Стратегии устранения взаимоблокировок. (л6)
- •23. Алгоритм поиска взаимоблокировок. (Лекция 6)
- •24. Алгоритм предотвращения взаимоблокировок. (Лекция 6)
- •25. Восстановление при взаимной блокировке. Исключение условий появления взаимоблокировок. (Лекция 6)
- •26. Проблемы управления оперативной памятью. Физическая и логическая адресация. (Лекция 7)
- •27. Сегментная логическая адресация. (Лекция 7)
- •28. Страничная логическая адресация. (Лекция 7)
- •29. Распределение физической памяти. (Лекция 7)
- •30. Страничная логическая адресация. Виртуальная память. (Лекция 7)
- •31. Управление памятью: Стратегии виртуальной памяти. Замещение страниц. (Лекция 7)
- •32. Управление памятью: Управление резидентным множеством. (Лекция 7)
- •33. Принципы организации ввода-вывода. Компоненты ядра Windows, относящиеся к вводу-выводу. (Лекция 8)
- •34. Функции базовой подсистемы и интерфейс драйверов. (Лекция 8)
- •35. Буферизация ввода-вывода. (Лекция 8)
- •36. Система ввода-вывода Windows. (Лекция 8)
- •37. Типы драйверов. Запрос к одноуровневому и многоуровневому драйверу. (Лекция 9)
- •38. Системные механизмы dpc и apc. (Лекция 9)
- •39. Объекты ввода-вывода. Связи между объектами "файл", "устройство" и "драйвер". (Лекция 9)
- •40. Дерево устройств, узлы устройств. (Лекция 9)
- •41. Стек драйверов и объектов ввода-вывода (на примере устройства "джойстик")
- •42. Файлы и каталоги. Жесткие и символьные ссылки. Общие сведения о размещении файловой системы на диске. (Лек 10)
- •43. Реализация файла (непрерывные файлы, связные списки, I-узел). Методы учета свободных блоков.. (Лекция 10)
- •44. Основы резервного копирования (основные режимы резервного копирования). (Лекция 10)
- •45. Основы технологии raid. (Лекция 10)
- •46. Дисковые массивы raid0, raid1, raid10. (Лекция 10)
- •47. Дисковые массивы raid3, raid5. (Лекция 10)
- •48. Общая дисковая структура ntfs. (Лекция 11)
- •49. Запись mft файловой системы ntfs. Атрибуты. (Лекция 11)
- •50. Структура атрибутов данных и индексов в ntfs. (Лекция 11)
- •51. Разреженные и сжатые файлы ntfs. (Лекция 11)
- •52. Проблемы надежности и производительности файловых систем. Метод опережающего протоколирования. (Лекция 11)
- •53. Журнал lfs (структура, типы записей) для протоколирования работы ntfs. (Лекция 11)
- •54. Восстановление ntfs. Повтор и отмена транзакций. (Лекция 11)
- •55. Локальный и удаленный драйверы файловой системы Windows. (Лекция 12)
- •56. Преобразование пути в обращение к драйверу файловой системы в Windows. Объекты «устройство» тома и файловой системы, их связь. (Лекция 12)
- •5 7. Компоненты операций ввода-вывода файловой системы Windows. (Лекция 12)
- •58. Обзор диспетчера кэша Windows. (Лекция 12)
- •59. Внешняя память в Windows. Базовый жесткий диск. (Лекция 12)
- •60. Динамические диски в Windows. (Лекция 12)
- •61. Драйверы дисков, объекты дисков, иерархия драйверов в Windows. (Лекция 12)
- •62. Присвоение имен устройствам, управление дисками в Windows. (Лекция 12)
- •64. Сетевые компоненты Windows. (Лекция 13)
- •65. Именованные каналы, почтовые ящики, cifs в Windows. (Лекция 13)
- •66. Сетевые api Winsock и rpc в Windows. (Лекция 13)
- •67. Поддержка сетей в Windows: стандарты tdi, ndis. (Лекция 13)
- •68. Участник системы безопасности, проверка подлинности и авторизация, структура идентификатора безопасности в Windows. (Лекция 14)
- •69. Маркер доступа и его формирование в Windows. (Лекция 14)
- •Составляющие маркера доступа:
- •70. Дескриптор безопасности ресурса, состав ace, наследование доступов в Windows. (Лекция 14)
- •71. Доступ к ресурсу с использованием маркера в Windows. (Лекция 14)
- •72. Разрешения в дескрипторах безопасности Windows. (Лекция 14)
- •73. Права пользователя, взаимодействие прав и разрешений в Windows. (Лекция 14)
- •74. Группы безопасности и их роль, механизм управления правами и разрешениями в Windows. (Лекция 14)
34. Функции базовой подсистемы и интерфейс драйверов. (Лекция 8)
Базовая подсистема ввода-вывода служит посредником между процессами вычислительной системы и набором драйверов. Системные вызовы для выполнения операций ввода-вывода трансформируются ею в вызовы функций необходимого драйвера устройства. Однако обязанности базовой подсистемы не сводятся к выполнению только действий трансляции общего системного вызова в обращение к частной функции драйвера. Базовая подсистема предоставляет вычислительной системе такие услуги, как поддержка блокирующихся, неблокирующихся и асинхронных системных вызовов, буферизация и кэширование входных и выходных данных, осуществление spooling'a и монопольного захвата внешних устройств, обработка ошибок и прерываний, возникающих при операциях ввода-вывода, планирование последовательности запросов на выполнение этих операций.
Блокирующиеся системные вызовы. Применение такого вызова приводит к блокировке инициировавшего его процесса, т. е. процесс переводится ОС из состояния исполнение в состояние ожидание. Завершив выполнение всех операций ввода-вывода, предписанных системным вызовом, ОС переводит процесс из состояния ожидание в состояние готовность. После того как процесс будет снова выбран для исполнения, в нем произойдет окончательный возврат из системного вызова. Типичный случай - когда процессу необходимо получить от устройства строго определенное количество данных, без которых он не может выполнять работу далее.
Неблокирующиеся системные вызовы. Процесс, применивший неблокирующийся вызов, не переводится в состояние ожидание вообще. Системный вызов возвращается немедленно, выполнив предписанные ему операции ввода-вывода полностью, частично или не выполнив совсем, в зависимости от текущей ситуации (состояния устройства, наличия данных и т. д.). Типичный случай - периодическая проверка на поступление информации с клавиатуры при выполнении трудоемких расчетов.
Процесс, использовавший асинхронный системный вызов, никогда в нем не блокируется. Системный вызов инициирует выполнение необходимых операций i/o и немедленно возвращается, после чего процесс продолжает свою регулярную деятельность. Об окончании завершения операции i/o ОС впоследствии информирует процесс изменением значений некоторых переменных, передачей ему сигнала или сообщения или каким-либо иным способом. Неблокирующийся системный вызов для выполнения операции read вернется немедленно, но может прочитать запрошенное количество байтов, меньшее количество или вообще ничего. Асинхронный системный вызов для этой операции также вернется немедленно, но требуемое количество байтов рано или поздно будет прочитано в полном объеме.
Функции базовой подсистемы
- Планирование последовательности запросов к устройствам
Преобразование вызова функций в обращение к необходимым драйверам
Обработка результатов работы драйверов и передача информации между ними
Поддержка синхронных и асинхронных вызовов
- Буферизация и кэширование входных и выходных данных
- Монопольный захват устройств
- Накопление запросов к устройствам (spooling)
Синхронный вызов – вызов с блокировкой вызывающего процесса до возврата данных от устройства
Асинхронный вызов – вызов без блокировки вызывающего процесса, завершающийся до возврата данных от устройства
Буферизация – временное сохранение данных обмена вне процесса пользователя. См. 35 вопрос.
Кэширование (caching) – хранение в быстрой памяти синхронизируемой копии содержимого более медленной памяти/устройства.
Буфер часто содержит единственный набор данных, существующий в системе, в то время как кэш по определению содержит копию данных, существующих где-нибудь еще. Например, буфер, используемый базовой подсистемой для копирования данных из пользовательского пространства процесса при выводе на диск, может в свою очередь применяться как кэш для этих данных, если операции модификации и повторного чтения данного блока выполняются достаточно часто.
Функции буферизации и кэширования не обязательно должны быть локализованы в базовой подсистеме ввода-вывода. Они могут быть частично реализованы в драйверах и даже в контроллерах устройств, скрытно по отношению к базовой подсистеме.
Spooling – механизм накопления заданий на вывод в буферных областях (ОЗУ, диск), позволяющий процессу-источнику запроса завершать ввод-вывод до его выполнения.
Блочно-ориентированные устройства – сохраняют информацию блоками и выполняют поблочную передачу (диски, сетевые карты, видеокарты).
Поточно-ориентированные (символьные) устройства – выполняют передачу потока байт (клавиатуры, терминалы, принтеры, порты, указывающие устройства, звуковые карты, видеокамеры и т.п.).