Управление на паметта в операционната система: Съседна, Размянаping, Фрагментация
⚡ Умно обобщение
Управлението на паметта е процесът на операционната система за контролиране и координиране на компютърната памет, като присвоява блокове на работещите програми за оптимизиране на производителността. tracархивира всяка участък от паметта, премества процеси между основната памет и диска и защитава процесите един от друг.

Какво е управление на паметта?
Управление на паметта е процес на контролиране и координиране на паметта на компютъра, присвояване на части, известни като блокове, на различни работещи програми, за да се оптимизира цялостната производителност на системата.
Това е най-важната функция на операционната система, която управлява основната памет. Тя помага на процесите да се движат напред и назад между основната памет и диска за изпълнение. Помага на операционната система да поддържа track от всяка паметна област, независимо дали е разпределена за някакъв процес или е свободна.
Защо да използвате управление на паметта?
Ето са причините за използване на управление на паметта:
- Тя ви позволява да проверите колко памет трябва да бъде разпределена за процеси, които решават кой процесор да получи памет по кое време.
- Tracks винаги когато инвентарът бъде освободен или неразпределен и актуализира състоянието съответно.
- Той разпределя пространството за рутините на приложението.
- Това също така гарантира, че тези приложения не си пречат взаимно.
- Помага за защитата на различните процеси един от друг.
- Той поставя програмите в паметта, така че паметта да се използва в пълна степен.
Техники за управление на паметта
Ето някои от най-важните техники за управление на паметта:
Единично непрекъснато разпределение
Това е най-лесната техника за управление на паметта. При този метод всички видове памет на компютъра, с изключение на малка част, която е запазена за операционната система, са достъпни за едно приложение. Например, операционната система MS-DOS разпределя памет по този начин. Вградената система също работи с едно приложение.
Разделено разпределение
Той разделя първичната памет на различни дялове на паметта, които са предимно съседни области на паметта. Всеки дял съхранява цялата информация за конкретна задача или дейност. Този метод се състои в разпределяне на дял на задача, когато тя започне, и освобождаването му, когато тя приключи.
Управление на страничната памет
Този метод разделя основната памет на компютъра на единици с фиксиран размер, известни като рамки за страници. Това устройство за управление на хардуерна памет картографира страниците в рамки, които трябва да бъдат разпределени на страница.
Сегментирано управление на паметта
Сегментираната памет е единственият метод за управление на паметта, който не предоставя на програмата на потребителя линейно и непрекъснато адресно пространство.
Сегментите се нуждаят от хардуерна поддръжка под формата на сегментна таблица. Той съдържа физическия адрес на секцията в паметта, размера и други данни като битове за защита на достъпа и състояние.
Какво е суапping?
размянаping е метод, при който даден процес трябва да бъде временно преместен от основната памет в резервната памет. По-късно той ще бъде върнат в паметта за продължаване на изпълнението.
Резервното хранилище е твърд диск или друго вторично устройство за съхранение, което трябва да е достатъчно голямо, за да побере копия на всички образи на паметта за всички потребители. То също така е способно да предлага директен достъп до тези образи на паметта.
Предимства на суапаping
Ето основните предимства/плюсове на суапаping:
- Предлага по-висока степен на мултипрограмиране.
- Позволява динамично преместване. Например, ако се използва свързване на адреси по време на изпълнение, тогава процесите могат да бъдат разменени на различни места. В противен случай, в случай на свързване по време на компилация и зареждане, процесите трябва да бъдат преместени на едно и също място.
- Помага за по-добро използване на паметта.
- Минимална загуба на процесорно време при завършване, така че може лесно да се приложи към метод за планиране, базиран на приоритети, за да се подобри производителността му.
Какво е разпределение на паметта?
Разпределението на паметта е процес, чрез който на компютърните програми се присвоява памет или пространство.
Тук основната памет е разделена на два вида дялове:
- Малко памет - В Operaтинг система се намира в този тип памет.
- Висока памет – Потребителските процеси се съхраняват в паметта.
Разпределение на дялове
Паметта е разделена на различни блокове или дялове. Всеки процес се разпределя според изискването. Разпределението на дялове е идеален метод за избягване на вътрешна фрагментация.
По-долу са представени различните схеми за разпределение на дяловете:
- Първо прилягане: При този тип напасване се разпределя дялът, който е първият достатъчен блок от началото на основната памет.
- Най-подходящо: Той разпределя процеса към дяла, който е най-малкият достатъчен дял сред свободните дялове.
- Най-лошо прилягане: Той разпределя процеса към дяла, който е най-големият достатъчно свободно достъпен дял в основната памет.
- Следващо прилягане: Това е до голяма степен подобно на Първото прилягане, но това прилягане търси първия достатъчен дял от последната точка на разпределение.
Какво е пейджинг?
Пейджингът е механизъм за съхранение, който позволява на операционната система да извлича процеси от вторичната памет в основната памет под формата на страници. При метода на пейджинг основната памет се разделя на малки блокове физическа памет с фиксиран размер, които се наричат фреймове. Размерът на фрейма трябва да се поддържа същият като този на страницата, за да се постигне максимално използване на основната памет и да се избегне външна фрагментация. пейджинг се използва за по-бърз достъп до данни и е логична концепция.
Какво е фрагментация?
Процесите се съхраняват в паметта и се премахват от нея, което създава свободни пространства в паметта, които са твърде малки, за да бъдат използвани от други процеси.
След известно време тези процеси не могат да бъдат разпределени към блокове памет поради малкия им размер и блоковете памет винаги остават неизползвани. Това се нарича фрагментация. Този тип проблем възниква по време на система за динамично разпределение на паметта, когато свободните блокове са доста малки, така че не са в състояние да изпълнят нито една заявка.
Два вида методи за фрагментиране са:
- Външна фрагментация
- Вътрешна фрагментация
- Външната фрагментация може да бъде намалена чрез пренареждане на съдържанието на паметта, за да се постави цялата свободна памет заедно в един блок.
- Вътрешната фрагментация може да бъде намалена чрез присвояване на най-малкия дял, който все още е достатъчно добър, за да поеме целия процес.
Какво е сегментиране?
Методът на сегментиране работи почти подобно на пейджинга. Единствената разлика между двата е, че сегментите са с променлива дължина, докато при пейджинга страниците винаги са с фиксиран размер.
Програмният сегмент включва основната функция на програмата, структурите от данни, помощните функции и т.н. ОС поддържа таблица с карта на сегменти за всички процеси. Той също така включва списък със свободни блокове памет заедно с техния размер, номера на сегменти и местоположенията му в паметта в основната памет или виртуална памет.
Какво е динамично зареждане?
Динамичното зареждане е рутина на програма, която не се зарежда, докато програмата не я извика. Всички рутини трябва да се съдържат на диск във формат, позволяващ преместване на зареждане. Главната програма ще бъде заредена в паметта и ще бъде изпълнена. Динамичното зареждане също така осигурява по-добро използване на паметта.
Какво е динамично свързване?
Свързването е метод, който помага на операционната система да събира и обединява различни модули от код и данни в един изпълним файл. Файлът може да бъде зареден в паметта и изпълнен. ОС може да свързва библиотеки на системно ниво в програма, която комбинира библиотеките по време на зареждане. При метода на динамично свързване библиотеките се свързват по време на изпълнение, така че размерът на програмния код може да остане малък.
Разлика между статично и динамично натоварване
| Статично натоварване | Динамично зареждане |
|---|---|
| Статичното зареждане се използва, когато искате да заредите програмата си статично. Тогава, по време на компилацията, цялата програма ще бъде свързана и компилирана без нужда от външен модул или програмна зависимост. | В динамично заредена програма, препратките ще бъдат предоставени и зареждането ще се извърши по време на изпълнението. |
| По време на зареждане цялата програма се зарежда в паметта и започва своето изпълнение. | Рутините на библиотеката се зареждат в паметта само когато са необходими в програмата. |
Разлика между статично и динамично свързване
Ето основните разлики между статичното и динамичното свързване:
| Статично свързване | Динамично свързване |
|---|---|
| Статичното свързване се използва за комбиниране на всички останали модули, необходими на програмата, в един изпълним код. Това помага на операционната система да предотврати всякаква зависимост по време на изпълнение. | Когато се използва динамично свързване, не е необходимо да се свързва действителният модул или библиотека с програмата. Вместо това се използва препратка към динамичния модул, предоставена по време на компилацията и свързването. |

