66
жүйеленеді.
Бағдарламалаушы тұрғысынан виртуалды жадының осындай
ұйымдасуы өте ыңғайлы болып табылады,
өйткені ол өзі
бағдарламаларға модульдік құрылым ұсынады. Әр сегментпен көлемі,
сегмент атрибуттары туралы ақпараттан тұратын оның дескрипторы
ассоциацияланған.
Егер
жады
аумағы
орналасқан
сегмент
атрибуттарымен рұқсат етілген болса және ығысу сегмент көлемінен
аспаса процес жадының қандай да бір бөлігіне жүгіне алады. Ондай
жағдай орын алмаса сегмент шекарасының бұзылғаны туралы ақпарат
түрлендіріледі.
Оның үстіне дескриптор жадының қай жерінде сегмент
орналасқаны туралы, негізгі жадыда сегменттің бар немесе жоқтығы
туралы
ескертетін қатысу жалауы туралы ақпараттан тұрады. Егер
негізгі жадыға жүктелмеген сегментке жүгіну талпынысы орын алса,
ерекшелік генерацияланады. Операциялық жүйе қажет сегментті
негізгі жадыға жүктейді, сегмент дискрепторындағы параметрлерді
күйге келтіреді және сегментте жадыға жүгіну операциясын
орындайды.
Виртуалды жадыны ұйымдастырудың осы қарастырылған түр
фрагменттелуді азайтады. Сонымен қатар ол қолданылмаған
сегменттерді жүктемеден шығару есебінен негізгі жадыны үнемдеуге
көмектеседі,
сегменттер
көмегімен
бөлінетін
бағдарламалар
модульдерінің мәселелерін шешеді.
Мұндай модульдер сегмент
жадысына жүктеледі, ал процестерде пайдаланылып жатқан сегменттер
дискрепторларының кестесіне осы жалғыз сегментке сілтеме жасалады.
Виртуалды жадыны осылай ұйымдастырудың кемшілігі бұл
модельдің адресация операциясы өте баяу, өйткені бірінші сегмент
дескрипторына рұқсат алу керек, жадыдағы
сегменттің орналасқан
жерін оқу, одан кейін ығысуды пайдаланып соңғы адресті анықтау
қажет. Сонымен қатар жады және процессорлық уақыт сегменттер
дескрипторларына және дескриптор кестесіне, олардың орналасуы
және сегменттерді жүйелеу кезінде адрестердің жаңаруына
жұмсалады.
Осы мәселелерді шешу үшін заманауи операциялық жүйелерде
виртуалды жадыны ұйымдастырудың парақтық тәсілі қолданылады.
Парақтық ұйымдастыру кезінде виртуалды
жадының барлық кеңістігі
жады парақтар деп аталатын белгіленген көлемі бар блоктарға
бөлінеді.
Белгілі бір көлемде жады қажет болған кезде бұл өлшем
парақтың өлшемімен теңестіріледі де жады парағының толық саны
бөлінеді. Егер парақтың қандай да бір бөлігі пайдаланылмаған болса,
онда жады ары қара таратылмайды да ары қарай пайдалануға
мүмкіндік болмайды. Бұл жағдайда ішкі фрагменттеу сөз болады.
Виртуалды жадыны осылай ұйымдастырған кезде негізгі жады да
«жады парағының фреймдері» деп
аталатын виртуал жадының
парақтарының көлемдерімен бірдей бөлінеді. Бұндай фреймдер
виртуал жадының парақтары жатқызылуы қажет жиектеме секілді.
Осындай парақтар бір-бірінен тәуелсіз қосымша жадқа қажеттігінше
көшіріле алады және қажет болған жағдайда негізгі жадының
қолжетімді фреймге қайта жүктеледі.
Виртуалды жадыны осылай ұйымдастырудың артықшылығы дәл
сегменттік тәсіл секілді бұл тәсіл де қосымша жадыны пайдалану
арқылы негізгі жадыдағы қолжетімді көлемді арттыра алады. Бір
процес үшін әр уақыт сайын оған тиесілі емес жады парақтарын емес
тек өзіне қажеттісін ғана жүктеу қажет.
Басқалары қосымша жадыға
көшіріле алады, басқа деректер мен процестерге негізгі жадыдан орын
босатады.
Егер дәл сол сәтте негізгі жадыдан қосымша жадыға көшірілген
жады парағына өтінім жіберілсе, парақша қателігі генерацияланады.
Осындай қатені алған менеджер сұратылған парақты негізгі жадының
бос фрейміне жүктейді. Қажеттігінше мұндай фрейм басқа
пайдаланылмай тұрған парақтарды шығарып тастау жолымен
босатылады. Осындай операциялардың жиілігі
процестер пайдаланып
жатқан парақ көлеміне және парақтардың жалпы санына тәуелді. Іс
жүзінде негізгі жадыда болуы қажет минималды парақтар саны бар.
Бұл санды «парақтардың минималды жұмыс жиынтығы» деген атауға
ие және процес пайдаланып отырған жадының максимал өлшеміне
тәуелді анықталады.
Жадының қай парақшасы негізгі жадыдан қосымша жадыға
ауысуын анықтау үшін «парақтарды ауыстыру стратегиясы» деп
аталатын арнайы алгоритм қолданылады.
Мұндай стратегиялардың жүзеге асуы үшін келесі алгоритмдер
қолданыла алады.
Достарыңызбен бөлісу: