Тема 1 – Основни принципи на управление на паметта (УП)
А) Свързване и зареждане на програма
Б) Статично и динамично разпределяне на паметта
В) Размери на блоковете памет – Има два вида организации на ОП:
-
Непрекъснато разпределение
-
Прекъснато разпределение – Блоковете са страници или сегменти
Най-важния въпрос е каква да е големината на блоковете. При непрекъснатото разпределяне на ОП съществуват два подхода за определяне размера на разделите:
-
Програмите получават памет на блокове с определен размер
-
Програмите получават памет на блокове с необходимата им дължина.
При този подход очевидния въпрос, който възниква, е: какво да се прави когато изискваната програма има размер, по-голям от размера на разделите.
Г) Припокриване – Идеята е че една и съща област от паметта се разпределя на повече от една части (сегменти) от програмата. Тези части могат да бъдат и ПП. Сегментите трябва да са информационно независими. В началото се зарежда първият от тези сегменти, които ползват една и съща област. Останалите сегменти се пазят във външната памет. Когато е необходим друг сегмент се извиква функция на ОС за организиране на припокриване. Новият сегмент се записва на мястото на намиращия се в това време в ОП първи сегмент. Зареждането се извършва динамично. Програмистът трябва да планира и опише препокриването и да включи тази информация в заданието си. Свързващият редактор генерира описание на припокриване, което се записва в таблица на сегментите. В тази таблица се включва главния модул (сегмент). При изпълнение на програмата всяко външно обръщение се, и ако сегментът не е в ОП се извиква зареждащата програма за сегмента.
Д) Размяна (swapping) – когато ОС изисква приоритетно пускане на задание, а свободна памет няма, то една от програмите се спира и се извежда от ОП, тоест тя освобождава ОП. Изведеното задание се записва на външен носител. На неговото място се записва това с висок приоритет. Така му се дава възможност да изпълни исканата работа. След известно време спряното задание се връща в ОП. Този метод се прилага при мъртва хватка, поява на високоприоритетно задание или при разпределение на ресурсите. Размяната изисква време.
-
Поддържане на информационни структури за свободното и заето пространство на паметта
-
Прилагане на определена стратегия за разпределение на паметта, т.е. трябва да се вземе решение кой процес ще получи памет, какъв размер и къде
-
След като решението е взето, отделяне на памет – на избрани процес се дава конкретна област и информацията за състоянието на паметта се актуализира
-
Процес, завършил работата си, или процес, който се спира, освобождава паметта
Тема 3 – Фиксирани раздели. Фрагментация
Управлението с фиксирани раздели е един от начините за непрекъснато управление на паметта. В мултипрограмните системи в паметта се намира повече от един процес. Тези процеси се изпълняват съвместно. Паметта се разбива на области. При непрекъснатото разпределение на паметта се задава едно задание. Един от проблемите е защитата на процеса от външни и непредвидени намеси.Едно решение е ключ на всеки раздел, записан в регистъра, т.е. всеки регистър има ключ за защита и всеки процес има ключ за защита, който е част от думата за състояние на процеса (или вектора на процеса). При всяко обръщение към паметта се сравняват двата ключа: Този към процеса и към раздела, към който е образуване обръщението. Ако те не съвпадат процеса спира работата си. Друго възможно решение на защитата е използване на два гранични регистъра. В единия се записва долната, а в другия горната граница на раздела. При всяко обръщение към паметта се проверява дали този адрес е в интервала, зададен от двата регистъра. При този подход паметта се разбива на раздели с определени големини. Това става при инсталацията на ОС. Нивото на мултипрограмиране в случая се определя от броя на разделите. Този метод е подходящ когато се знае размера на заданията и честотата на тяхното пускане. С други думи в случая е необходима информация за входния поток от задания. Функциите по управление на паметта се реализират леко. Разпределянето на памет се извършва от програмата за планиране. Фрагментацията е неизползване на ОП. Вътрешна фрагментация имаме тогава, когато размера на програмата не съвпада с размера на раздела - тогава, когато има свободни раздели, но те са малки за чакащите задания.
Тема 4 – Променливи раздели
Този подход намалява фрагментацията. Размерът на разделите се определя по време на изпълнение. Размерът на раздела е равен на размера на програмата. След изпълнението на програмата разделът се освобождава. Така всяка програма получава необходимата и памет преди началото на изпълнението си. След определяне на разделите програмите не могат да се разместят. Разположението е статично. Възможно е да се променят разделите, но това е свързано с някои трудности. Управлението на паметта се базира на таблица – списък.
Тема 5– Стратегии за разполагане на заданията в паметта
Стратегиите, които ще разгледаме са свързани с поддръжката на списък на свободните блокове. Съществуват три стратегии за разпределението на раздели на задания:
-
Стратегия First Fit – При стратегията избор на 1ви подходящ блок се избира от списъка на свободните блокове първия блок, в който може да се помести заданието. В този случай е подходящо таблицата на свободните блокове да се подрежда по нарастване на адресите.
-
Стратегия Best Fit – тук е необходимо да се направи преглед на всички свободни блокове и да се избере най-близкия по размер отгоре. Това може да бъде избегнато ако списъкът се сортира по нарастване на размерите на свободните блокове.
-
Стратегия Worst Fit
При първи подходящ става раздробяване. При втория метод се натрупват множество малки участъци с малки размери. При последния метод също се изисква претърсване на целия списък за да се намери най-малко подходящ. И в случая може да се избегне търсенето като блоковете се подредят по намаляване на размера. И при тази стратегия идеята е че блоковете, които остават са максимални, което позволява да бъдат одевлетворявани исканията на бъдещи задания. При освобождаване на блокове те трябва да бъдат включвани в списъка на свободната памет. Включването в списъка зависи от неговата реализация. Видяхме че този списък може да бъде сортиран по:
-
Адресите на блоковете
-
По увеличаване на размера на блоковете
-
По намаляване на размера на блоковете
1 случай се реализира лесно. Ако 2 блока са съседни, те се обединяват в един блок. В другите два случая вмъкването на нови блокове е по-усложнено.
Сподели с приятели: |