Операционни Системи Компютърните Системи Основни елементи


Тема 1 – Основни принципи на управление на паметта (УП)



страница5/8
Дата12.06.2017
Размер1.12 Mb.
#23375
1   2   3   4   5   6   7   8

Тема 1 – Основни принципи на управление на паметта (УП)

А) Свързване и зареждане на програма

Б) Статично и динамично разпределяне на паметта

В) Размери на блоковете памет – Има два вида организации на ОП:



  1. Непрекъснато разпределение

  2. Прекъснато разпределение – Блоковете са страници или сегменти

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



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

  2. Програмите получават памет на блокове с необходимата им дължина.

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

Г) Припокриване – Идеята е че една и съща област от паметта се разпределя на повече от една части (сегменти) от програмата. Тези части могат да бъдат и ПП. Сегментите трябва да са информационно независими. В началото се зарежда първият от тези сегменти, които ползват една и съща област. Останалите сегменти се пазят във външната памет. Когато е необходим друг сегмент се извиква функция на ОС за организиране на припокриване. Новият сегмент се записва на мястото на намиращия се в това време в ОП първи сегмент. Зареждането се извършва динамично. Програмистът трябва да планира и опише препокриването и да включи тази информация в заданието си. Свързващият редактор генерира описание на припокриване, което се записва в таблица на сегментите. В тази таблица се включва главния модул (сегмент). При изпълнение на програмата всяко външно обръщение се, и ако сегментът не е в ОП се извиква зареждащата програма за сегмента.


Д) Размяна (swapping) – когато ОС изисква приоритетно пускане на задание, а свободна памет няма, то една от програмите се спира и се извежда от ОП, тоест тя освобождава ОП. Изведеното задание се записва на външен носител. На неговото място се записва това с висок приоритет. Така му се дава възможност да изпълни исканата работа. След известно време спряното задание се връща в ОП. Този метод се прилага при мъртва хватка, поява на високоприоритетно задание или при разпределение на ресурсите. Размяната изисква време.

Тема 2 – Основни принципи на управление на паметта





  1. Поддържане на информационни структури за свободното и заето пространство на паметта

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

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

  4. Процес, завършил работата си, или процес, който се спира, освобождава паметта


Тема 3 – Фиксирани раздели. Фрагментация

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




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

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




Тема 5– Стратегии за разполагане на заданията в паметта

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



  1. Стратегия First Fit – При стратегията избор на 1ви подходящ блок се избира от списъка на свободните блокове първия блок, в който може да се помести заданието. В този случай е подходящо таблицата на свободните блокове да се подрежда по нарастване на адресите.

  2. Стратегия Best Fit – тук е необходимо да се направи преглед на всички свободни блокове и да се избере най-близкия по размер отгоре. Това може да бъде избегнато ако списъкът се сортира по нарастване на размерите на свободните блокове.

  3. Стратегия Worst Fit

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



  1. Адресите на блоковете

  2. По увеличаване на размера на блоковете

  3. По намаляване на размера на блоковете

1 случай се реализира лесно. Ако 2 блока са съседни, те се обединяват в един блок. В другите два случая вмъкването на нови блокове е по-усложнено.


Тема 6– Уплътняване на паметта

За оптимално използване на ОП може да се използва уплътняване на паметта. Уплътняването изисква много системни разходи. В този случай всички заети раздели се преместват към единия или другия край на ОП. По този начин множеството малки свободни блокове се обединяват в един голям. Операцията се извършва от специален модул на ОС. Модула се нарича garbage collector. Уплътняването има своите недостатъци:



  1. Отнема ресурси на системата

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


Тема 7– Други методи за управление на паметта





  1. С битова карта на паметта. На всеки бит от битовата карта съответства участък от паметта. Ако участък е празен, бита е 0. Лесно е известието за заемане на памет.



Система на близнаците с разцепване. При този подход всички размери на раздели са степен на 2. Поддържат се списъци за всички блокове с еднакви размери. Ако се търси блок с размер 2к и няма такъв, тогава се търси списък на свободните блокове с размер 2 к+1. Ако се намери такъв той се разделя на два “близнака”, единият от които се заема. Ако няма такъв свободен блок, търсенето продължава с по-големи степени на 2ката При освобождаването първо се търси дали е свободен близнак.
О в двата случая остават много дупки. Планировчика разпределя такава докато има. Когато заявка не може да се изпълни се чака да се освободи. При непрекъснато разпределение на паметта открито става заявката за паметта от наличната ОП.
Мъртва хватка.

4.2. УСЛОВИЯ ЗА ВЪЗНИКВАНЕ НА МЪРТВА ХВАТКА

Кофман [39] формулира необходимите условия, които трябва да се изпълнят едновременно, за да настыш мъртва хватка:

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

2. Очакване на ресурсиr. Процесите държат вече отделените им ресурси, като в същото време очакват да получат допълнителни ресурси.

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

4. Кръгово (циклично) очакване. Съществува кръгова верига от процеси, вески от които чака за ресурс (ресурси), държащ се от предшестващия го.



СТРАТЕГИИ ЗА БОРБА С МЪРТВАТА ХВАТКА

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



4.4.1. Предпазване от мъртва хватка

Хавендер [58] доказва, че ако бъде нарушено поне едно от горните условия, възникването на мъртва хватка е невъзможно. Той предлага три стратегически принципа за избягване на мъртвата хватка, които нарушават 2-то, 3-то и 4-то условия.



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

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

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

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

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

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

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

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

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

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



4.4.2. Избягване на мъртва хватка

