телевизори. Конзоли. Проектори и аксесоари. Технологии. Цифрова телевизия

Основни подходи за управление на RAM. Функции на операционните системи за управление на компютърните ресурси. Управление на паметта. Всички методи за управление на паметта могат да бъдат разделени на два класа: методи, които използват движението на процеси между

Изпратете добрата си работа в базата знания е лесно. Използвайте формата по-долу

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

Публикувано на http://www.allbest.ru/

Въведение

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

1.1 Основни задачи за управление на паметта

3.1 Разпределение на паметта чрез фиксирани дялове

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

3.3 Подвижни секции

4.1 Страничен метод за разпределяне на виртуална памет

4.2 Сегментиран метод за разпределяне на виртуална памет

4.3 Метод на сегментна страница за разпределяне на виртуална памет

Заключение

Библиография

Въведение
Паметта е критичен ресурс, който изисква внимателно управление от операционната система.
В ранните операционни системи управлението на паметта беше просто въпрос на зареждане на програма и нейните данни от някакво външно устройство за съхранение (магнитна лента, магнитен диск) в паметта. С навлизането на мултипрограмирането ОС беше изправена пред нови задачи, свързани с разпределението на наличната памет между няколко едновременно работещи програми.
Всички методи за управление на паметта могат да бъдат разделени на два класа: методи, които използват движението на процеси между RAMи диск, и методи, които не правят това.
1. Управление на паметта
операционна система за управление на паметта
1.1 Основен задачи управление памет
Основната памет (известна още като RAM) е критичен ресурс, чието ефективно използване има решаващо влияние върху цялостната производителност на системата.
За еднозадачни операционни системи управлението на паметта не е сериозен проблем, тъй като цялата памет, която не се използва от системата за собствени нужди, може да бъде разпределена към един потребителски процес. Процедурите за управление на паметта решават следните проблеми:

заделя памет за потребителския процес, когато стартира, и освобождава тази памет, когато процесът приключи;

гарантиране, че стартираната програма е конфигурирана за разпределени адреси на паметта;

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

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

Основните задачи, които подсистемата за управление на паметта на многозадачна ОС трябва да реши, включват следното:

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

ефективно използване на ограниченото количество основна памет за задоволяване на нуждите на всички работещи процеси, включително използването на дискове като разширение на паметта;

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

Разрешаване на процесите да обменят данни чрез споделени области на паметта.

2. Класификация на методите за разпределение на паметта
Ориз. 1 Класификация на методите за разпределение на паметта
3. Реално управление на паметта
3.1 Разпределение памет фиксирани секции
Най-простият начин за управление на RAM е да разделите паметта на няколко области с фиксиран размер, наречени дялове. Такова разделяне може да се извърши ръчно от оператора по време на стартиране на системата или по време на нейната инсталация. След това границите на дяловете не се променят.
Следващият нов процес, който пристига за изпълнение, се поставя или в обща опашка (фиг. 1.1, a), или в опашка към определена секция (фиг. 1.1, b).
Ориз. 1.1. Разпределение на паметта чрез фиксирани дялове:
с обща опашка (а), с отделни опашки (б)
Подсистемата за управление на паметта в този случай изпълнява следните задачи:
§ Сравнява количеството памет, необходимо за новопоявил се процес с размера на свободните дялове и избира подходящ дял;
§ Зарежда програмата в една от секциите и конфигурира адреси. Още на етапа на превода разработчикът на програмата може да посочи секцията, в която трябва да бъде изпълнена. Това ви позволява незабавно, без да използвате преместващ товарач, да получите машинен код, настроен към конкретна област от паметта.

С очевидното предимство на лекотата на изпълнение, този методима значителен недостатък - твърдост. Тъй като във всеки дял може да се изпълнява само един процес, нивото на мултипрограмиране е предварително ограничено от броя на дяловете. Независимо от размера на програмата, тя ще заема целия дял. Например, на система с три дяла е невъзможно да се изпълняват повече от три процеса едновременно, дори ако те изискват много малко памет. От друга страна, разделянето на паметта не позволява да се изпълняват процеси, чиито програми не се побират в нито един от дяловете, но за които паметта на няколко дяла би била достатъчна.

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

3.2 Разпределение памет динамичен секции

В този случай паметта на машината не е предварително разделена на секции. Първоначално цялата памет, разпределена за приложения, е свободна. На етапа на създаване на процеса на всяко новополучено приложение се разпределя цялата необходима памет (ако няма достатъчно памет, приложението не се приема за изпълнение и не се създава процес за него). След като процесът приключи, паметта се освобождава и друг процес може да бъде зареден в това пространство. Така в произволен момент от време RAM е произволна последователност от заети и свободни области (дялове) с произволен размер. На фиг. Фигура 2.1 показва състоянието на паметта в различни моменти от време при използване на динамично разпределение. И така, в момент t0 само операционната система е в паметта, а към момент t1 паметта е разделена между 5 процеса и процес P4, когато завърши, напуска паметта. Процес P6, който пристигна в момент t3, се зарежда в пространството, освободено от процес P4.

Ориз. 2.1. Разпределение на паметта чрез динамични дялове
Функциите на операционната система, предназначени да прилагат този метод за управление на паметта, са изброени по-долу.
§ Поддържане на таблици на свободните и заетите области, в които се посочват началните адреси и размерите на областите на паметта.

§ Когато създавате нов процес, анализирайте изискванията за памет, погледнете таблицата със свободните области и изберете дял, който е достатъчно голям, за да побере кодовете и данните на новия процес. Изборът на дял може да се извърши според различни правила, например: „първият наличен дял с достатъчен размер“, „дялът с най-малък достатъчен размер“ или „дялът с най-голям достатъчен размер“.

§ Зареждане на програмата в разпределения за нея дял и настройка на таблиците със свободни и заети области. Този метод предполага, че програмният код не се движи по време на изпълнение, което означава, че настройката на адресите може да се извърши наведнъж по време на зареждане.
§ След приключване на процеса коригиране на таблиците със свободни и заети площи.

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

Разпределението на паметта чрез динамични дялове е в основата на подсистемите за управление на паметта на много мултипрограмни софтуери. операционна системаах 60-70-те години, по-специално такава популярна операционна система като OS/360.
3.3 Подвижен секции

Един метод за борба с фрагментацията е да се преместят всички заети области към по-високи или по-ниски адреси, така че цялата свободна памет да образува една свободна област (фиг. 3.1). В допълнение към функциите, които ОС изпълнява, когато разпределя паметта на динамични дялове в в такъв случайтой също трябва периодично да копира съдържанието на дяловете от едно място в паметта в друго, като коригира таблиците на свободните и заетите области. Тази процедура се нарича компресия. Компактирането може да се извършва или при всяко прекратяване на процес, или само когато няма свободен дял с достатъчен размер за новосъздадения процес. В първия случай се изисква по-малко изчислителна работа при коригиране на таблиците на свободните и заетите площи, а във втория случай процедурата за компресиране се извършва по-рядко.

