К оммутатор ды пайдалану мысалы 6 страница



Клинчтер (clinch)

Тығырық

Кейбір жағдайда екі үрдіс бір-біріне өзара тиым салуы мүмкін. Осы үрдістердің жылдамдықтарының қатынасына байланысты, олар бөлінетін ресурстарды бір-біріне тәуелсіз қолдануы мүмкін немесе бөлінетін ресурстарға кезек құруы мүмкін осы үрдістердің жылдамдылығына байланысты олар бөлінетін ресурстарды бір-біріне тәуелсіз қолдануы мүмкін немесе бөлінетін ресурстарға кезек құруы мүмкін.Бөлінетін ресурстар тәуелсіз пайдалану.

Бөлінетін ресурстардың тығырық жағдайы.

Үрдіс А

А1. принтерді қолдану

А2. дискті пайдалану

А3. принтерді босату

А4. дискті босату

Үрдіс В

В1. дискті пайдалану

В2. принтерді пайдалану

В3. дискті босату

В4. принтерді босату

Тығырықтер проблемасы жазу барысында болдырмауға болады.Бос емес ресурстарда ресурстарды болу және сұраныс кестелерін құруға негізделген тығырықтерін алдын ала тану бағдарламалық әдістері бар.

Жіптер

Әр бір үрдістің өз вертуалдық адрестік кеңістігі бар. Әр бір үрдіске –з ресурстары файлдар6 терезелер6 семафорлар тағайындалады, мұндай бөліну 1 процесті 2-шісінен қорғау үшін керек. Себебі олармашинаның ресурстарын ортақ пайдаланып бір-бірімен бәсекелеседі. Жалпы жағдайда үрдістер әр түрлі қолданушынікі болады. Сондықтан ОЖ ресурстарға таласта орбитор рөлін атқарады. Тиым салу айнымалысының бірі ДИЙКСТР семофорлары болады. Бұл айнымалар бүтін теріс емес мәндер қабылдайды және есептеу үрдісін синхронизациялау үшін қолданылады.Мьютекс (matex     ) семафор сияқты тиым салу айныманың бірі және берілгнедерге қатынасуды басқару үшін қолданылады.Семофорлар мьютекті таймерді оқиғаларды операциялық жүйенің синхронизациялау обекпир деп те аталады. Мультибағдарламалауда- жүйенің үрдістерді орындау мүмкіндігі жоғарылайды, бірақ жеке процес 1 бағдарлама режимді орындалғаннан тез отындалмайды. Сонымен қатар бір процес шешілетін есеп ішкі паралелум қасиетіне ие болып жылдам орындалуы мүмкін мысалы; егер есепті шешу барсында сыттқы қүрылғыға қатынас болса бұл операциялық орындалу уақытында үрдістер орындалу уақытында үрдістің басқа бұтағын орындауды жалғастыруға болады. Осындай мақсаттар үшін қазіргі заманға операциялық жүйелері көп жіптік өңдеу multithreading көптіктің өңдеу механизмді қолданады. Жіптер өзіндік бағдарламалық санауыш stek, регистр,қалып күй ұрпақ жіптерге ие болады. Көп есептік өңдеуге қарағанда жүйенің жұмыс істеуін жоғарлатады.  

 

 

ТАҚЫРЫП 7-8. ЖАДЫНЫ БАСҚАРУДАҒЫ

ЖҮЙЕЛІК ҚҰРАЛДАР

Мақсаты: Жадыны басқарудағы жүйелік құралдардың ұйымдасты-рылуын талдау

Кілттік сөздер: жады, сегмент, виртуалды жады, адрес, негізгі жады, сұраныс, сегментация, уақыт, цикл, файлдық жүйе, модуль, функция, үрдіс

айнымалы, команда

Дәріс жоспары (2 сағат)

1. Негізгі жады. Ардестердің байланыстылығы. Виртуалды жады.

2. Жады және кескіні (отображение). Жады сегменттеу құрылымы. Сегменттерді жою және ауыстыру (переброска).

3. Сұраныстар бойынша жадыны бөлу алгоритмі. Жадының парақтық ұйымдастырылуы және оның сегментациядан айырмашылығы. Сұраныстар бойынша парақтарды үлестіру. Алгоритм.

4. Ығыстыру стратегиясы: уақыт бойынша, циклдік тасу (откатка), fifo, беттердің сирек қолданылуы бойынша.

5. Жалпы жадыны үлестіру. Сыртқы жады. Виртуалды файлдық жүйе. Сыртқы жадыны басқару. Файлдық жүйені үлестіру.

Жады – мультибағдарламалы операциялық жүйе тарапынан мұқият қадағалауды талап ететін маңызды ресурстардың бірі. Жадының маңызды рөлі былай түсіндіріледі: процессор бағдарламаның нұсқауларын тек олар жадыда орналасқан жағдайда ғана орындай алады. Жады қолданбалы бағдарламалар модульдері арасында бөлінетіні сияқты, операциялық жүйенің өз модульдері арасында да бөлінеді.

Бұрынғы операциялық жүйелерде жадына басқару жай ғана бағдарламаларды және оның берілгендерін (деректерін) кейбір ішкі жинағыштардан (перфоленталар, магнитті ленталар немесе магниттік дискілер) жүктеу арқылы жүргізілді. Мультибағдарламалаудың пайда болуымен операциялық жүйелерге бар жадыны бір уақытта орындалатын бірнеше бағдарламалардың арасында бөліп беруге байланысты жаңа мәселелер қойылды.

Мультибағдарламалық жүйеде жадыны басқаруды операциялық жүйенің функциялары:

- Бос және бос емес жадыны қадағалау;

- Үрдістерге жадыны бөліп беру және процесс орындалып болған соң жадыны босату;

- Барлық үрдістерді орындау үшін негізгі жадының көлемі жетпеген жағдайда үрдістердің берілгендері мен кодтарын оперативті жадыдан дискіге ауыстыру (толық және бөліктік) және орын босаған уақытта оларды қайтарып алу;

- Бағдарламалар адрестерін физикалық жадының нақты облыстарына баптау.

Үрдістердің құрылуы кезінде оларға алғаш жадыны бөліп берумен қатар операциялық жүйелер жадыны динамикалық бөлумен де айналысуы керек. Яғни үрдістің орындалуы барысында қосымша уақыт сұранысын қанағаттандыруы тиіс. Қосымша жадыға деген мұқтаждық өтелген жағдайда ол жүйеге қайтарылады. Кездейсоқ ұзындықтағы жадыны уақыттың кездейсоқ аралығында жалпы жадыдан бөлу оның фрагментациялануына алып келеді және осының салдарынан жадыны пайдалану тиімділігі төмендейді. Жадыны дефрегментациялау да жадының бір функциясы болып табылады.

Операциялық жүйеге жұмыс істеу барысында жиі үрдістер мен ағындар сипаттаушылары, ресурстарды бөліп берудің түрлі кестелері, деректер алмасуын болдыратын үрдістерге қолданылатын буферлер, синхронизациялаушы объектілер және т.б. жаңа қызметтік ақпараттық құрылымдар құруға тура келеді. Осы жүйелік объектілердің барлығы жадыны талап етеді. Кейбір операциялық жүйелерде (орналастыру барысында) алдын ала жадының кейбір белгіленген көлемі жүйелік қажеттіліктер үшін қолданылатын қор ретінде сақталады (резервируется). Ал басқа операциялық жүйелерде жүйелік мақсаттар үшін жадыны динамикалық түрде бөлу сияқты қолайлы тәсілдер қолданылады. Мұндай жағдайда операциялық жүйенің әр түрлі жүйеасты жүйелері өздерінің кестелерін, объектілерін, құрылымдарын және т.б. құру барысында жадыны басқарушы жүйеасты жүйесіне сұраныс салады.

Жадыны қорғау – операциялық жүйенің орындалып жатқан үрдістің басқа процеске арналған деректерді жадыдан оқуына немесе жазып алуына мүмкіндік бермейтін маңызды міндеті болып табылады. Ережеге сәйкес, бұл функция аппараттық жабдықтармен өзара тығыз байланысқан операциялық жүйенің бағдарламалық модульдеры арқылы жүзеге асады.

Адрестер түрлері

Командаларды және айнымалыларды бағдарламаның негізгі циклының әр түрлі кезеңдерінде идентификациялау үшін символдық атаулар, виртуалды және физикалық адрестер қолданылады (1-сурет).

- Символдық атауларды қолданушы бағдарламаны алгоритмдік тілде немес ассемблерде жазу барысында меншіктейді;

- Кейде математикалық немесе логикалық адрестер деп аталатын виртуалды адрестерді бағдарламаны машиналық тілге аударатын транслятор меншіктейді. Жалпы жағдайда трансляциялау кезінде бағдарламаның оператитвті жадының қай жеріне жүктелетіні белгісіз болғандықтан транслятор айнымалылар мен командаларға виртуалды (шартты) адрестерді меншіктейді. Әдетте, бұл әдістер үнсіз келісім бойынша саналу арқылы беріледі. Бағдарламаның бастапқы адресі нөлдік адрес болады.

- Физикалық адрестер оперативті жадының айнымалылар мен командалар орналасқан немесе орналасатын ұяшықтары нөміріне сәйкес келеді.

Бағдарламаның виртуалдық адрестер жиынтығы виртуалды адрсетік кеңістік деп аталады. Вируалды адрсетер кеңістігінің диапазоны барлық үрдістерде бірдей болады. Мысалы, 32-разрядты виртуалдық адрестерді қолданғанда диапазон мына шекаралармен беріледі 0000000016 және ҒҒҒҒҒҒҒҒ16. Соған қарамастан әрбір үрдістің өзіндік виртуалдық адресті кеңістігі бар. Оны транслятор айнымалыларға меншіктейді және ол бағдарлама кодына байланысты болмайды.

 

Символдық атаулар
Виртуальді адрестер
Физикалық адрестер
Алгоритмдік тілдегі программадағы айнымалылар идентификаторы
Транслятор меншіктейтін шартты адрестер
Физикалық жады ұяшықтарының нөмірлері
транслятор

 

 


                                                                                                                                               

Сурет 1. Адрестер түрлері

 

2 процесстің виртуальді адрестік кеңістігі
3 процесстің виртуальді адрестік кеңістігі
виртуальді адрестер
1 процесстің виртуальді адрестік кеңістігі
Оперативті жады
ҒҒҒҒҒҒҒҒ16 00А8071516 0000000016
f1 программаасты    
ҒҒҒҒҒҒҒҒ16 00А8071516 0000000016
MOV R1, P12 нұасқауы    
  MOV R1, P12 нұасқауы    
f2 программаасты  
ҒҒҒҒҒҒҒҒ16   0А8071516 0000000016
a2 айнымалысы    
a2 айнымалысы  


Сурет 2. Бірнеше бағдарламаның виртуалды адрестік кеңістігі

 

Екі бөлек үрдістердің айнымалылары мен командаларының виртуалды адрестерінің бірдей болуы конфликт тудырмайды. Өйткені бұл адрестердің бір уақытта жадыда болғанымен, операциялық жүйе оларды әр түрлі физикалық жадыда1 бейнелейді.

Әр түрлі операциялық жүйелерде виртуалды адрестік кеңістіктің құрылымы әр түрлі болады. Кейбір операциялық жүйелерде үрдістің виртуалды адрестік кеңістіктері физикалық жады тәрізді виртуалды адрестердің үзіліссіз сызықтық тізбегі ретінде беріледі. Адрестік кеңістітіктің мұндай құрылымын сонымен қатар жазық деп те атайды. Бұл жағдайда виртуалды адрес ретінде виртуалды адрестік кеңістіктің басына қатысты жылжуды білдіретін сан меншіктеледі (әдетте бұл мән 000...000). Мұндай түрдегі адресті сызықтық виртуалды адрес деп атайды (сурет 3-а).

