Неэффективность этого подхода заключается в том, что извлеченное из очереди задание возвращается обратно в очередь, если ему недостаточно ресурсов, в этом случае задание, для которого требуется наибольшее количество ресурсов может оказаться невыполненным, так как никогда не получит всех, нужных ему ресурсов. Особенно это проявляется при наличии общей очереди ко всем разделам. Разделение очереди по разделам улучшает ситуацию, но незначительно.
Память просто разделяется на несколько разделов (возможно, не равных). Процессы могут быть разными, поэтому каждому разделу необходим свой размер памяти. Системы могут иметь:
- общую очередь ко всем разделам;
- к каждому разделу отдельную очередь.
Распределение памяти динамическими разделами.
В этом случает размер раздела определяется самим процессом, т.е программа в момент запуска или в ходе выполнения выдает запрос на выделение ей ОП, если памяти достаточно, то ОС формирует раздел и связывает его с запросившей память программой. За исключением редких системных случаев, все разделы ОП, занятые прикладными процессами перемещаемы. Это означает, что расположенные в них фрагменты программ не зависят от расположения в ОП и могут перемещаться с места на место, а перенастройка адресов осуществляется обычным базированием, это позволяет осуществить дефрагментацию памяти. Пример неперемещаемых программ: драйвер устройства, передающего информацию в ОП и принимающего информацию из ОП. Настройка контроллера устройства осуществляется один раз в момент загрузки драйвера. Контроллер принимает и предает данные из фиксированной драйвером области ОП, поскольку при перемещении драйвера адреса этой области могут измениться, тогда передача данных станет невозможной. Драйвер – неперемещаемая программа. Изменение размеров раздела Поскольку программам, расположенным в ОП может потребоваться дополнительная память, раздел, отведенный программам может быть увеличен при условии, что существует достаточно для этого увеличения памяти при условии сохранения непр. Раздела.