
- •1.Модель процесса. Создание/завершение процесса.
- •2.Поток. Использование потоков.
- •3. Иерархия процессов. Назначение.
- •4. Реализация потоков в пространстве пользователя и в пространстве ядра. Преимущества и недостатки.
- •11.Таблица процессов.
- •12. Виртуальное адресное пространство.
- •13. Критические области. Семафоры. Мьютексы. Мониторы.
- •14. Критические области. Взаимное исключение с активным ожиданием.
- •15. Планирование процессов. Задачи алгоритмов планирвоания.
- •16. Активация планировщика (когда выполняется планирование).
- •17. Алгоритм пларирования fcfs
- •18. Алгоритм пларирования sjf
- •19. Алгоритм пларирования RoundRobin
- •20. Алгоритм пларирования "Multilevel Queue"
- •21. Алгоритм пларирования "Multilevel Feedback Queue"
- •22. Взаимоблокировки. Условия взаимоблокировки.
- •23. Управление памятью. Виртуальная память.
- •24. Страничная организация памяти. Таблицы страниц.
- •25. Подкачка (swapping).
- •26. Алгоритмы замещения страниц.
16. Активация планировщика (когда выполняется планирование).
Ключевым вопросом планирования является выбор момента принятия решений. Оказывается, существует множество ситуаций, в которых необходимо планирование.
Во-первых, когда создается новый процесс, необходимо решить, какой процесс запустить: родительский или дочерний. Поскольку оба процесса находятся в состоянии готовности, эта ситуация не выходит за рамки обычного и планировщик может запустить любой из двух процессов.
Во-вторых, планирование необходимо, когда процесс завершает работу. Этот процесс уже не существует, следовательно, необходимо из набора готовых процессов выбрать и запустить следующий. Если процессов, находящихся в состоянии готовности, нет, обычно запускается холостой процесс, поставляемый системой.
В-третьих, когда процесс блокируется на операции ввода-вывода, семафоре, или по какой-либо другой причине, необходимо выбрать и запустить другой процесс. Иногда причина блокировки может повлиять на выбор. Например, если А —
важный процесс и он ожидает выхода процесса В из критической области, можно запустить следующим процесс В, чтобы он вышел из критической области и позволил процессу Л продолжать работу. Сложность, однако, в том, что планировщик обычно не обладает информацией, необходимой для принятия правильного решения.
В-четвертых, необходимость планирования может возникнуть при появлении прерывания ввода-вывода. Если прерывание пришло от устройства ввода-вывода, закончившего работу, можно запустить процесс, который был блокирован в ожидании этого события. Планировщик должен выбрать, какой процесс запустить: новый, тот, который был остановлен прерыванием, или какой-то другой.
17. Алгоритм пларирования fcfs
«Первым пришел — первым обслужен»
Процессам предоставляется доступ к процессору в том порядке, в котором они его запрашивают. Чаще всего формируется единая очередь ждущих процессов. Как только появляется первая задача, она немедленно запускается и работает столько, сколько необходимо. Остальные задачи ставятся в конец очереди. Когда текущий процесс блокируется, запускается следующий в очереди, а когда блокировка снимается, процесс попадает в конец очереди.
Основным преимуществом этого алгоритма является то, что его легко понять и столь же легко программировать.
Недостатком является абсолютная неоптимизированность планирования.
18. Алгоритм пларирования sjf
«Кратчайшая задача — первая»
Рассмотрим еще один алгоритм без переключений для систем пакетной обработки, предполагающий, что временные отрезки работы известны заранее. Если в очереди есть несколько одинаково важных задач, планировщик выбирает первой самую короткую задачу.
Преимущество алгоритма заключается в оптимизации задачи.
Недостатком является то, что эта схема работает лишь в случае одновременного наличия задач.
19. Алгоритм пларирования RoundRobin
Циклическое планирование.
Одним из наиболее старых, простых, справедливых и часто используемых является алгоритм циклического планирования. Каждому процессу предоставляется некоторый интервал времени процессора, так называемый квант времени. Если к концу кванта времени процесс все еще работает, он прерывается, а управление передается другому процессу. Разумеется, если процесс блокируется или прекращает работу раньше, переход управления происходит в этот момент. Реализация циклического планирования проста. Планировщику нужно всего лишь поддерживать список процессов в состоянии готовности. Когда процесс исчерпал свой лимит времени, он отправляется в конец списка .
Единственным интересным моментом этого алгоритма является длина кванта. Переключение с одного процесса на другой занимает некоторое время — необходимо сохранить и загрузить регистры и карты памяти, обновить таблицы и списки, сохранить и перезагрузить кэш памяти и т. п. Вывод можно сформулировать следующим образом: слишком малый квант приведет к частому переключению процессов и небольшой эффективности, но слишком большой квант может привести к медленному реагированию на короткие интерактивные запросы. Значение кванта около 2 0 -5 0 мс часто является разумным компромиссом.