Ориз. 3.1. Разпределяне на памет чрез преместване на дялове
Тъй като програмите се движат из RAM по време на изпълнение, в този случай не е възможно да се конфигурират адреси с помощта на движещ се товарач. Тук динамичният превод на адреси е по-подходящ.
Въпреки че процедурата за компресиране води до по-ефективно използване на паметта, тя може да отнеме много време, което често надвишава предимствата на този метод.

Концепцията за компресия се прилага и при използване на други методи за разпределение на паметта, когато на отделен процес се разпределя не една непрекъсната област на паметта, а няколко несвързани области на паметта с произволен размер (сегменти). Този подход беше използван в по-ранни версии OS/2, в която паметта беше разпределена на сегменти и получената фрагментация беше елиминирана чрез периодично преместване на сегментите.

4. Управление на виртуалната памет

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

4.1 Страница начин разпространение виртуален памет

При този метод всички програмни фрагменти, на които е разделена, са идентични и се наричат ​​страници. RAM е разделена на физически страници, а програмата на виртуални. Някои от виртуалните страници на програмата се намират в RAM, а някои се намират външно на диск. При достъп до виртуална страница, която в момента не е в RAM, възниква прекъсване и управлението се прехвърля към RAM мениджъра. Ако няма физическа страница (свободна), тогава мениджърът на паметта избира за замяна страницата, която не е била използвана за справка от дълго време.

Предимства: Премахване на фрагментацията на паметта, т.е. страниците са с еднакъв размер.
Недостатъци: програмата е разделена на страници произволно, без да се вземат предвид логическите връзки, което води до загуба на време при преходи между страници.
В ОС Windows паметможе да се увеличи до 4 GB, а размерът на страницата до 4 KB.
4.2 Сегментен начин разпространение виртуален памет

На практика адресното пространство е разделено на сегменти, като се вземе предвид семантичното значение. Отделен сегмент може да бъде подпрограма или масив от данни. Когато даден процес се зареди в RAM, се поставят само част от сегментите и ОС търси непрекъсната секция с определен размер. Ако няма достатъчно място в RAM за зареждане на сегмент, тогава част от сегмента от RAM се прехвърля на диск във файла за виртуална памет. ОС (в частност мениджърът на паметта) избира за разтоварване сегмента, който не е бил използван най-дълго време. За всеки сегмент в RAM се съхраняват информационни структури, въз основа на които ОС избира сегменти за разтоварване.

- относно местоположението на сегмента (в RAM или на твърдия диск);
- права за достъп;
- знак за достъп до сегмента (т.е. сегментът е бил използван дълго време или наскоро).
Предимството е, че това беше първият метод за разпространение с помощта на файл на страница и също така беше възможно да се задават права за достъп до сегменти.
Недостатъци: загуба на процесорно време за зареждане на сегменти и обработка на информационни структури, информационни структури изискват памет, дефрагментиране на паметта.
4.3 Сегментно - страничен начин разпространение виртуален памет
IN този методпрограмата е разделена на логически завършени части и сегменти на страници и адресът на страницата се състои от номера на сегмента, докато сегментът, когато се зареди в RAM, се поставя изцяло, но страниците от един сегмент могат да заемат несъседни страници.
Предимства: Намалява времето за зареждане на страницата, но изисква изчислителни ресурсиза съхраняване на информационни структури - методът се използва в скъпи операционни системи.
5. Подсистема за управление на паметта в MS-DOS

MS-DOS е операционна система, която работи в реалния режим на процесора i86, което включва използване на адресно пространство от само 1 MB. Всъщност компютрите на IBM гарантирано имат само 640 KB основна памет, докато по-високите адреси на паметта са заети от BIOS и видео паметта, въпреки че сред тях има разпръснати части от RAM, наречени UMB (горен блок на паметта).

Адресът в реален режим е написан във формат [сегмент: отместване], но тук сегментът не е селектор, адресиращ ред на сегментна таблица, а просто номер на параграф от паметта (1 параграф = 16 байта). Следователно можем да предположим, че MS-DOS използва само физически адреси.

По принцип програмите, работещи под MS-DOS, имат достъп до памет над 1 MB, но това изисква специален драйвер за разширена памет.

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

Ориз. 4 Основни области на паметта на MS-DOS OS

Долната част на паметта е заета от модули на ОС: манипулатори на прекъсвания, резидентна част на командния интерпретатор, драйвери на устройства. Някои системни програми могат да бъдат заредени в горния блок памет (над 640 KB) с цел икономия. Всичко останало в средата може да бъде предоставено на потребителския процес.

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

Част системна памети цялата потребителска област е разделена на съседни блокове, чийто размер е кратен на параграф. Преди началото на всеки блок памет има контролен блок памет (MCB, Memory Control Block), който заема един параграф и съдържа следните данни:

