фрагментация оперативной памяти операционных систем



Предположим, что небольшая компьютерная система имеет 4 МБ оперативной памяти. Система управляет им в рамках фиксированного размера. Таблица кадров поддерживает состояние каждого кадра в памяти. Насколько большим (сколько байт) должен быть кадр? У вас есть выбор одного из следующих вариантов: 1K, 5K или 10K байт. Какой из этих вариантов минимизирует общее пространство, потраченное процессами из-за фрагментации и хранения таблиц фреймов?



Предположим следующее: в среднем в памяти будет находиться 10 процессов. Средняя величина объем потраченного впустую пространства составит 1/2 кадра для каждого процесса.
Таблица кадров должна содержать одну запись для каждого кадра. Каждая запись требует 10 байт.





Вот мой ответ:



1K минимизирует фрагментацию, так как известный малый размер приводит к большим таблицам, но меньшему потерянному пространству.



10 процессов ~ 1/2 кадра, потраченных впустую на каждый.





Я на правильном пути?

558   1  

1 ответ:

Да, это так. Я согласен с вами, что в такой системе, как эта, самый маленький размер имеет наибольший смысл. Однако, например, если вы возьмете ситуацию x86-64, где параметры 4KB, 2MB, 1GB. Учитывая современные размеры памяти приближения 4 ГБ, очевидно, что 1 ГБ не имеет смысла, но поскольку большинство программ в настоящее время содержат довольно много скомпилированного кода, или в случае интерпретируемых языков и языков ВМ, весь код ВМ, 2 МБ страниц имеют наибольший смысл. Другими словами, определить эти вещи, вы должны думать о среднем использовании памяти программы в этой системе, количество программ, и самое главное, соотношение средней фрагментации к размеру таблицы страниц. Потому что в то время как небольшой размер памяти, как это выгодно от низкой фрагментации, 4 КБ страниц на 4 ГБ памяти-это очень большая таблица страниц. Очень большой.

Comments

    Ничего не найдено.