Принципы функционирования очереди.
Очередь – это последовательность постановки процессов на выполнение (конкуренции за ресурс).
1. Есть следующие типы очередей: FIFO (first input first output) – в очереди не играет роли, какая задача по объему, по приоритету, по ресурсам, главное – ее момент появления в очереди (караван, буфер). Самая важная заявка – первая.
2. LIFO (last input first output). Стэк.
Если в момент обслуживания (n-1) заявки поступила еще одна, то она встает сразу за (n-1). Такой тип обслуживания называется стеком.
Согласно LIFO самая важная заявка, которая пришла последней, а в FIFO – первой.
3. Очередь с использованием приоритетов. Заявки на обслуживание при появлении в очереди имеют разные значения приоритетов. Чем ниже число, тем выше уровень приоритета.
Приоритеты могут быть динамическими – при нахождении в очереди заявка получает либо больший приоритет, либо меньший. Динамический приоритет зависит о того, какие из ресурсов являются приоритетными по обслуживанию.
Приоритеты зависят от объема задачи – чем меньше задача, тем быстрее она обслужится.
4. Планирование возможно с разделением тактов машинного времени – круговая диспетчеризация.
Между этими задачами делится машинное время.
Работает система приоритетов – чем больше время переключения, тем больше теряем время процессора.
Многоуровневые очереди.
Принцип этой очереди в том, что все процессы на обслуживание ставятся в несколько очередей в зависимости от приоритета процесса.
Если нет ни одного процесса в первой очереди, на обслуживание берется процесс с меньшим приоритетом, то есть из второй очереди и т.д. Это позволяет выделить наиболее важные процессы по приоритетам и, прежде всего, обслуживать именно их.
Например, в качестве первой очереди могут выступать какие-либо системные процессы (например, нажать комбинацию клавиш Alt+Ctrl+Del).
В качестве второй очереди могут выступать программы пользователя, в качестве третьей – какие-либо фоновые задачи (например, печать документа на принтере).
Планирование с использованием многоуровневой очереди с обратными связями.
Принцип данного планирования состоит в том, что каждому из процессов дается определенное количество времени на обслуживание.
Замечание: в основном этот механизм используется в системах реального времени.
После обслуживания первого процесса обслуживается следующий за ним. Если за отведенное процессу время он не успел обслужиться, то процесс уходит в очередь более низкого уровня. Время же на его обслуживание увеличивается вдвое по сравнению с первой очередью. Если же процесс снова не успевает обслужиться, он уходит в третью очередь, и время обслуживания увеличивается уже в четыре раза по сравнению с первой очередью. Данная очередь называется динамической.
При использовании данного типа очереди пользователь выигрывает в том, что чем больше он переключается между очередями, тем больше процессор считает, в то же время получается, что из первой очереди вычерпываются самые быстрые процессы.
После полного обслуживания процессов первой очереди, все остальные очереди поднимаются на уровень выше, и время на обслуживание процессов этих очередей уменьшается в два раза.
Замечание: наиболее перспективным считается последний тип очереди, который сочетает в себе динамику приоритетов и по опыту считается наиболее перспективным в ОС.
Все реальное состояние процесса определяется блоком PCB.
Управление памятью.
Управление памятью необходимо для распределения памяти между отдельными задачами, программами, буферами (например, буферами файлов, обменов) и один из методов – это перемещение процесса (программы на выполнение) в оперативной памяти.
Данный механизм называется SWAP и делится на два этапа:
Процесс называется SWAP
Проблемы:
1) процессы могут быть независимыми, тогда проблема в том, чтобы участки памяти не пересекались. Должен быть предусмотрен такой механизм, чтобы начальный адрес процесса не попадал в область ОС.
2)При работе взаимосвязанных процессов.
Один процесс может инициировать загрузку с диска еще каких-либо процессов. При SWAP OUT этого процесса должна быть освобождена память не только то самого процесса, но и от тех, которые были вызваны данным процессом.
Самая большая проблема – фрагментация памяти – это явление, которое возникает при загрузке и удалении процессов и может привести к тому, что при сильной фрагментации памяти нет достаточно большого участка, чтобы загрузить очередной процесс, особенно в случае взаимосвязанных процессов.
.del – динамически связанные библиотеки – наиболее проблематичны.
Msvb60.dll – 1.6 мб.