· знак, който определя дали това е последният блок памет или ще има още блокове след него (съответно буквата `Z" или `M");

· адрес на PSP програмата, която притежава този блок (0 означава свободен блок);

· размер на блока в параграфи;

· име на програмата собственик (до 8 знака); това поле е излишно (знаейки програмата PSP, можете да намерите името на файла), вероятно е добавено, за да заеме по някакъв начин празните байтове на параграфа MCB.

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

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

Когато една програма стартира, системата й разпределя два блока памет: първо малък блок за променливи на средата, след това най-големият сред останалите свободни блокове за самата програма (PSP блок). Обикновено този блок заема цялата свободна памет. Това решение е приемливо, тъй като няма други кандидати за памет.

Защо блокът на средата е разпределен преди блока PSP?

Когато една програма се прекрати, системата сканира всички блокове памет и освобождава тези, чийто собственик е програмата, която се прекратява. Изключение е случаят на завършване с резидентна инсталация, в който случай PSP блокът не се освобождава, а се намалява до зададения размер. В бъдеще този блок остава зает, докато системата не се рестартира.

MS-DOS предоставя на потребителя функции, които ви позволяват да извършвате основни операции с блокове памет.

· Изберете блок с посочения размер. Ако няма свободен блок с достатъчен размер, системата връща максималния размер, който може да бъде разпределен.

· Освобождаване на предварително разпределен блок.

· Промяна на размера на блока. Намаляването на блок винаги е възможно, увеличаването му само ако след този блок има свободен блок с достатъчен размер.

Един от малкото случаи, когато тези функции са полезни, е при стартиране на създаден процес. Системата трябва да има достатъчно свободно място, за да побере блока за среда и PSP блока на изтеглената програма. Въпреки това, както бе споменато по-горе, цялата свободна памет обикновено се разпределя към PSP блока на текущата програма. Следователно, преди да стартира създадения процес, програмата трябва да намали собствения си PSP блок, оставяйки си необходимия минимум.

Заключение
След като анализирахме общите принципи на управление на паметта, става ясно, че в най-простите системи няма размяна или страниране на паметта. Програма, заредена в паметта, остава там, докато не бъде завършена. Някои операционни системи не позволяват повече от един процес да се съхранява в паметта, докато други поддържат многозадачност.
Библиография
1. Olifer V.G. Мрежови операционни системи: учебник за университети / V.G. Олифер, Н.А. Олифер. - Санкт Петербург: Питър, 2009. - 539 с.: ил.
2. Попов И.И. Операционни системи, среди и обвивки / I.I. Попов. - М.: Издателство "ФОРУМ: ИНФА-М", 2010. - 400 с. - (Поредица "Професионално образование")
Публикувано на Allbest.ru

Подобни документи

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

    лекция, добавена на 24.01.2014 г

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

    презентация, добавена на 27.12.2010 г

    Разпределение на RAM чрез фиксирани, динамични и преместваеми дялове. Разпределение с помощта на външна памет. Принципи на работа матричен принтер. Проектиране на символи и разработване на програма за тяхното отпечатване.

    курсова работа, добавена на 01.07.2011 г

    Подобряване на параметрите на модула памет. Функциониране и взаимодействие на операционната система с RAM. Анализ на основните видове и параметри на RAM. Софтуерна частс обработка на изпълнение на команди и поставяне в RAM.

    курсова работа, добавена на 12/02/2009

    основната задача компютърна система. Виртуални адресни пространства на няколко програми. Класификация на методите за разпределение на паметта. Зависимост на натоварването на процесора от броя на задачите и интензивността на I/O. Схема на работа на кеш паметта.

    презентация, добавена на 14.11.2012 г

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

    тест, добавен на 23.12.2016 г

    Разпределение на памет чрез фиксирани и динамични, както и подвижни дялове, характеристики на този процес в Windows. Функция VirtualAlloc: прехвърлена и запазена памет. Разпределение на паметта чрез функцията malloc, методология и анализ на резултатите.

    тест, добавен на 12/01/2013

    Сравнителен анализстатична и динамична памет. Производителност и консумация на енергия на статичната памет. Капацитет на паметта на чипа. Времеви диаграми за памет за четене и запис. Синхронни и асинхронни чипове памет. Режими на модул памет.

    презентация, добавена на 27.08.2013 г

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

    курсова работа, добавена на 31.05.2013 г

    Организация на компютърната памет и прости веригиуправлявайки го. Принципи на свързване на адреси. Динамично разпределение и размяна. Сегментна и сегментно-странична организация на паметта. Изваждане на рядко използвана страница. Описание на работата с програмата.

Функции на операционните системи за управление на компютърните ресурси.

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

Основните ресурси на съвременните изчислителни системи: процесори и основна памет. Ресурсите се споделят между процесите. Процес (задача) – програма в етап на изпълнение. Програмата е статичен обект, който е файл с кодове и данни. Процесът е динамичен обект, който възниква в операционната система, след като потребителят или самата операционна система реши да „изпълни програма за изпълнение“, тоест да създаде нова единица изчислителна работа.

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

Управлението на ресурсите включва решаване на следните общи задачи, които не зависят от вида на ресурса:

1 - планиране на ресурсите - т.е. определяне кой процес, кога и в какво количество (ако ресурсът може да бъде разпределен на части) трябва да бъде разпределен този ресурс;

2 - задоволяване на заявки за ресурси;

3 - проследяване на състоянието и отчитане на използването на ресурса - тоест поддържане на оперативна информация за това дали ресурсът е зает или свободен и какъв дял от ресурса вече е разпределен;

4 - разрешаване на конфликти между процесите.

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

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

Функциите за управление на паметта на ОС включват проследяване на свободната и използваната памет; разпределя памет за процеси и освобождава памет, когато процесите прекратят; защита на паметта; изместване на процеси от RAM на диск, когато размерът на основната памет е недостатъчен, за да побере всички процеси в нея, и връщането им в RAM, когато се освободи място в нея, както и задаване на програмни адреси към определена област от физическата памет.

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

всеки процес.

Един от най-популярните методи за управление на паметта в съвременните операционни системи е използването на механизъм за виртуална памет, при който всички данни, използвани от програма, се съхраняват на диск и, ако е необходимо, се нанасят на части (сегменти или страници) във физическа памет . Това позволява на програмиста да напише програма, сякаш има голяма, хомогенна RAM на свое разположение, често значително надвишаваща количеството налична физическа памет. При преместване на код и данни между RAM и диск, подсистемата на виртуалната памет превежда виртуални адреси, получени в резултат на компилиране и свързване на програма, във физически адреси на RAM клетки. Много е важно всички операции за преместване на кодове и данни между RAM и дискове, както и преобразуването на адреси, да се извършват от ОС прозрачно за програмиста.

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

Днес програмите растат по-бързо от паметта, така че управление на паметта на компютърае много важен въпрос. Това е така, защото компютърната памет има йерархична структура: малка, много бърза, летлива, летлива RAM (RAM) и енергонезависимо пространство на (твърдия диск). Управлението на компютърната памет се свежда до координиране (ОС) използването на всички тези компоненти. Тази част от операционната система, която отговаря за управлението на паметта на компютъра, тоест следи коя част от нея се използва в момента, разпределя памет за процеси и освобождава ресурси след тяхното завършване и управлява обмена на данни между RAM и диск е наречен мениджър на паметта.

Има два класа системи за управление на компютърна памет. Първите, при липса на достатъчно RAM за едновременно съхраняване на всички програми, се преместват между RAM паметта и диска на компютъра по време на тяхното изпълнение, разменяйки процесите изцяло (суапинг) или страница по страница (странициране). Вторият клас системи намалява управлението на компютърната памет до увеличаване на размера на RAM. Например, системите налагат големи изисквания към неговия размер.

Управлението на паметта на компютъра за еднозадачна система без страниране на диск се свежда до факта, че само един (процес) се изпълнява в даден момент и паметта се споделя между програмите и операционната система. Тоест при получаване на командата ОС се зарежда нова програмав паметта, записвайки го върху предишния.

Най-лесният начин да постигнете многозадачност е да разделите паметта на н, вероятно неравни секции. Когато задание влезе в паметта, то се поставя във входната опашка до най-малкия дял, който е достатъчно голям, за да побере заданието, и всяко неизползвано място в дяла се губи. В същото време почти няма опашка за голяма секция и много задачи се подреждат за малки секции. Следователно управлението на компютърната памет във втория метод се състои в организиране на една обща опашка за всички дялове. След като даден дял бъде освободен, в него може да се зареди задача, която е по-близо до главата на опашката и е подходяща за изпълнение в този дял. Всеки път след освобождаване на дял, опашката търси най-голямата задача за този дял и именно тази е избрана за обработка. Това обаче премахва малките задачи от обработката. Следователно задача, която има право да бъде избрана за обработка, може да бъде пропусната не повече от кведнъж. Когато задача бъде пропусната, една се добавя към брояча. Ако стойността на брояча стане равна к, задачата вече не може да бъде игнорирана.

Понякога няма достатъчно RAM, за да побере всички активни процеси, и тогава излишните процеси трябва да се съхраняват на диск и да се прехвърлят в паметта за обработка. Управлението на компютърната памет в този случай зависи отчасти от наличните хардуер. Най-простата стратегия, т.нар размяна(swapping) се състои в това, че всеки процес се прехвърля изцяло в паметта, работи известно време и след това се връща изцяло на диска. След което може да се върне отново в паметта, като има различно разположение. Следователно неговите адреси трябва да бъдат преконфигурирани или софтуерно по време на стартиране, или хардуерно по време на изпълнение на програмата.

Управление на компютърната памет, т.нар виртуална памет, позволява на програмите да работят дори когато са само частично в RAM. В този случай комбинираният размер на програмата и данните може да надхвърли размера на наличната физическа памет на компютъра. Операционната система съхранява частите от програмата, които се използват в момента, в RAM, а останалите на диска. В този случай части от програмата, разположени на диска и използвани от паметта, могат да бъдат разменени, ако е необходимо.

Функции на ОС за управление на паметтав мултипрограмна система са:

· проследяванесвободна и използвана памет,

· разпределянепамет за процеси и освобождаване на памет при прекратяване на процеси,

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

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

В допълнение към първоначалното разпределяне на памет за процесите, когато са създадени, ОС трябва да се справи и с динамичното разпределение на паметта, т.е. изпълнява заявки на приложения за допълнителна памет по време на изпълнение. След като приложението вече не се нуждае от допълнителна памет, то може да го върне в системата. Разпределяне на памет с произволна дължина в случайни моментивремето от пула с споделена памет води до фрагментацияи в резултат на това до неефективното му използване. Ето защо дефрагментиранеПаметта също е функция на ОС.

Докато операционната система работи, тя често трябва да създава нови информационни структури за услуги, като дескриптори на процеси и нишки, различни таблици за разпределение на ресурси, буфери, използвани от процеси за обмен на данни, синхронизиране на обекти и т.н. Всички тези системни обекти изискват памет. В някои операционни системи определено фиксирано количество памет се запазва предварително (по време на инсталацията) за системни нужди. Други операционни системи използват по-гъвкав подход, при който паметта се разпределя динамично за системни цели. В този случай различните подсистеми на ОС създават свои собствени таблици, обекти, структури и т.н. обърнете се към подсистема за управление на паметтас молби.

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

Видове адреси

За идентифициране на променливи и команди се използват символни имена (етикети), виртуални адреси и физически адреси (Фигура 2.7).

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

· Виртуални адресиразработва преводач, който превежда програмата на машинен език. Тъй като по време на предаването в общ случайНе е известно къде ще бъде заредена програмата в RAM, след което транслаторът присвоява виртуални (условни) адреси на променливи и команди, обикновено приемайки по подразбиране, че програмата ще бъде поставена, започвайки от адрес нула.

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

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

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

Използва се в различни ОС различни начиниструктуриране на виртуалното адресно пространство (VAS). В някои операционни системи VAP на процес, като физическа памет, се представя като непрекъснат линеенпоследователности от виртуални адреси. В този случай виртуалният адрес е едно число, представляващо отместването спрямо началото на VAP. Този тип адрес се нарича линеен виртуален адрес.

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

Има още сложни начиниструктуриране на VAP, когато виртуален адрес се формира от три или дори повече числа.

Задачата на операционната система е да картографира отделни VAP на всички едновременно работещи процеси в обща физическа памет. В този случай операционната система показва или целия VAP, или само определена част от него. Процедурата за преобразуване на виртуални адреси във физически трябва да бъде възможно най-прозрачна за потребителя и програмиста.

Има два фундаментално различни подхода за преобразуване на виртуални адреси във физически.

Ориз. 2.7. Видове адреси

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

Втори начинсе крие във факта, че програмата се зарежда в паметта непроменена във виртуални адреси, докато операционната система записва отместването на действителното местоположение на програмния код спрямо виртуалното адресно пространство. По време на изпълнение на програмата, всеки път, когато има достъп до RAM, виртуалният адрес се преобразува във физически адрес.. Вторият метод е по-гъвкав; той позволява програмата да бъде преместена по време на нейното изпълнение, докато движещият се зареждащ механизъм здраво свързва програмата с областта на паметта, първоначално разпределена за нея. Използването на движещ се буутлоудър обаче намалява разходите, тъй като всеки виртуален адрес се превежда само веднъж по време на зареждане, а във втория случай всеки път, когато се осъществява достъп до даден адрес.

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

2. Методи за разпределение на паметта без използване на дисково пространство




Ориз. 2.8. Класификация на методите за разпределение на паметта

Всички методи за управление на паметта могат да бъдат разделени на два класа: методи, които използват движението на процеси между RAM и диск, и методи, които не го използват (Фигура 2.8). Да започнем с последното, повече прост класметоди.

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

Повечето по прост начинУправлението на RAM е да го разделите на няколко секции с фиксиран размер. Това може да се направи ръчно от оператора по време на стартиране на системата или по време на нейното генериране. Следващата задача, получена за изпълнение, се поставя или в обща опашка (Фигура 2.9a), или в опашка към определен раздел (Фигура 2.9b).

Подсистемата за управление на паметта в този случай изпълнява следното: задачи:

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



зарежда програмата и конфигурира адреси.

Ориз. 2.9. Разпределение на паметта чрез фиксирани дялове:
а - с обща опашка; b - с отделни опашки

В случай на очевидно предимство- лекота на изпълнение - този метод има значителни недостатък- твърдост. Тъй като във всяка секция може да се изпълни само една програма, нивото на мултипрограмиране е предварително ограничено от броя на секциите, независимо от размера на програмите. Дори ако програмата е малка, тя ще заема целия дял, което води до неефективно използване на паметта. От друга страна, дори ако капацитетът на RAM на машината й позволява да изпълни определена програма, разделянето на паметта не й позволява да го направи.

2.2. Разпределяне на памет чрез променливи дялове

В този случай паметта на машината не е предварително разделена на секции. Първоначално цялата памет е свободна.На всяка новопристигнала задача се разпределя паметта, от която се нуждае. Ако няма достатъчно памет, задачата не се приема за изпълнение и остава в опашката. След като задачата приключи, паметта се освобождава и друга задача може да бъде заредена в това пространство. Така в произволен момент от време RAM е произволна последователност от заети и свободни области (дялове) с произволен размер.

Фигура 2.10 показва състоянието на паметта в различни моменти от време при използване на динамично разпределение. Така че в момента t 0 само операционната система е в паметта, а в момента t 1 паметта е разделена между 5 задачи и задача P4, когато е завършена, напуска паметта. Освободеното място след задача P4 се запълва със задача P6, пристигнала в момент t 3 .

Задачи на операционната системапри прилагането на този метод за управление на паметта са:

· поддържане на таблици със свободни и заети области, които показват началните адреси и размерите на областите на паметта,

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

· след изпълнение на задачата актуализиране на таблиците със свободни и заети площи.

Кодът не се движи по време на изпълнение, което означава, че еднократни корекции на адреса могат да бъдат направени чрез използването на движещ се зареждащ механизъм. може да се извърши според различни правила, като например „първият дял, който е с достатъчен размер“, или „дялът, който има най-малкия достатъчен размер“, или „дялът, който има най-големия достатъчен размер“. Всички тези правила имат своите предимства и недостатъци.



Избор на раздел за новопостъпила задачаможе да се извърши според различни правила, като например „първият дял, който е с достатъчен размер“, или „дялът, който има най-малкия достатъчен размер“, или „дялът, който има най-големия достатъчен размер“. Всички тези правила имат своите предимства и недостатъци.

Ориз. 2.10. Разпределение на паметта чрез динамични дялове

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

2.3. Подвижни секции



Един от методите за борба с фрагментацията е да се преместят всички заети области към по-високи или по-ниски адреси, така че цялата свободна памет да образува една свободна област (Фигура 2.11). В допълнение към функциите, които ОС изпълнява, когато разпределя паметта в променливи дялове, в този случай тя трябва също да копира съдържанието на дяловете от едно място в паметта на друго от време на време, коригирайки таблиците на свободните и заетите области. Тази процедура се нарича "компресия".

Ориз. 2.11. Разпределяне на памет чрез преместване на дялове

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

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

Лекция 8. Управление на паметта в ОС

4.4.3. Стратегии за разположение

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

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

В операционните системи има два вида памет: основна (първична) и външна (вторична).

Главна памет(основна памет) - RAM централен процесорили част от него, представляваща едно пространство на паметта.

Външна памет(external storage) - памет, в която данните са достъпни за централния процесор чрез I/O операции.

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

В допълнение към основната и външната памет, съвременните компютри имат допълнителна високоскоростна памет, т.нар кеш-памет.

И трите от тези видове памет формират йерархия на паметтакомпютър (виж Фиг. 4.1).

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

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

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

Операционните системи използват следните видове представяне на основната памет:

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

Основната памет може да се използва по следните начини:

  • поставяне в паметта само на една потребителска програма в даден момент;
  • поставяне на няколко потребителски програми в паметта едновременно;
  • поставяне на потребителски програми в специфичен предварително определен раздел от основната памет;
  • поставяне на всяка потребителска програма в едно непрекъснато (просто свързано) основно пространство на паметта;
  • поставяне на потребителската програма в несъседни области на RAM (в този случай операционната система разделя поставените там програми на отделни блокове и осигурява връзката на тези блокове един с друг).

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

Независимо кой дизайн на паметта е възприет за конкретна операционна система, е необходимо да се реши какви стратегии трябва да се използват за постигане на оптимална производителност.

Стратегии за управление на паметта определя как паметта ще работи с конкретна организационна схема при различни подходи за решаване на следните проблеми:

· кога да поставите нова програма в паметта;

· къде в основната памет ще бъде поставена следващата програма;

· как да поставите следващата програма в паметта (с минимизиране на загубата на памет или максимизиране на скоростта на поставяне);

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

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

Стратегиите за управление на паметта попадат в следните категории:

· стратегии за вземане на проби;

· стратегии за поставяне;

· стратегии за заместване.

От своя страна стратегиите за вземане на проби са разделени на две подкатегории:

· стратегии за вземане на проби при поискване (on-demand);

· стратегии за предварително извличане.

Стратегии за вземане на проби тяхната цел е да определят кога следващата програма (или програмен блок) или данни трябва да бъдат „избутани“ в основната памет.

Стратегии за разположение Целта им е да определят къде в основната памет да бъде поставена входящата програма. Най-често срещаните са стратегии за поставяне, които прилагат принципите за заемане на „първоподходящ“, „най-подходящ“ и „най-малко подходящ“ размер на свободната област на паметта.

Стратегии за заместване тяхната цел е да определят кой блок от програма или данни трябва да бъдат премахнати („избутани“) от основната памет, за да се направи място за новопристигащи програми или данни.

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

Кохезивно разпределение на паметта - такова разпределение на основната памет на компютъра, при което всяка програма заема един непрекъснат (свързан) блок от клетки на паметта.

Прекъснато разпределение на паметта - такова разпределение на основната памет на компютър, при което потребителската програма е разделена на няколко блока (сегменти, страници), които могат да бъдат разположени в основната памет в области, които не са непременно съседни една на друга (в не- съседни зони). Това гарантира по-ефективно използване на основното пространство в паметта.

Ефективността на конкретна стратегия за поставяне може да бъде оценена с помощта на коефициента на използване на паметта h

(4.1)

където V p е количеството памет, заето от потребителски програми; V op - общият обем на основната памет; V os - количеството памет, заемано от операционната система; V o - количеството памет, налично за разпространение.

4.2. Методи за кохезивно разпределение на основната памет

4.2.1. Сплотено разпределение на паметта за един потребител

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

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

Организацията на паметта с кохерентно разпределение за един потребител е показана на фиг. 4.2.

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

h с1 =V p /V o , (4.2)

където V p е размерът на потребителската програма; V o - количеството основна памет на компютъра, налично за разпространение.

Функциите на ОС в този случай са:

· заделяне на необходимото място в паметта на програмата;

· защита на паметта;

· освобождаване на памет.

Функцията за разпределение на паметта се свежда до предоставяне на програмата на всички достъпна паметКОМПЮТЪР.

Защитата на паметта в системи с една програма включва защита на областите на паметта, заети от операционната система, от влиянието на потребителските програми. Тази функция се реализира с помощта на един регистърна граница, вграден в централния процесор. Граничният регистър съдържа или високия адрес на операционната система на инструкцията, или ниския адрес на достъпната от програмата главна памет (начален адрес на програмата). Ако потребителска програма се опита да влезе в областта на операционната система, се генерира прекъсване за защита на паметта и програмата се срива.

4.2.2. Кохезивно разпределение на паметта за мултипрограмна обработка

При мултипрограмна обработка в паметта на компютъра се поставят няколко задачи наведнъж. Разпределянето на паметта между задачите в този случай може да се извърши по следните начини:

· разпределение по фиксирани секции;

· разпределение по променливи дялове;

· разпределение със замяна.

Разпределение по неподвижни прегради има две модификации:

а) със зареждане на програми в абсолютни адреси;

б) със зареждане на преместваеми модули.

При зареждане на преместваеми модули цялата RAM на машината се разделя на определено количество секциификсиран размер. Размерите на дяловете може да не са еднакви. Във всеки раздел може да бъде публикувана само една задача.

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

При зареждане на преместваеми модули, дялът, в който ще бъде поставена задачата, се определя автоматично от операционната система в съответствие с внедрената в нея стратегия за избор на дял („първи подходящ“, „най-подходящ“, „най-неподходящ“), или се указва на операционната система с помощта на специални команди език за управление на задачи.

И в двата случая заданието има изключителна собственост върху цялото количество RAM в дяла, в който е поставено от операционната система.

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

(4.3)

(4.4)

където h СMi е коефициентът на използване на паметта на i-тата секция; V Оi - размер на i-тото сечение; V Pi - дължина на програмата, поставена в i-та секция; N Ф - брой секции; V O - общото количество RAM, налично за разпространение.

Основният недостатък на разпределянето на памет чрез фиксирани дялове е неефективното използване на ресурсите на изчислителната система поради възможната поява на дълги опашки от задачи, чакащи определен дял да бъде освободен, докато други дялове са празни. Подобна ситуация е показана на фиг. 4.3. Задачи, които чакат дял C да бъде освободен, могат да бъдат поставени в дялове A или B, но операционната система не им позволява да направят това, т.к. контролната информация посочва конкретната секция, в която трябва да бъдат изпълнени тези задачи - секция C.

Методът за разпределение на паметта чрез фиксирани секции се използва в операционните системи EC OS и IBM/360 в режим MFT, при който програмите се зареждат от преместваеми модули.

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

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

Фрагментация на паметта - появата в паметта на компютъра на редуване на заети и незаети (свободни) секции на RAM.

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

На фиг.4.4. показана е проявата на фрагментация на RAM.

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

(4.5)

Където V di е размерът на i-тата „дупка“, т.е. i-та секция от свободна памет, ограничена от потребителски програми; N D - брой "дупки", т.е. области на свободна памет, разположени между потребителските програми; V o - количеството RAM, налично за разпространение.

Фрагментацията на паметта е нарушение на просто свързаното пространство на свободната памет на компютъра, което води до намаляване на ефективността на използването на паметта като един от основните ресурси на компютъра.

Разпределение на паметта по променливи секции предназначени да повишат ефективността на използването на RAM на компютъра. Същността на начина, по който променливите дялове разпределят паметта, е, че на заданията, когато пристигнат, се разпределя количеството памет, което изискват, т.е. Размерът на RAM секцията, разпределена за всяко задание, е точно размера на това задание. Следователно „прекомерното използване“ на паметта, както се случва, когато се разпределя от фиксирани дялове, не се наблюдава при този метод.

Има две модификации на метода на разпределение чрез променливи дялове:

· разпределение на променливи неподвижни прегради;

· разпределение на променливи чрез преместване на дялове.

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

Когато пристигне следващата задача, паметта за нея се разпределя на етапа на дългосрочно планиране и разпределянето на паметта се извършва според информацията от счетоводната таблица „дупки“ в съответствие със стратегията за поставяне, приета в ОС („първи подходящ“ , „най-подходящ“, „най-неподходящ“). Ако разпространението е успешно, ОС настройва и двете таблици - разпределени и свободни области.

След завършване на която и да е задача, секцията с памет, заета от нея, се освобождава и операционната система коригира таблицата с разпределени области, изтривайки от нея информация за изпълнената задача, а също така въвежда данни за новопоявилата се „дупка“ в таблицата свободни площи.

Помислете за следния пример. Нека първоначалното разпределение на паметта по променливи секции се извърши, както е показано в таблици 4.1, 4.2 и фиг. 4.5а. След поставяне на задачи A, B, C и D остава свободна зона с такъв размер, че нито една от програмите, които продължават да стоят на опашка, няма да се побере в тази област.

Таблица 4.1.Таблица за разпределение

номер на раздел,

защитен ключ

Име на раздел

Размер

Адрес

състояние

100K

200K

100K

400K

100K

50K

150K

350K

450K

850K

Разпределени

Разпределени

Разпределени

Разпределени

Разпределени

Таблица 4.2.Таблица със свободни площи

Свободна стая

регион

Размер

Адрес

състояние

100K

950K

На разположение

Да приемем, че след известно време задачите A и C са изпълнени (виж Фиг. 4.5b). Таблиците с площи приемат формата, показана в табл. 4.3 и 4.4.

Таблица 4.3.Таблица за разпределение: задача А е завършена

номер на раздел,

защитен ключ

Име на раздел

Размер

Адрес

състояние

200K

400K

100K

150K

450K

850K

празна

Разпределени

празна

Разпределени

Разпределени

Таблица 4.4.Таблица със свободни зони: задача А приключи

Свободна стая

регион

Размер

Адрес

състояние

100K

100K

100K

100K

350K

950K

На разположение

На разположение

На разположение



Можете да видите, че въпреки наличието на 274K свободна памет, достатъчна за поемане на задача E, която е първа в опашката, ОС не може да направи това, т.к. свободната памет е разделена на два фрагмента от 100K всеки, в които е невъзможно да се поставят програми, стоящи на опашката. Този пример илюстрира основния недостатък на метода за разпределение на променливи с неподвижни дялове - тенденцията към фрагментиране на основната памет, което намалява ефективността на изчислителната система.

При разпределяне на паметта променливи подвижни секцииОперационната система извършва действия, наречени уплътняване на паметта,състоящ се в преместване на всички заети области към единия или другия край на основната памет. Благодарение на това, вместо голям брой малки „дупки“, образувани при използване на разпределение чрез променливи неподвижни секции, се формира единична (свързана) секция от свободна памет. Фигура 4.5c показва резултата от уплътняването, когато програми B, D и E, разположени в основната памет, се преместват в свободни области след завършване на програми A и C. Свободната памет сега представлява непрекъсната област с размер 274K, в който ОС може да постави поставената на опашка задача F. Този процес също се извиква дефрагментиранепамет.

Дефрагментирането на паметта, използвано при разпределяне чрез преместване на дялове, има своите недостатъци:

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

Разпределяне на памет със суап (от английски swapping) се характеризира с факта, че за разлика от разгледаните по-рано методи на разпространение, потребителските програми не остават в основната памет, докато не бъдат завършени. IN най-простата системапри размяна само едно потребителско задание е в основната памет наведнъж и го заема, докато може да се изпълни, след което освобождава както паметта, така и процесора за следващото задание. Така цялата памет се разпределя за една задача за кратък период от време, след което в даден момент тази задача се извежда (избутва, т.е. „изпомпва се“) и се вмъква следващата задача (избутва се, т.е. „изпомпва се“). В обичайния случай всяка задача, дори преди нейното завършване, ще бъде изпомпвана от външна памет в основната памет и обратно много пъти.

За да разреши размяната във външна памет, операционната система създава една или повече суап файлове, където се съхраняват RAM изображения на текущи потребителски задачи. Методът за разпределение на паметта с размяна се използва в най-простите операционни системи, работещи в режим на споделяне на времето.

4.2.3. Стратегии за съхраняване на информация в паметта

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

  • разположение с избор на първия подходящ (стратегия „първи подходящ“):
  • поставяне с избор на най-подходящия (стратегия „най-подходящ”);
  • алгоритъм с избор на най-неподходящата („най-неподходяща” стратегия).

Стратегия първи дошъл първи обслужен се състои от извършване на следните стъпки:

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

„Най-подходяща“ стратегия изпълнява следната последователност от действия:

  • подредете масата със свободни площи в ред увеличаващ се размерсвободни площи:

„Най-неподходящата“ стратегия извършва следните действия:

  • подредете масата със свободни площи в ред намаляващи размерирегиони;
  • поставете информация в първата налична област на свободна памет с поне необходимия размер.

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

4.3. Организация на виртуалната памет

4.3.1. Основни концепции за виртуална памет

Срок виртуална паметобикновено се свързва с възможността за адресиране на пространство на паметта, много по-голямо от капацитета на първичната (реална, физическа) памет на конкретен компютър. Концепцията за виртуална памет е реализирана за първи път в машина, създадена през 1960 г. в университета в Манчестър (Англия). Системите с виртуална памет обаче станаха широко разпространени едва в компютрите от четвъртото и следващите поколения.

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

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

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

Извикват се адреси, които действително съществуват в първичната памет реални (физически) адреси.

Извиква се диапазонът от виртуални адреси, до които има достъп работещ процес виртуално адресно пространство V на този процес.

Диапазонът от реални адреси, които съществуват на определен компютър, се нарича реално адресно пространство Rтози компютър.

Въпреки че процесите имат достъп само до виртуални адреси, те всъщност трябва да работят с реална памет. За установяване на съответствие между виртуални и реални адреси са разработени механизми за динамична адресна трансформация DPA (или DAT - от англ. Dynamics Address Transformation), осигуряващи преобразуването на виртуалните адреси в реални по време на изпълнение на процеса. всичко подобни системиимат обща собственост(виж Фиг. 4.6) - Непрекъснатите адреси във виртуалното адресно пространство на процеса не е задължително да са съседни в реалната памет.

Това свойство се нарича „изкуствено съседство“. Това освобождава потребителя от необходимостта да взема предвид физическата памет с нейните уникални характеристики.

Виртуалната памет се изгражда, като правило, по схема на две нива (виж фиг. 4.7).

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

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

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

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

Информацията, преместена от виртуална памет в реална памет, се групира в блокове, а системата следи къде са разпределени различни блокове виртуална памет в реалната памет. Размерът на блока влияе върху това каква част от реалната памет DPA ще използва непродуктивно за своите цели.

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

Адресите в системата за блоково картографиране са двукомпонентен (двуизмерен).За достъп до конкретен елемент от данни програмата посочва блока, в който се намира този елемент, и отместването на елемента спрямо началото на блока (виж фиг. 4.8). Виртуалният адрес n се определя с помощта на подредена двойка (b, d), където b е номерът на блока, в който се намира съответният елемент от данни, а d е отместването от началния адрес на този блок.

Преобразуването на адреса на виртуалната памет n =(b, d) в адреса на реалната памет r се извършва по следния начин (виж фиг. 4.9). Всеки процес има свой собствен блок дисплей маса,които операционната система поддържа в реална памет. Реалният адрес a на тази таблица се зарежда в специален регистър на централния процесор, наречен началния адресен регистър на таблицата за картографиране на блока на процеса.


Таблиците за съпоставяне на блокове съдържат по един ред за всеки процесен блок и тези блокове са последователни: първо блок 0, след това блок 1 и т.н. Номерът на блок b се сумира с началния адрес a на таблицата, образувайки реалния адрес на реда на таблицата за блок b. Намереният ред съдържа реалния адрес b на началото на блок b в реалната памет. Към този начален адрес b се добавя отместването d, така че да се формира желаният реален адрес r=b’+d.

Всички методи за картографиране на блокове, използвани в системи с организации на сегменти, страници и комбинирани сегменти на страници, са подобни на схемата за картографиране, показана на фиг. 4.9, наречена схема за директно картографиране.

4.3.2. Странична организация на виртуалната памет

Виртуален адрес в организация на паметта на чиста страница е подредена двойка (p, d), където p е номерът на страницата във виртуалната памет, а d е отместването в рамките на страница p. Процес може да се изпълни, ако текущата му страница е в първичната памет. Страниците се презаписват от външната памет в основната памет и се поставят в нея в блокове, наречени рамки за страниции има точно същия размер като входящите страници. Страничните рамки започват в реалната памет на адреси, които са кратни на фиксирания размер на страницата. Входящата страница може да бъде поставена във всяка налична страница.

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

r - знак за наличие на страница в първичната памет (r=0 - няма страница в първичната памет; 1 - страницата е в първичната памет):

S - адрес на страница във външна памет (при r=0):

p’ е номерът на рамката на страницата в първичната памет, където виртуална страницас номер p.

4.3.3. Сегментна организация на виртуалната памет

Виртуалният адрес в сегментирана организация на виртуална памет е подредена двойка n = (s, d), където s е номерът на сегмента на виртуалната памет, а d е отместването в този сегмент. Един процес може да се изпълни само ако текущият му сегмент е в първичната памет.Сегментите се прехвърлят от външна памет към първична памет като цяло. Всички клетки, принадлежащи към сегмент, заемат съседни първични адреси на паметта. За поставяне на сегменти, идващи от външна памет в свободни области на първичната памет, се използват същите стратегии за поставяне, както при разпределянето на променливи неподвижни дялове - „първи подходящ“, „най-подходящ“, „най-неподходящ“ (вижте раздел 4.2.3) . Динамично преобразуваневиртуални адреси към реални адреси се извършват в съответствие със схемата за директно картографиране, показана на фиг. 4.9.

4.3.4. Странично-сегментна организация на виртуалната памет

Системите със страница-сегментна организация имат предимствата и на двата метода за внедряване на виртуална памет. Сегментите обикновено съдържат цял ​​брой страници и не е необходимо всички страници в сегмента да са в първичната памет по едно и също време, а съседните страници на виртуалната памет не е необходимо да са съседни в първичната памет. В система със страница-сегментна организация се използва трикомпонентно (триизмерно) адресиране. Виртуалният адрес n се дефинира тук като подредена тройка n =(s, p, d), където s е номерът на сегмента, p е номерът на страницата и d е отместването в страницата, където се намира желаният елемент.

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

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

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

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

4.4. Управление на виртуалната памет

4.4.1. Стратегии за управление на виртуалната памет

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

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

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

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

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

Свойството локалност се проявява както във времето, така и в пространството.

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

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

Свойството локалност се наблюдава не само в приложните програми, но и в работата на програмите на операционната система. Това свойство е по-скоро емпирично (наблюдавано на практика), отколкото теоретично обосновано. Локалността не може да бъде гарантирана по никакъв начин, но вероятността е доста висока. Най-важната последица от локализацията е, че една програма може да работи ефективно, ако има подмножество от нейните най-„популярни“ страници или сегменти в първичната памет.

За да се оцени ефективността на стратегиите за управление на паметта в операционните системи, се използва индикаторът пространство-време, изчислен по формулата

S = VC T, (4.6)

където S е индикаторът "пространство-време"; V е количеството първична памет, заета от процеса; T е продължителността на времето, което процесът чака, за да размени необходимата страница или сегмент.

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

4.4.2. Push (pump) стратегии

Следните стратегии се използват за контролиране на натискането:

· тласък (помпа) при поискване (при поискване);

· бутане (изпомпване) с очакване (напреднало).

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

ДА СЕ положителни страниотнасям се:

  • гарантира се, че само онези страници (сегменти), които са необходими за работата на процеса, ще бъдат презаписани в първичната памет;
  • режийните разходи за определяне кои страници или сегменти да се прехвърлят в първичната памет са минимални.

Недостатъците на странирането при поискване включват факта, че процесът в този случай натрупва страниците (сегментите), които изисква, в първичната памет една по една. Когато се появи препратка към всяка нова страница (сегмент), процесът трябва да изчака тази страница (или сегмент) да бъде прехвърлена в първичната памет. В зависимост от това колко страници (сегменти) от даден процес вече са в първичната памет, тези периоди на изчакване, както следва от формула (4.5), ще стават все по-скъпи, тъй като изчакващите процеси ще заемат все повече и повече памет.

