Заказать курсовые, контрольные, рефераты...
Образовательные работы на заказ. Недорого!

Принципы управления и распределения оперативной памяти

РефератПомощь в написанииУзнать стоимостьмоей работы

Основной ресурс системы, распределением которого занимается ОС — это оперативная память (ОП). Поэтому организация памяти оказывает большое влияние на структуру и возможности ОС. Используемые в операционных системах алгоритмы распределения ОП многообразны. Причинами этого многообразия являются: · многоуровневая структура памяти (регистровая, оперативная, внешняя) · стремление обеспечить… Читать ещё >

Принципы управления и распределения оперативной памяти (реферат, курсовая, диплом, контрольная)

Основной ресурс системы, распределением которого занимается ОС — это оперативная память (ОП). Поэтому организация памяти оказывает большое влияние на структуру и возможности ОС. Используемые в операционных системах алгоритмы распределения ОП многообразны. Причинами этого многообразия являются: · многоуровневая структура памяти (регистровая, оперативная, внешняя) · стремление обеспечить пользователя характеристиками, отличными от реальных (виртуальная память) · необходимость согласования распределения ОП с распределением центрального процессора Самый простой случай управления памятью — ситуация, когда диспетчер памяти отсутствует, и в системе может быть загружена только одна программа. Именно в таком режиме работают CP/M и RT-11 SJ (Single-Job, однозадачная). В этих системах программы загружаются с фиксированного адреса PROG_START. В CP/M это 0×100; в RT-11 — 1 000. В адресах от 0 до начала программы находятся вектора прерываний, а в RT-11 — также и стек программы. В этом случае управление памятью со стороны системы состоит в том, что загрузчик проверяет, поместится ли загружаемый модуль в пространство от PROG_START до SYS_START. Если объем памяти, который использует программа, не будет меняться во время ее исполнения, то на этом все управление и заканчивается. Однако программа может использовать динамическое управление памятью, например функцию malloc (). В этом случае уже код malloc () должен следить за тем, чтобы не залезть в системные адреса. Как правило, динамическая память начинает размещаться с адреса PROG_END = PROG_START + PROG_SIZE. PROG_SIZE в данном случае обозначает полный размер программы, то есть размер ее кода, статических данных и области, выделенной под стек. Функция malloc () поддерживает некоторую структуру данных, следящую за тем, какие блоки памяти из уже выделенных были освобождены. При каждом новом запросе она сначала ищет блок подходящего размера в своей структуре данных и, только когда этот поиск завершится неудачей, откусывает новый блок памяти у системы. Для этого используется переменная, которая в библиотеке языка C называется brklevel. Изначально эта переменная равна PROG_END, ее значение увеличивается при выделении новых блоков, но в некоторых случаях может и уменьшаться. Это происходит, когда программа освобождает блок, который заканчивается на текущем значении brklevel. Потребности отдельных программ в ресурсе памяти в процессе обработки могут меняться, что заранее, до запуска программы, не может быть учтено. В связи с этим необходимо распределять память динамически непосредственно в ходе вычислительного процесса, т. е. осуществлять динамическое распределение памяти.

Показать весь текст
Заполнить форму текущей работой