- •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. Структура ос: множественные прикладные среды
39. Алгоритмы планирования процессов (вытесняющие и невытесняющие)
Планирование процессов включает в себя решение следующих задач:
1) определение момента времени для смены выполняемого процесса;
2) выбор процесса на выполнение из очереди готовых процессов;
3) переключение контекстов "старого" и "нового" процессов.
Два основных типа процедур планирования процессов:
1) ВЫТЕСНЯЮЩИЕ
Способ, при котором решение о переключении процессора с выполнения одного процесса на другой принимается планировщиком операционной системы, а не самой активной задачей.
2) НЕВЫТЕСНЯЮЩИЕ
Это способ планирования процессов, при котором активный процесс выполняется до тех пор, пока он сам не отдаст управление планировщику операционной системы для того, чтобы тот выбрал из очереди другой, готовый к выполнению процесс.
***
При вытесняющей многозадачности механизм планирования задач целиком сосредоточен в ОС, и программист пишет свое приложение, не заботясь о том, что оно будет выполняться параллельно с другими задачами. При этом ОС определяет момент снятия с выполнения активной задачи, запоминает ее контекст, выбирает из очереди готовых задач следующую и запускает ее на выполнение, загружая ее контекст.
При невытесняющей многозадачности ОС лишь формирует очереди задач и выбирает в соответствии с некоторым алгоритмом (например, с учетом приоритетов) следующую задачу на выполнение, но после разрешения текущей задачи.
Для пользователей это означает, что управление системой теряется на произвольный период времени, который определяется приложением (а не пользователем). Поэтому разработчикам приходится разделять работу приложений на небольшие фрагменты, которые после выполнения передают управление ОС, что затрудняет разработку программ.
Однако распределение функций планировщика между системой и приложениями – не всегда недостаток, а при определенных условиях может быть и преимуществом, потому что дает возможность разработчику приложений самому проектировать алгоритм планирования, наиболее подходящий для данного фиксированного набора задач.
Однако почти во всех современных ОС, ориентированных на высокопроизводительное выполнение задач, реализована вытесняющая многозадачность.
40. Средства синхронизации и взаимодействия процессов. Нити исполнения
Процессам часто нужно взаимодействовать друг с другом. При этом возникает проблема синхронизации процессов, которая может решаться приостановкой и активизацией процессов, организацией очередей, блокированием и освобождением ресурсов.
Важным понятием синхронизации процессов является понятие "критическая секция" программы – это часть программы, в которой осуществляется доступ к разделяемым данным. Необходимо обеспечить, чтобы в каждый момент в критической секции, связанной с каким-либо ресурсом, находился максимум один процесс. Этот прием называют взаимным исключением. Способы обеспечения:
1) Разрешение процессу, находящемуся в критической секции, запрет всех прерываний.
2) Использование блокирующих переменных.
Минус: пока один процесс находится в критической секции, другой процесс, которому требуется тот же ресурс, будет бесполезно тратить процессорное время, опрашивая блокирующую переменную.
3) Использование семафоров.
Две операции, P & V.
– V(S): переменная S увеличивается на 1 одним неделимым действием; к S нет доступа другим процессам во время выполнения этой операции.
– P(S): уменьшение S на 1, если это возможно. Если S=0, то невозможно уменьшить S и остаться в области целых неотрицательных значений, в этом случае процесс, вызывающий P-операцию, ждет, пока это уменьшение станет возможным. Успешная проверка и уменьшение также является неделимой операцией.
***
Нити исполнения.
В традиционных ОС понятие "нить" тождественно понятию "процесс". В действительности часто бывает желательно иметь несколько нитей, разделяющих единое адресное пространство, но выполняющихся квазипараллельно, благодаря чему нити становятся подобными процессам (за исключением разделяемого адресного пространства).
Нити, относящиеся к одному процессу, не настолько изолированы друг от друга, как процессы в традиционной многозадачной системе, между ними легко организовать тесное взаимодействие.
Задача, оформленная в виде нескольких нитей в рамках одного процесса, может быть выполнена быстрее за счет псевдопараллельного (или параллельного в мультипроцессорной системе) выполнения ее отдельных частей.
Нити имеют собственные:
– программный счетчик,
– стек,
– регистры,
– нити-потомки,
– состояние.
Нити разделяют:
– адресное пространство,
– глобальные переменные,
– открытые файлы,
– таймеры,
– семафоры,
– статистическую информацию.
Многонитевая обработка повышает эффективность работы системы по сравнению с многозадачной обработкой. Пользователь может выполнять две задачи, запускать две программы, но каждая из них будет блокироваться при запуске долго выполняющейся команды. При использовании нитей программы будут доступны.