57

1 åõíè÷åñêèÒ óíèâåðñèòåò, Ñîôèÿlubo.elsys-bg.org/wp-content/uploads/2009/05/os07.pdf · 13 ìàé 2009 .ã Ë. ×îðáàäæèåâ (ELSYS) Ïàìåò (

Embed Size (px)

Citation preview

Управление на паметта

Любомир Чорбаджиев1

[email protected]

1Технологическо училище “Електронни системи”

Технически университет, София

13 май 2009 г.

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 1 / 57

Съдържание

1 Въведение

2 Основни концепции

3 Динамично зареждане и свързване

4 Размяна (swapping)

5 Раздели в оперативната памет

6 Делене на страници

7 Сегментна организация

8 Виртуална памет

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 2 / 57

Въведение

Въведение

За да бъде изпълнена една програма, първо тя трябва да бъдезаредена в оперативната памет на компютърната система.

Входна опашка се нарича опашка от процеси, които чакат дабъдат заредени в оперативната памет на компютъра, за да бъдатизпълнени.

Потребителската програма преминава през няколко стъпки предида бъде изпълнена.

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 3 / 57

Въведение

Въведение

Фигура: Silberschatz, Gavin, Gagne: Operating Systems Concepts

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 4 / 57

Въведение

Базов и граничен регистър

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 5 / 57

Въведение

Базов и граничен регистър

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 6 / 57

Основни концепции

Свързване на програмата с адреси в паметта

Свързването на инструкциите и данните на програмата с адреси воперативната памет на компютъра може да се реализира в различнимоменти от жизнения цикъл на програмата.

По време на компилация: Ако разположението на програмата впаметта е известно предварително, още по време на компилацияна програмата, то компилатора може да генерира абсолютниадреси в паметта. Ако трябва да се промени разположението впаметта на програмата, то е необходима тя да се прекомпилира.

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 7 / 57

Основни концепции

Свързване на програмата с адреси в паметта

По време на зареждане: Когато разположението на програмата впаметта не е предварително известно, то е необходимокомпилаторът да генерира преместваем код.

По време на изпълнение: Свързването на програмата с адреси воперативната памет може да се отложи до момента на изпълнениена програмата, ако програмата (или части от нея) могат да бъдатпреместени от един сегмент на оперативната памет в друг. Затази цел обикновено е необходима хардуерна поддръжка.

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 8 / 57

Основни концепции

Логически и физически адреси

Логически адрес се нарича адрес, генериран от централнияпроцесор. Понякога тези адреси се наричат виртуални адреси.

Физически адрес е адресът на клетката от оперативната памет,който се зарежда върху шината за адресиране.

Разделянето на концепциите за логическо и физическо адреснопространство има основно значение за управлението на паметта.

Управлението на паметта се заключава в начините, по коитологическото адресно пространство се свързва с физическотоадресно пространство.

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 9 / 57

Основни концепции

Логически и физически адреси

В случаите на свързване на адреси при компилация и по време назареждане на програмата, логическите и физическите адресисъвпадат.

При използване на подхода за свързване на адресите по време наизпълнение, логическите и физическите адреси са различни.

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 10 / 57

Основни концепции

Блок за управление на паметта (MMU)

Блок за управление на паметта се нарича част от хардуера(централния процесор), който се използва за изграждане насъответствие между логическите и физическите адреси.

Основен елемент на блока за управление на паметта е регистърътза преместване (базов регистър) (relocation register, base register),който се добавя към всеки генериран от централния процесорлогически адрес в момента, в който централния процесор сеобръща към паметта.

Потребителската програма работи само с логически адреси — тяникога не използва физически адреси.

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 11 / 57

Основни концепции

Блок за управление на паметта (MMU)

Фигура: Silberschatz, Gavin, Gagne: Operating Systems Concepts

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 12 / 57

Динамично зареждане и свързване

Динамично зареждане

Зареждането в паметта на функциите и подпрограмите се отлагадо момента, в който те действително са необходими (мързеливозареждане).

Този подход позволява по-добро използване на паметта –функциите и подпрограмите които не се използват, не сезареждат в оперативната памет. Когато големи участъци от кодаса предназначени за обработка на рядко случващи се ситуации,динамичното зареждане води до значително по-добро използванена паметта.

Динамичното зареждане не изисква специална поддръжка отоперационната система. То може да бъде реализирано изцяло впотребителската програма.

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 13 / 57

Динамично зареждане и свързване

Динамично свързване

Динамичното свързване е особено полезно при реализиране набиблиотеки.

В кода на приложението се интегрират малки участъци код,наречени стъбове (stub), чиято задача е да намерят правилната,заредена вече в оперативната памет функция.

Когато стъбът намери необходимата функция, той се заменя садреса на тази функция и я извиква.

Операционната система трябва да провери дали съответнатафункция е в адресното пространство на процеса, който я извиква.

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 14 / 57

Динамично зареждане и свързване

Препокриване (Overlay)

Фигура: Silberschatz, Gavin, Gagne: Operating Systems Concepts

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 15 / 57

Размяна (swapping)

Размяна (swapping)

Фигура: Silberschatz, Gavin, Gagne: Operating Systems Concepts

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 16 / 57

Раздели в оперативната памет

Фиксирани раздели

Оперативната памет се разделя на определен брой и с определенразмер парчета – раздели.В първите операционни системи често се използва във вариантадва фиксирани раздела – един за резидентния монитор(операционна система) и втори раздел за потребителскотозадание.Този подход може да се комбинира със свързването нафизическите адреси по време на компилация. По време накомпилация се определя в кой точно раздел ще работи даденапрограма и компилаторът и свързващият редактор генериратабсолютни адреси.По-гъвкаво е да се използва преместваем обектен код –свързването на физическите адреси да става по време назареждане на програмата, в зависимост от това в кой раздел сезарежда тя.

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 17 / 57

Раздели в оперативната памет

Фиксирани раздели

Фигура: Silberschatz, Gavin, Gagne: Operating Systems Concepts

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 18 / 57

Раздели в оперативната памет

Фрагментация

Наличието на неизползвани участъци от паметта се наричафрагментация

Една от основните причини за фрагментация на оперативнатапамет при фиксираните раздели е, че част от раздела не сеизползва, тъй като размерът на раздела е фиксирана и не можеда се променя.

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 19 / 57

Раздели в оперативната памет

Фрагментация

Фрагментацията на оперативната памет се разделя на два вида:Външна фрагментация – съществува свободна оперативна памет,

но тя е разделена на малки дупки между разделите, които се

използват от работещите процеси.

Вътрешна фрагментация – заделената памет е по-голяма от

паметта, която реално се използва от процеса; тази памет е

вътрешна за раздела, но не се използва от процеса.

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 20 / 57

Раздели в оперативната памет

Променливи раздели

Дупка – свободен участък от оперативната памет.

Първоначално цялата оперативна памет (преди да се заредятпроцеси) може да се разглежда като една “дупка”.

Когато един процес трябва да бъде зареден в оперативната памет,то за него се заделя памет от някоя от дупките, които садостатъчно големи за да поберат процеса.

Операционната система трябва да съхранява информацията зазаетите раздели и за свободните раздели (дупки) в оперативнатапамет.

Този подход също страда от фрагментация.

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 21 / 57

Раздели в оперативната памет

Уплътняване

Възможен подход за справяне с фрагментацията припроменливите раздели е уплътняването на оперативната памет.

Идеята е всички процеси да се преместят в оперативната паметтака, че да остане само една дупка.Този подход има ред недостатъци:

Местенето на процеси обаче, е времеемко.

Докато се местят процесите трябва да бъдат спрени.

Поради тези недостатъци уплътняването на оперативната паметсе използва рядко.

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 22 / 57

Раздели в оперативната памет

Стратегии за избиране на раздел

Нека си представим, че са стартира нов процес, който има нужда от N

байта оперативна памет. Възможните стратегии за избор на подходящраздел от паметта се следните:

Първият подходящ: избира се първата дупка в паметта, която едостатъчно голяма.

Най-подходящият: избира се най-малката дупка в паметта, която едостатъчно голяма.

Най-неподходящият: избира се най-голямата дупка воперативната памет.

Моделиране на тези стратегии показва, че стратегиите “първиятподходящ” и “най-подходящият” имат по-добра производителност отгледна точка на бързодействие и използваемост на оперативнатапамет. Това са най-често използваните стратегии при работа с раздели.

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 23 / 57

Делене на страници

Делене на страници

Логическото и физическото адресно пространство на процеса неса непрекъснати (един раздел), а са разделени на парчета.

Физическото адресно пространство е разделено на фиксирани поразмер блоково, които се наричат кадри (frames). Типично каторазмер на кадъра се избира число, степен на 2 – да речем 512,1024,. . .

Логическото адресно пространство се разделя на блокове съссъщия размер (като размера на кадъра), които се наричатстраници (pages).

Операционната система трябва да съхранява информация завсички свободни кадри.

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 24 / 57

Делене на страници

Делене на страници

За да се зареди една програма с размер N страници воперативната памет е необходимо операционната система данамери съответния брой свободни кадри, да зареди програмата ида инициализира таблицата за преобразуване на логическите въвфизически адреси.

Деленето на страници води до увеличаване на вътрешнатафрагментация.

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 25 / 57

Делене на страници

Преобразуване на адреси

Всеки логически адрес генериран от централния процесор серазделя на две: номер на страница (p) и отместване в страницата

(d).

Номерът на страницата (p) се използва като индекс впреобразуващата таблица (таблицата на страниците, page table),където се съхранява базовия адрес на кадъра, съответстващ нададената страница.

Отместването в страницата (d) се добавя към базовия адрес накадъра за да се получи физическия в оперативната памет.

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 26 / 57

Делене на страници

Преобразуване на адреси

Фигура: Silberschatz, Gavin, Gagne: Operating Systems Concepts

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 27 / 57

Делене на страници

Страници

Фигура: Silberschatz, Gavin, Gagne: Operating Systems Concepts

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 28 / 57

Делене на страници

Страници

Фигура: Silberschatz, Gavin, Gagne: Operating Systems Concepts

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 29 / 57

Делене на страници

Свободни кадри

Фигура: Silberschatz, Gavin, Gagne: Operating Systems Concepts

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 30 / 57

Делене на страници

Преобразуваща таблица

Преобразуващата таблица (page table) типично се съхранява воперативната памет.

При такъв подход достъпът до данните и инструкциите изисквадве обръщания към паметта – веднъж към преобразуващататаблица за да се формира физическия адрес и веднъж къмсъответния адрес в оперативната памет.

Този проблем може да бъде решен като се използваспециализиран бърз хардуерен кеш, който е организиран катоасоциативна памет (associative memory, translation look-aside buffer(TLB)).

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 31 / 57

Делене на страници

Преобразуваща таблица

Фигура: Silberschatz, Gavin, Gagne: Operating Systems Concepts

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 32 / 57

Делене на страници

Защита на паметта

Защитата на паметта при деленето на страници се реализира катос всеки кадър се асоциира допълнителен бит (или битове).

Най-простата схема асоциира с всяка страница в таблицата запреобразуване допълнителен бит за валидност на страницата(valid/invalid bit).

Когато битът е в състояние “валиден (valid)”, то това означава честраницата е в логическото адресно пространство на процеса иследователно може да бъде използвана (адресирана).

Когато битът е в състояние “невалиден (invalid)”, то товаозначава, че страницата не е в логическото адресно пространство.

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 33 / 57

Делене на страници

Преобразуваща таблица

Фигура: Silberschatz, Gavin, Gagne: Operating Systems Concepts

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 34 / 57

Делене на страници

Видове преобразуващи таблици

Йерархични преобразуващи таблици.

Преобразуващи хеш-таблици.

Обърнати преобразуващи таблици.

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 35 / 57

Делене на страници

Йерархична преобразуваща таблица с две нива

Фигура: Silberschatz, Gavin, Gagne: Operating Systems Concepts

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 36 / 57

Делене на страници

Йерархична преобразуваща таблица с две нива

Фигура: Silberschatz, Gavin, Gagne: Operating Systems Concepts

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 37 / 57

Делене на страници

Преобразуваща хеш-таблица

Фигура: Silberschatz, Gavin, Gagne: Operating Systems Concepts

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 38 / 57

Делене на страници

Общи страници

Фигура: Silberschatz, Gavin, Gagne: Operating Systems Concepts

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 39 / 57

Сегментна организация

Сегментна организация

Сегментната организация на оперативната памет позволявапрограмата да бъде разположена в няколко несъседни участъкаот паметта.

Сегментната организация е схема за управление на паметта, коятоподдържа гледната точка на потребителя върху организацията наоперативната памет.

Програмата е разделена на съвкупност от сегменти. Всеки сегменте логическа част от програмата – например функция, метод,обект, локални променливи, глобални променливи, масив и т.н.

Това, че програмата може да бъде разделена на сегменти,позволява да се намали външната фрагментация.

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 40 / 57

Сегментна организация

Сегментна организация

Фигура: Silberschatz, Gavin, Gagne: Operating Systems Concepts

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 41 / 57

Сегментна организация

Сегментна организация

Фигура: Silberschatz, Gavin, Gagne: Operating Systems Concepts

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 42 / 57

Сегментна организация

Сегментна организация

Логическият адрес при сегментната организация се състои отдвойката < s, d >, където s е номер на сегмент, а d е отместванев рамките на сегмента.

За изобразяване на логическите адреси във физически сеизползва таблица на сегментите.

Всеки елемент на таблицата на сегментите съдържа базов адрес играница. Базовият адрес е началния адрес във физическатапамет, от който е разположен сегмента. Границата съдържаразмера на сегмента.

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 43 / 57

Сегментна организация

Сегментна организация

Таблицата на сегментите е разположена в оперативната памет.

Регистърът за начален адрес на таблицата на сегментите(segment-table base register - STBR) сочи към началото натаблицата на сегментите.

Регистърът за размера на таблицата на сегментите (segment-tablelength register - STLR) съдържа броя на сегментите, които сеизползват от процеса. Номерът на сегмент, генериран отпроцесора е валиден, ако е по-малък от STLR.

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 44 / 57

Сегментна организация

Сегментна организация: защита на паметта

Сегментите отразяват логическите части на програмата – код напрограмата, програмен стек, данни и т.н.

Към всеки елемент от таблицата на сегментите е асоцииран наборот допълнителни битове, предназначени за контрол на достъпа досъответния сегмент.

С всеки сегмент се свързват определени права за достъп – праваза четене, права за писане и права за изпълнение.

Например: на сегмент, който съдържа изпълнимия код напрограмата, се назначават права само за изпълнение. Четенето иписането в този сегмент се забраняват.

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 45 / 57

Сегментна организация

Сегментна организация

Фигура: Silberschatz, Gavin, Gagne: Operating Systems Concepts

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 46 / 57

Сегментна организация

Сегментна организация

Фигура: Silberschatz, Gavin, Gagne: Operating Systems Concepts

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 47 / 57

Сегментна организация

Сегментна организация: общи сегменти

Фигура: Silberschatz, Gavin, Gagne: Operating Systems Concepts

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 48 / 57

Сегментна организация

Смесена организация: странично-сегментна

Фигура: Silberschatz, Gavin, Gagne: Operating Systems Concepts

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 49 / 57

Виртуална памет

Виртуална памет

Виртуална памет се нарича концепцията за разделяне налогическото адресно пространство от физическото адреснопространство.

При изпълнение на дадена програма е възможно в даден моментв оперативната памет да се намира само част от програмата. Товапозволява логическото адресно пространство да е по-голямо отфизическото.

Виртуалната памет позволява част от адресното пространство дае общо за няколко процеса – общи страници, общи сегменти.

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 50 / 57

Виртуална памет

Виртуална памет

Фигура: Silberschatz, Gavin, Gagne: Operating Systems Concepts

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 51 / 57

Виртуална памет

Зареждане на страница при поискване

Дадена страница се зарежда в оперативната памет, само в случай,че действително има нужда от нея.

Този подход спестява входно/изходни операции при зареждане напрограмата, нужна е по-малко оперативна памет, систематареагира по-бързо на заявките на потребителя.

Когато дадена страница е необходима, то се генерира обръщанекъм нея. Когато адреса е невалиден, то това води до генериранена прекъсване. Ако страницата не е в оперативната памет, тостраницата първо се зарежда.

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 52 / 57

Виртуална памет

Виртуална памет

Фигура: Silberschatz, Gavin, Gagne: Operating Systems Concepts

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 53 / 57

Виртуална памет

Бит за валидност/невалидност на страницата

С всеки елемент на таблицата за преобразуване на адресите сеасоциира бит за валидност/невалидност на страницата.

Първоначално за всеки елемент на таблицата за преобразуване наадресите, асоциирания бит за валидност/невалидност сеустановява в стойност “невалиден”.

При преобразуването на адреси, когато бита завалидност/невалидност е със стойност “невалиден” се генерирапрекъсване “грешна страница”.

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 54 / 57

Виртуална памет

Виртуална памет

Фигура: Silberschatz, Gavin, Gagne: Operating Systems Concepts

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 55 / 57

Виртуална памет

Прекъсване “грешна страница (page fault)”

При първото обръщане към дадена страница винаги се генерирапрекъсване “грешна страница”.

Операционната система трябва да различи двете възможнипричини за генерираното прекъсване – невалиден адрес илистраницата не е в оперативната памет. Ако адреса е невалиден, топроцеса се спира.

Ако причината за прекъсването е, че страницата не е воперативната памет, то операционната система трябва да намерипразен кадър, да зареди страницата в този кадър, да обновитаблицата за преобразуване на адреси и да изпълни повторнопрекъсната инструкция.

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 56 / 57

Виртуална памет

Прекъсване “грешна страница (page fault)”

Фигура: Silberschatz, Gavin, Gagne: Operating Systems Concepts

Л. Чорбаджиев (ELSYS) Памет (–revision–) 13 май 2009 г. 57 / 57