Един страничен ефект при прилагане на описания метод за предпазване от мъртви хватки е, че е възможна ниска използваемост на устройствата и намалена пропускателна възможност на системата. Безизходна ситуация може да се избегне, дори ако необходимите условия за възникването и не са нарушени. Достатьчно е рационално да се разпределят ресурсите, придържайки се към определени правила. Решението относно текущата заявка за ресурси се взема динамично - дали удовлетворяването на заявката потенциално води до мъртва хватка. Затова е необходима допълнителна информация относно последователностите от заявки и освобождаване на ресурси, свързани с всеки процес. Често пъти, обаче, последователността от заявки не е известна предварително. Но, ако е известна общата заявка за всеки тип ресурси (т.е. вески процес трябва да декларира необходим максимален брой ресурси от всеки тип), разпределението може да се контролира. Съществуват различии алгоритми, които се различават по множеството и типа на необходимата информация [40].



Отхвърляне на старта на процес

При този подход [23, 85, 88] процес не се стартира, ако изискванията му могат да водят до мъртва хватка. Нека система има п процеса и т типове на ресурси. Дефинирани са следните вектори и матрици:

Ресурси = (R1, R2,.. ,RM) - брой на ресурсите от всеки тип в системата

Наличии = (V1,V2 ,...,VM ) брой на неразпределени ресурси от всеки тип

С11, С12, , С1M

С21, С22, , С1M заявка на всеки процес

Заявки = ................... за всеки тип на ресурси

CN1, CN2, , CNM
A11, A12, , A1M брой на ресурсите от

A21, A22, , A1M всеки тип, текущо

Разпределение = ................... разпределени на всеки

AN1, AN2, , ANM процес
Матрицата Заявки дава максималните нужди на всеки процес от всеки тип на ресурс - ред отговаря на процес. Тази информация трябва да бъде декларирана от процеса предварително, за да сработи избягването на мъртва хватка. Подобно, матрицата Разпределение дава текущото разпределение на ресурси от всеки тип за всеки процес. Следните зависимости трябва да бъдат спазени:

n


  1. Ri = Vi + Aki, за всички i;(всички ресурси са разпределени или налични)

k=l

2. Сki<= R., за всички k, i; (процес не може да заяви повече от

тоталното количество ресурси)

3. Aki<= Cki, за всички k, i; (никой процес не получава повече ресурси



от първоначално заявените)

Оттук може да се дефинира политиката за избягване на мъртва хватка - нов процес не се стартира, ако изискванията му за ресурси могат да доведат до мъртва хватка. Нов процес Pn+1се стартира, само ако:


Ri >= C(n+1)i + Cki за всички i
Процес може да се стартира, само ако максималните претенции на всички процеси, плюс новия, могат да бъдат удовлетворени. Тази стратегия отчита най-тежкия случай - всички процеси ще направят едновременно максималните претенции.

Отхвърляне на заявка за разпределение на ресурс

Предполага се, че системата е с фиксиран брой процеси и фиксиран брой ресурси. Състояние на системата е текущото разпределение на ресурсите между процесите. Така състоянието се състои от двата вектора и двете матрици, дефинирани no-горе. Може да се докаже, че системата е в безопасно (сигурно) състояние, ако съществува поне един път на изпълнение на процесите (вж. фиг. 4.1), който позволява да се обходи опасного (несигурното) състояние. Следователно, достатьчно е да се провери дали отделянето на ресурс не води до опасно състояние. За всяка заявка, при предположение, че е удовлетворена, трябва да се определи съществува ли сред общите заявки от всички процеси някаква последователност от заявки, която да доведе до опасно състояние. Ако да, заявката се отклонява. В противен случай тя се изпълнява. Класически пример за тази стратегия е алгоритьмът на банкера, предложен от Дейкстра [45]. Ще бъде разгледан по-простия вариант, когато се разпределя само един ресурс.

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

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

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

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

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

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



остатък = заявен заем - получен заем,

а състоянието на банкера се определя така:



наличност = капитал - сума от заеми.

Нека трима клиента Л, Б и В да могат да използват 10 единици капитал (т.е. капитала на банкера), но общата им нужда да е 20 единици.

На фиг. 4.За е показано безопасно състояние. Клиент А иска 4 единици, Б - 1 и В - 7. Проверяват се клиентите и се търси този, чието желание не превишава наличността (ако са няколко, този, който е най-близо до заявения заем). Клиент Б може да получи една единица, да довърши своята транзакция и да върне заема от три единици (фиг. 4.36). По-нататък се проверяват останалите клиента и се сравняват показанията им с наличността, равна на 4. Сега може да бъде удовлетворен А. Накрая ще изпълни транзакцията си и клиент В (фиг. 4.3в) и банкерът може да възвърне капитала си, т.е. критерий за безопасно състояние е съществуването на такава последователност от действия, която да позволява на всички клиенти да завършат работата си.


Каталог: 2015
2015 -> Висше военноморско училище „Н. Й. Вапцаров“
2015 -> Правила за изменение и допълнение на Правила за търговия с електрическа енергия Съществуващ текст
2015 -> Наредба за изменение и допълнение на наредба №36 от 2005 Г. За изискванията към козметичните продукти
2015 -> М и н и с т е р с т в о н а з д р а в е о п а з в а н е т о н а р е д б а
2015 -> Примерна тема за IV клас за „преглед на знанията по математика“
2015 -> Наредба №25 от 10 ноември 2008 Г. За условията и реда за пускане в действие на медицински изделия без наличие на условията по чл. 8 От закона за медицинските изделия
2015 -> 10 ноември демократичното начало тогава и сега


Сподели с приятели:
1   2   3   4   5   6   7   8




©obuch.info 2024
отнасят до администрацията

    Начална страница