Натискане (помпа) с очакване включва системата, която се опитва да определи предварително до кои страници или сегменти ще има достъп процесът. Ако вероятността за достъп е висока и има свободно място, тогава съответните страници или сегменти ще бъдат презаписани в първичната памет, дори преди да бъде осъществен изричен достъп. При правейки правилния изборстраници (сегменти) за проактивно страниране могат да бъдат значително намалени общо времеизпълнение на този процес и намаляване на стойността на индикатора “пространство-време”.

Недостатъците на стратегията за препратка към пейджинг включват факта, че според теорията за изчислимостта обикновено е невъзможно точно да се предскаже пътят, по който ще се развие даден процес. Следователно са напълно възможни ситуации, когато решенията за избор на страници (сегменти) за проактивно изпомпване в повечето случаи ще бъдат взети неправилно за един или повече процеси, развиващи се в системата, което от своя страна ще доведе до рязко намаляване на скоростта на тези обработва поради увеличеното време на изчакване страниците или сегментите, от които се нуждаят.

4.4.3. Стратегии за разположение

В системи с страницаЧрез организиране на виртуална памет решението за поставянето на новозаредените страници се взема съвсем просто: нова страницаможе да се постави във всяка свободна рамка на страницата.

За системи с сегментенОрганизацията на виртуалната памет използва същите стратегии за разполагане като тези, използвани в системите за разпределяне на памет чрез променливи дялове (вижте раздел 4.2), а именно:

· поставяне с избор на първия подходящ свободен обект;

· поставяне с избор на най-подходящата свободна площадка;

· разположение с избор на най-неподходящата свободна площадка.

Подробно описаниедействията за прилагане на изброените стратегии за разположение са дадени в точка 4.2.3.

4.4.4. Натискащи стратегии

В многопрограмните системи цялата първична памет обикновено е заета. В този случай програмата за управление на паметта трябва да реши коя страница или сегмент трябва да бъдат премахнати от основната памет, за да освободи място за входящата страница или сегмент. В момента се използват следните стратегии за натискане (изпомпване) на страници (сегменти):

  • изтласкване на произволни страници или сегменти;
  • Първа изходяща страница или сегмент (FIFO);
  • изваждане на най-дългите неизползвани страници или сегменти (LRU);
  • изхвърляне на най-рядко използвани страници или сегменти (LFU);
  • изхвърляне на неизползвани напоследъкстраници или сегменти (NUR).

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

Стратегия за изтласкване на първата страница или сегмент, който влиза (FIFO стратегия) прилага принципа „първи влязъл, пръв излязъл“. В този случай, в момента, в който всяка страница (сегмент) влезе в първичната памет, й се присвоява клеймо за време. Когато стане необходимо да изтриете която и да е страница (сегмент) от основната памет, страницата (сегментът), чийто времеви печат има най-малка стойност. Аргументът за тази стратегия за натискане е, че тази страница вече е имала възможности да „се възползва от своя шанс“ и е време да дадем подобни възможности на друга страница. Стратегията FIFO обаче вероятно ще доведе до премахване на активно използвани страници (сегменти) от първичната памет, тъй като фактът, че страница (сегмент) е била в първичната памет за дълго време, може да означава, че тази страница или сегмент е постоянно на работа.

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

Стратегия за изтласкване на най-малко използваните страници или сегменти (LFU стратегия) е една от най-близките до LRU стратегията, обсъдена по-горе. В съответствие със стратегията LFU най-рядко (най-интензивно) използваните страници или сегменти в даден момент се изхвърлят от първичната памет. Тук се контролира интензивността на използване на страници (сегменти). За целта на всяка страница (сегмент) се присвоява брояч, чиято стойност се увеличава с единица при всяко достъпване на дадена страница (сегмент). Стратегията LFU, макар и интуитивно оправдана, има същите недостатъци като стратегията LRU: първо, има голяма вероятност страниците или сегментите да бъдат премахнати от първичната памет, от която процесите ще се нуждаят следващия път, когато осъществят достъп до паметта и, второ, прилагането му може да бъде свързано със значителни разходи за организиране на контрол върху интензивността на използване на страници или сегменти.

Стратегия за изтласкване на наскоро неизползвани страници или сегменти (NUR стратегия) също е близка до LRU стратегията и се характеризира с относително ниски разходи за внедряване. Съгласно стратегията NUR тези страници (сегменти), които не са били достъпвани наскоро, се изтласкват от първичната памет. В съответствие със свойството локалност във времето (вижте раздел 4.4.1), страници (сегменти), които не са били използвани наскоро, е малко вероятно да бъдат достъпни в близко бъдеще, така че те могат да бъдат заменени с новопоявили се страници.

Тъй като е желателно да се заменят онези страници (сегменти), които не са се променили, докато са в основната памет, изпълнението на стратегията NUR включва въвеждане на два хардуерни бита на страница (сегмент):

· bit-sign b 0 за достъп до страница (сегмент);

· битов знак b 1 от модификация на страница (сегмент).

Първоначално всички b 0 и b 1 са зададени на 0. При достъп до страница (сегмент), съответният бит на атрибут b 0 се настройва на 1. Ако съдържанието на страницата (сегмент) се промени, съответният бит на атрибут b 1 е зададено на 1. Стратегията NUR осигурява съществуването на четири групи от страници (сегменти), показани в табл. 4.5.

Таблица 4.5.Групи от страници (сегменти)

Група

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

Отчитането на времето, през което страниците (сегментите) не са били достъпвани, се извършва чрез периодично нулиране на всички атрибутни битове на 0, извършвано от операционната система.

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

Контролни въпроси

1. Често единственото предимство на виртуалната памет е способността да се предостави на процес количество виртуално адресно пространство, което надвишава количеството реална памет. Назовете други предимства на виртуалната памет.

2. Какви са предимствата и недостатъците на преобразуването на виртуални адреси в реални по време на изпълнение на програмата? Каква част от тази работа по преобразуване се извършва от хардуера и каква от операционната система?

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

4. Защо при търсене на свободна памет стратегията „най-добро прилягане“ се оказва по-лоша от стратегията „първо прилягане“.

5. Сравнете сегментни и страници модели на виртуална памет. Според вас кой е най-добрият и защо?

6. Попълнете дадените в раздел 3.5. Съображения за размера на страницата.

7. Симулирайте ситуация, при която се прилага дисциплината за изпреварване на FCFS, при която увеличаването на броя на реалните страници ще доведе до увеличаване на броя на грешките на страниците.

8. Какво е клъстерно пейджинг? Защо става все по-популярен в съвременните операционни системи?

9. Как може операционната система да определи кои страници ще бъдат достъпни в близко бъдеще?

10. Големият размер на виртуалната памет на процеса може да причини дори таблицата на страниците да не се побира в реалната памет. Как се решава този проблем в съвременните операционни системи?

11. Как намаляващите разходи за памет влияят на дисциплините за управление на паметта?

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



Свързани публикации