Басқа операциялық жүйелерде виртуалды адрестік кеңістіктер сегменттер (немесе секциялар, немесе облыстар, немесе басқа да терминдер) деп аталатын бөліктерге бөлінеді. Бұл жағдайда сызықтық адрестің орнына қос санмен (n,m) анықталатын виртуалды адрес қолданылады. Мұндағы n сегментті, ал m сегмент ішіндегі жылжуды білдіреді (сурет 3-б).

Виртуалды адрестер үш немесе одан көп сандардан құралған жағдайда виртуалды адрестік кеңістіктің құрылымы жоғарыда аталғандардан да күрделі болады.

 

К сегменті
(n,m)
  n сегменті
m
1 сегмент
  n сегменті
m
a
б


 

 

 

Сурет 3. Виртуалды адрестік кеңістіктер түрлері: (а) жазық, (б) cегментті

 

Операциялық жүйенің мақсаты барлық орындалып жатқан үрдістердің индивуальді виртуалды адрестік кеңістіктерін жалпы физикалық жадыда бейнелеу болып табылады. Осыған сәйкес операциялық жүйе не барлық виртуалды адрестік кеңістікті, не оның тек белгілі бір бөлігін ғана бейнелейді.

Жадыны үлестіру алгоритмдері

Әрбір үрдіске физикалық жадының бір үзіліссіз облысын тағайындау керек пе, әлде жадыны «бөлшектермен» үлестіру керек пе? Жадыға жүктелген бағдарламаның сегменттері үрдістің түгел орындалу периодында бір орында тұруы керек пе, немесе оны уақыт өткен сайын жылжытып отыру тиімді ме? Егер бағдарлама сегменттері бар жадыға сиыспаса не істеу керек? Әр түрлі операциялық жүйелер жадыны басқарудың осы және осы секілді базалық сұрақтарына өздігінше әр түрлі жауап береді. Бұдан әрі операциялық жүйелердің дамуының әр түрлі периодтарында көрініс берген жадыны үлестірудің әр түрлі әдістеріне тоқталатын боламыз. Олардың кейбіреулері өздерінің маңыздылығын сақтап қалған және замануи операциялық жүйелерде қолданылады, ал кейбіреулері тек танысуға ғана тұрарлық, дегенмен ол әдістерді кейбір арнайы операциялық жүйелерден кездестіруге болады.

Сурет 4-те жадыны үлестірудің барлық алгоритмдері 2 классқа бөлінген: процесс сегменттерін оперативті жады мен дискі арасында ауыстыруға негізделген алгоритмдер және сыртқы жадыны қажет етпейтін алгоритмдер.

Жадыны бөліп беру алгоритмдері
Сыртқы жадыны қолданбайтын
Сыртқы жадыны қолданатын
Фиксирленген бөлімдермен
Динамикалық бөлімдермен
Ауыстырмалы бөлімдермен
Беттік бөлулер
Сегментті бөлулер
Сегментті-беттік бөлуілер

 


Сурет 4. Жадыны үлестіру әдістерінің классификациясы

 

Жадыны фиксирленген бөлімдермен үлестіру

Оперативті жадыны қолданудың қарапайым әдісі жадыны бөлімдер деп аталатын бірнеше фиксирленген облыстарға бөлу арқылы жүргізіледі. Мұндай бөлу оператор арқылы жүйе жүктелгенде немесе жүйені орнату барысында орындалады. Бұдан кейін бөлімдер шекарасы өзгертілмейді.

Орындалуға жіберілген кезекті жаңа процесс жалпы кезекке немесе кейбір бөлімдердегі кезекке (Сурет 5) орналасады.

 

ОЖ
1 бөлім
2 бөлім
3 бөлім
Есептер кезегі
– бос жады
а
ОЖ
1 бөлім
2 бөлім
3 бөлім
Бөлімдерге кезек
б
Сурет 5. Жадыны фиксирленген бөлімдермен бөліп беру: (а) жалпы кезекпен, (б) жеке кезектермен


Дата добавления: 2022-01-22; просмотров: 23; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!