
- •1. Понятие ос
- •2. Функции ос
- •3. Классификация ос
- •4. Загрузка программ
- •5. Управление оперативной памятью
- •6. Открытая память
- •7. Алгоритмы динамического управления памятью
- •8. Системы с базовой виртуальной адресацией
- •9. Сегментная и страничная виртуальная память
- •10. Страничный обмен
- •11. Параллельное и псевдопараллельное исполнение (планировщик)
- •12. Методы синхронизации при параллельной работе
- •13. Прерывания, сигналы и семафоры
- •14. Блокировка участков файлов
- •15. Гармонически взаимодействующие последовательные процессы
- •16. Межзадачное взаимодействие
- •17. Средства для гармонического межпроцессного взаимодействия
- •18. Трубы. Линки
- •19. Системы управляемые событиями
- •20. Многопроцессность на однопроцессных компьютерах
- •21. Кооперативная многопроцессность и вытесняющая многопроцессность
- •22. Планировщики с приоритетом
- •23. Монолитные системы и системы с микроядром
- •24. Драйверы внешних устройств и функции драйверов
- •25. Синхронный ввод/вывод в однозадачных и многозадачных системах
- •26. Асинхронный ввод/вывод
- •27. Дисковый кэш и спулинг
- •28. Файловые системы
- •29. Структуры файловых систем
- •30. Устойчивость фс к сбоям
- •31. Безопасность. Идентификация пользователя. Права доступа
- •32. Защита оперативной памяти. Кольца защиты
- •33. Взаимно недоверяющие подсистемы
- •34. Пользовательский интерфейс
- •35. Определение операционной системы
- •37. Структура сетевой ос (одноранговые, с выделенными серверами, для рабочих групп и ос для сетей масштаба предприятия)
- •38. Управление процессами (состояние, контекст и дескриптор процесса)
- •39. Алгоритмы планирования процессов (вытесняющие и невытесняющие)
- •40. Средства синхронизации и взаимодействия процессов. Нити исполнения
- •41. Управление памятью. Типы адресов
- •42. Методы распределения памяти без использования дискового пространства (разделы фиксированные, переменной величины и перемещаемые)
- •43. Методы распределения памяти с использованием дискового пространства (виртуальная память, страничное, сегметное, странично-сегментное распределение)
- •44. Иерархия запоминающих устройств (может быть исключён). Принцип кэширования данных
- •45. Аппаратная поддержка управления памятью и многозадачной среды
- •46. Средства поддержки сегментации памяти
- •47. Управление вводом-выводом. Физическая организация устройств ввода-вывода
- •48. Обработка прерываний. Драйверы устройств
- •49. Управление вводом-выводом. Независимый от устройств слой операционной системы
- •50. Пользовательский слой программного обеспечения
- •51. Фс. Имена файлов. Типы файлов.
- •52. Фс. Логическая и физическая организация файлов
- •53. Современные архитектуры фс (Олифер)
- •54. Фс. Отображаемые в память файлы
- •55. Управление распределёнными ресурсами. Способы адресации
- •56. Базовые примитивы передачи сообщений в распределённых системах
- •57. Синхронизация в распределённых системах. Логические часы. Взаимные исключения. Неделимые транзакции
- •58. Процессы и нити в распределённых системах. Понятие нити. Вопросы реализации нитей.
- •59. Распределённые фс. Интерфейсы файлового сервиса и сервиса каталогов
- •60. Распределённые фс. Семантика разделения файлов. Вопросы разработки структуры фс.
- •61. Распределённые фс. Кэширование. Репликация
- •1. Сквозная запись.
- •62. Основные подходы к реализации взаимодействия в гетерогенных сетях
- •63. Шлюзы. Мультиплексирование стеков протоколов в гетерогенных сетях
- •66. Расширяемость, переносимость, совместимость и безопасность современных ос
- •67. Структура ос: монолитные системы, многоуровневые системы
- •68. Структура ос: модели клиент-сервер и микроядра
- •69. Структура ос: объектно-ориентированный подход
- •70. Структура ос: множественные прикладные среды
25. Синхронный ввод/вывод в однозадачных и многозадачных системах
Самый простой механизм вызова функций драйвера – косвенный вызов соответствующих процедур, составляющих тело драйвера, подобно тому, как это делается в MS DOS и ряде других однозадачных систем.
При синхронном вводе - выводе файла поток запускает операцию ввода/вывода (I/O) и немедленно вводит ждущее состояние до тех пор, пока, запрос ввода-вывода не завершит работу.
В системах семейства Unix драйвер последовательного устройства исполняется в рамках той нити, которая сформировала запрос, хотя и с привилегиями ядра. Ожидая реакции устройства, драйвер переводит процесс в состояние ожидания доступными ему примитивами работы с планировщиком. Доступные прикладным программам функции драйвера исполняются в пользовательском контексте. Обработчик прерывания наоборот работает в контексте прерывания, когда пользовательское адресное пространство не определено. Поэтому, чтобы при обслуживании прерывания можно было получить доступ к пользовательским данным, основная нить драйвера вынуждена копировать их в буфер в адресном пространстве ядра.
Синхронная модель драйвера очень проста в реализации, но имеет существенный недостаток — драйвер нереентерабелен. Обращение двух нитей к одному устройству приведет к непредсказуемым последствиям. Для предотвращения этого вводят в использование семафоры. Семафор имеет очередь ожидающих его процессов, и, таким образом, время обработки предыдущего аналогичного запроса приходящие запросы будут устанавливаться в очередь.
26. Асинхронный ввод/вывод
Поток, выполняющий асинхронный ввод - вывод файла, отправляет запрос на ввод-вывод данных ядру. Если запрос принят ядром, поток продолжает обрабатывать другое задание до тех пор, пока ядро не подаст сигналы потоку, что операция ввода/вывода (I/O) полностью завершилась. Тогда поток прерывает работу со своим текущим заданием и обрабатывает данные от операции ввода/вывода (I/O) по мере необходимости.
Обычно управляется прерываниями.
Асинхронный ввод-вывод реализуется в большинстве мультипрограммных ОС. В случае его отсутствия он может быть реализован путем организации самостоятельного потока ввода-вывода.
В системах семейства Unix драйверы блочных устройств обязательно асинхронные. Кроме того, в современных версиях системы асинхронными драйверами являются драйверы потоковых устройств. Многие другие ОС, в том числе однозадачные, используют исключительно асинхронные драйверы.
Будем рассматривать аппаратуру ввода-вывода как совокупность аппаратных процессоров, работающих параллельно друг с другом и с центральным процессором. На таких процессорах выполняются так называемые внешние процессы (процессы обеспечения управлением аппаратуры ввода-вывода). Внешние процессы посредством аппаратуры ввода-вывода взаимодействуют с «внутренними» (программными) процессами, выполняющимися на центральном процессоре. Это взаимодействие синхронизируется с помощью буферирования.
27. Дисковый кэш и спулинг
Во многих случаях кэширование, или буферизация, при работе с диском может приводить к значительному повышению производительности системы. Примеры:
1) Размещение в памяти структур файловой системы – каталогов, FAT или таблицы инодов.
2) Отложенная запись – позволяет более равномерно распределить загрузку канала.
3) Группировка запросов на запись. Система имеет пул буферов отложенной записи, который и называется дисковым кэшем.
4) Собственно кэширование. После того как драйвер выполнил запрос, буфер не сразу используется повторно, поэтому какое-то время он содержит копию записанных или прочитанных данных. Если за это время произойдет обращение на чтение соответствующей области диска, система может отдать содержимое буфера вместо физического чтения.
5) Опережающее считывание. Предназначено для равномерного распределения загрузки канала, но на практике считанные с опережением блоки часто оказываются ненужными, и поэтому эффективность такого чтения снижается.
6) Сортировка запросов по номеру блока на диске. Должна приводить к уменьшению времени позиционирования головок чтения/записи.
***
Проблемы:
1) При использовании отложенной записи программа не знает, успешно ли завершилась физическая запись.
2) Если в промежутке между запросом и физической записью произойдёт сбой системы, данные будут утеряны.
3) Необходимость выделения памяти под дисковый кэш.
***
Спулинг – метод работы с внешними устройствами ввода/вывода в многозадачной ОС, при которой у задач создаётся иллюзия одновременного доступа к устройству. При этом, однако, задачи работают в режиме offline: выводимые данные накапливаются системой, а затем выводятся на устройство так, чтобы они не смешивались.
Основная задача спулинга – разделение доступа к медленному внешнему устройству. Чаще всего спулинг используется для работы с печатающими устройствами, а для промежуточного хранения данных используется диск.
Классический спулинг реализован в ОС семейства Unix. В этих ОС вывод задания на печать осуществляется командой lpr, копирующей предназначенные для печати данные в каталог/usr/spool/lp. Каждая порция данных помещается в отдельный файл, имена файлов «инкрементно возрастают» и тем самым образуют очередь.
Системный процесс-демон lpd периодически просматривает каталог. Если там что-то появилось, а печатающее устройство свободно, он копирует появившийся файл на устройство. По окончании копирования он удаляет файл.