- •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. Структура ос: множественные прикладные среды
13. Прерывания, сигналы и семафоры
1) Прерывания
Прерывание – сигнал, сообщающий процессору о наступлении какого-либо события. При этом выполнение текущей последовательности команд приостанавливается, и управление передаётся обработчику прерывания, который реагирует на событие и обслуживает его, после чего возвращает управление в прерванный код.
Запросы на прерывания могут возникать
– внутри самой ЭВМ
запросы при возникновении в ЭВМ таких событий, как появление ошибки в работе ее аппаратуры, переполнение разрядной сетки, попытка деления на 0, выход из установленной для данной программы области памяти, затребование периферийным устройством операции ввода-вывода, завершение операции ввода-вывода периферийным устройством или возникновение при этой операции особой ситуации и др.
– во внешней среде ЭВМ
могут возникать от других ЭВМ, от аварийных и некоторых других датчиков технологического процесса и т. п.
Адреса подпрограмм обслуживания прерываний находятся в специальной таблице и называются векторами прерывания.
При наличии нескольких источников запросов прерывания должен быть установлен определенный порядок в обслуживании поступающих запросов.
Вектор прерывания содержит всю необходимую информацию для перехода к прерывающей программе, в том числе ее начальный адрес. Векторы прерывания обычно находятся в специально выделенных фиксированных ячейках памяти.
Различают абсолютный и относительный приоритеты. Запрос, имеющий абсолютный приоритет, прерывает выполняемую программу и инициирует выполнение соответствующей прерывающей программы. Запрос с относительным приоритетом является первым кандидатом на обслуживание после завершения выполнения текущей программы.
Обработка страничного прерывания:
1.Аппаратное обеспечение переключает систему в режим ядра, сохраняя счетчик команд в стеке.
2.Запускается программа, сохраняющая основные регистры и другую изменяющуюся информацию, защищая ее от разрушения ОС.
3.ОС обнаруживает возникновение прерывания и пытается найти нужную виртуальную страницу.
4.Как только становится известен виртуальный адрес, вызвавший прерывание, система проверяет, имеет ли силу адрес и согласуется ли защита с доступом. Если да — проверяется наличие свободных страничных блоков или поиск жертвы для замещения. Если нет — процессу высылается сигнал или процесс уничтожается.
5.Если выбранный блок «грязный», его содержимое выгружается на диск, блок помечается как занятый, а на время записи контекст программы меняется на другой процесс.
6.Как только страничный блок очищается, ОС ищет место на диске, где находится страница и планирует дисковую операцию для переноса ее в память. Процесс, вызвавший прерывание, все еще остановлен.
7.Как только страница поступила в память, обновляется таблица страниц, а блок помечается как находящийся в нормальном состоянии.
8.Прерванная команда возвращается к тому состоянию, с которого она начиналась, а значение счетчика команд корректируется так, чтобы указывать на эту команду.
9.Прерванный процесс вносится в график и ОС возвращает управление ассемблерной процедуре, вызывавшей ее.
10.Процедура перезагружает регистры и другую информацию и возвращает управление в пространство пользователя.
***
2) Сигналы
Процессы могут общаться с помощью программных прерываний — один процесс может послать другому сигнал.
Процесс может получить сигнал от:
1.hardware (при возникновении исключительной ситуации);
2.другого процесса, выполнившего системный вызов передачи сигнала;
3.операционной системы (при наступлении некоторых событий);
4.терминала (при нажатии определенной комбинации клавиш);
5.системы управления заданиями.
Процессы могут сообщить системе, какие действия необходимо совершить, когда придет сигнал. Процесс может перехватить сигнал, проигнорировать его или же быть убитым им. В случае перехвата для сигналов необходимо писать собственные обработчики — когда сигнал поступает, управление передается ему. Когда обработчик завершает свою работу, управление возвращается в то место процесса, в котором оно находилось на момент вызова сигнала. Обработка сигнала аналогична обработке аппаратных прерываний ввода-вывода.
Процесс может посылать сигналы только членам своей группы процессов — т.е. прямому родителю, всем прародителям, сиблингам и всем потомкам. Сигнал может быть послан всей группе за раз.
Сигналы также используются для сообщения процессу об исключительных ситуациях — ошибках сегментации, делении на ноль и т.д.
***
3) Семафоры
Понятие семафорного механизма было введено Э. Дейкстрой в 1965г.
Семафор – целочисленная переменная, с которой ассоциирована очередь ожидающих процессов. Над семафором возможно проведение только двух операций - “открытия” и “закрытия”, названных соответственно P- и V-операциями. Операции над семафорами являются неделимыми (непрерываемыми), поэтому их часто называют примитивами. Пытаясь пройти через семафор, процесс пытается вычесть из значения переменной 1. Если значение переменной больше или равно 1, процесс проходит сквозь семафор успешно (семафор открыт). Если переменная равна нулю (семафор закрыт), процесс останавливается и ставится в очередь. Таким образом, семафор выполняет роль вспомогательного критического ресурса. Закрытие семафора соответствует захвату ресурса, доступ к которому контролируется этим семафором. Процесс, закрывший семафор, захватывает ресурс. Если ресурс захвачен, остальные процессы вынуждены ждать его освобождения. Закончив работу с ресурсом, процесс увеличивает значение семафора на единицу, открывая его. При этом первый из стоявших в очереди процессов активизируется, вычитает из значения семафора единицу, и снова закрывает семафор. Если же очередь была пуста, то ничего не происходит, просто семафор остается открытым. Тогда первый процесс, подошедший к семафору, успешно пройдет через него.