Основной функцией ОС по управлению памятью является размещение программы в основной памяти для её выполнения процессором. В современных ОС решение этой задачи предполагает использование сложной схемы, называемой виртуальной памятью.
Известно несколько способов распределения памяти:
1) Фиксированное распределение.
ОП разделяется на ряд статических разделов во время генерации системы. Процесс может быть загружен в раздел равного или большего размера.
Положительная сторона - простота реализации и малые системные затраты. Отрицательная сторона – неэффективное использование памяти из-за внутренней фрагментации и фиксированного максимального количества процессов.
2) Динамическое распределение.
Разделы в памяти создаются динамически, каждый процесс загружается в раздел необходимого раздела.
Достоинство - отсутствие внутренней фрагментации, более эффективное использование ОП. Недостаток – существенные затраты процессора на противодействие внешней фрагментации и проведения уплотнения памяти. При выделении памяти, таким образом, применяются три основных алгоритма: наилучший подходящий, первый подходящий, следующий подходящий.
|
|
3) Простая страничная организация.
ОП разделена на ряд кадров равного размера. Каждый процесс распределен на некоторое количество страниц равного размера, такой же длины, что и кадры памяти. Процесс загружается путем загрузки всех его страниц, причем страницы не обязательно следуют последовательно.
Достоинство - отсутствие внешней фрагментации. Недостаток – небольшая внутренняя фрагментация, усложняют системное управление распределения памяти.
4) Простая сегментация.
Каждый процесс распределен на ряд сегментов. Процесс загружается путем загрузки всех своих сегментов в динамические, не обязательно смежные, разделы.
Достоинство - отсутствие внутренней фрагментации, улучшается использование памяти по сравнению с динамическим распределением. Недостаток – проблемы с внешней фрагментацией (не столько критично).
5) Страничная организация виртуальной памяти.
Подобна простой страничной организации, но не требуется загружать все страницы процесса. Необходимые нерезидентные страницы автоматически подгружаются в память.
Достоинства – отсутствие внешней фрагментации, более высокая степень многозадачности, большое виртуальное адресное пространство. Недостаток – значительные затраты на управление виртуальной памятью.
6) Сегментация виртуальной памяти.
Подобна простой сегментации, но не требуется загружать все сегменты процесса. Необходимые нерезидентные сегменты автоматически подгружаются в память.
|
|
Достоинства - отсутствие внутренней фрагментации, более высокая степень многозадачности, большое виртуальное адресное пространство, поддержка защиты и совместного использования. Недостаток – затраты на управление сложной виртуальной памятью.
7) Система двойников
В ней память распределяется блоками размером , где -минимальный размер выделяемого блока, а -максимальный размер (вся доступная распределенная память). Если запрашивается блок размером , таким что , то выделяется весь блок памяти, в противном случае, блок будет разделен на два одинаковых подблока (двойника), размерами . Если , то выделяется блок , иначе повторяется. Процесс деления продолжается до тех пор, пока не будет сгенерирован наименьший блок, размер которого не меньше .
На каждом уровне введен список свободных и занятых областей памяти.