- •Содержание
- •Лекция №7. Планирование процессов. Алгоритмы планирования процессов. 35
- •Лекция №8. Вытесняющие и невытесняющие алгоритмы планирования. Взаимодействие процессов. 40
- •Лекция №13. Файлы. Типы файлов. 83
- •Предисловие
- •Лекция №1. Этапы развития операционных систем.
- •Лекция №2. Общие сведения об ос.
- •По способу организации вычислений:
- •По назначению (областям использования):
- •По режиму обработки (Поддержка многозадачности):
- •По количеству одновременно работающих пользователей:
- •По концепции организации:
- •По особенностям аппаратных платформ:
- •Лекция №3. Интерфейс. Операционное окружение.
- •Вспомогательные модули ос (модули-приложения)
- •2. Микроядерная архитектура ос
- •3. Монолитное ядро.
- •Лекция №5. Обработка прерываний.
- •Лекция №6. Процессы.
- •Лекция №7. Планирование процессов. Алгоритмы синхронизации процессов.
- •Лекция №8. Вытесняющие и невытесняющие алгоритмы планирования. Взаимодействие процессов.
- •Взаимодействие процессов
- •Лекция №9. Ввод-вывод. Управление вводом-выводом.
- •Организация программного обеспечения ввода-вывода
- •3. Независимое от устройств программное обеспечение ввода-вывода
- •4. Пользовательский слой программного обеспечения.
- •Лекция №10. Память. Управление реальной памятью.
- •Лекция №11. Методы распределения без использования внешней памяти.
- •1. Распределение памяти фиксированными разделами (схема с фиксированными разделами).
- •2. Распределение памяти разделами переменной величины
- •3. Перемещаемые разделы
- •Лекция №12. Виртуальная память. Методы виртуализации памяти. Понятие виртуальной памяти
- •Рассмотрим подробнее каждый из методов виртуальной памяти. Страничное распределение
- •Свопинг.
- •Лекция №13. Файлы. Типы файлов.
- •Лекция №14. Логическая и физическая организация файлов. Логическая организация файла.
- •Физическая организация файла.
- •4. Перечень номеров блоков.
- •Лекция № 15. Доступ к файлам.
- •Лекция № 16. Файловая система. Надежность файловой системы.
- •1. Резервное копирование
- •2. Непротиворечивость файловой системы
- •1. Кэширование.
- •2. Опережающее чтение блока.
- •3. Снижение времени перемещения блока головок.
- •Лекция № 17. Общая модель файловой системы
- •Современные архитектуры файловых систем.
- •Лекция № 18. Обзор файловых систем.
Взаимодействие процессов
Процессам часто нужно взаимодействовать друг с другом. Совместно выполняемые процессы могут быть либо независимыми, либо взаимодействующими. Во всех этих случаях возникает проблема синхронизации процессов, которая может решаться приостановкой и активизацией процессов, организацией очередей, блокированием освобождением ресурсов.
Ситуации, когда приходится процессам взаимодействовать:
Передача информации от одного процесса другому
Контроль над деятельностью процессов (например: когда они борются за один ресурс)
Согласование действий процессов (например: когда один процесс поставляет данные, а другой их выводит на печать. Если согласованности не будет, то второй процесс может начать печать раньше, чем поступят данные).
Два вторых случая относятся и к потокам. В первом случае у потоков нет проблем, т.к. они используют общее адресное пространство.
1 Передача информации от одного процесса другому
Передача может осуществляться несколькими способами:
Разделяемая память
Каналы (трубы), это псевдофайл, в который один процесс пишет, а другой читает (рис 10).
Сокеты - поддерживаемый ядром механизм, скрывающий особенности среды и позволяющий единообразно взаимодействовать процессам, как на одном компьютере, так и в сети.
Почтовые ящики (только в Windows), однонаправленные, возможность широковещательной рассылки.
Вызов удаленной процедуры, процесс А может вызвать процедуру в процессе В, и получить обратно данные.
Рис 10. Схема для канала
2 Состояние состязания
Состояние состязания – гонки, когда 2 или более процессов обрабатывают разделяемые данные и конечный результат зависит от соотношения скоростей процессов.
Рассмотрим пример, когда два процесса пытаются распечатать файл. Для этого им нужно поместить имя файла в спулер печати, в свободный сегмент.
in - переменная указывающая на следующий свободный сегмент
out - переменная указывающая на следующее имя файла для печати
Рис 11. Состязание.
Распишем события по пунктам.
Процесс А считывает переменную in (равную 7), и сохраняет ее в своей переменной next_free_slot.
Происходит прерывание по таймеру, и процессор переключается на процесс В.
Процесс В считывает переменную in (равную 7), и сохраняет ее в своей переменной next_free_slot.
Процесс В сохраняет имя файла в сегменте 7.
Процесс В увеличивает переменную next_free_slot на единицу (next_free_slot+1), и заменяет значение in на 8.
Управление переходит процессу А, и продолжает с того места на котором остановился.
Процесс А сохраняет имя файла в сегменте 7, затирая имя файла процесса В.
Процесс А увеличивает переменную next_free_slot на единицу (next_free_slot+1), и заменяет значение in на 8.
Как видно из этой ситуации, файл процесса В не будет напечатан.
3 Критические области
Критическая область - часть программы, в которой есть обращение к совместно используемым данным.
Условия избегания состязания и эффективной работы процессов:
Два процесса не должны одновременно находиться в критических областях (прием - взаимное исключение).
Процесс, находящийся вне критической области, не может блокировать другие процессы.
Невозможна ситуация, когда процесс вечно ждет (зависает) попадания в критическую область.
Пример:
Рис 12. Взаимное исключение с использованием критических областей
4 Взаимное исключение с активным ожиданием
Рассмотрим методы взаимного исключения
- Запрещение прерываний. Заключается в запрещении всех прерываний процессу, находящемуся в критической области.
Недостаток этого метода в том, что если произойдет сбой процесса, то потерпит крах вся система, потому что прерывания никогда не будут разрешены.
- Переменные блокировки. Вводится понятие переменной блокировки, т.е. если значение этой переменной равно, например 1, то ресурс занят другим процессом, и второй процесс переходит в режим ожидания (блокируется) до тех пор, пока переменная не примет значение 0.
Рис 13. Метод блокирующих переменных
Проблема, как и с процессом печати, после того как первый процесс считает 0, второй может занять процессор и тоже считать 0. Заблокированный процесс находится в режиме активного ожидания, постоянно проверяя, не изменилась ли переменная блокировки.
- Строгое чередование. В этой модели, процессы могут выполняться строго по очереди, используя переменную.
