3 Зертханалық жұмыс. Жадпен жұмыс істеу механизмдерін зерттеу Мақсаты


Зертханалық жұмысты орындауға арналған жалпы нұсқаулар



бет2/3
Дата26.09.2022
өлшемі31,42 Kb.
#150759
1   2   3
Байланысты:
3 Зертханалық жұмыс (5)

1.2 Зертханалық жұмысты орындауға арналған жалпы нұсқаулар
Windows операциялық жүйесі жадпен жұмыс істеудің келесі механизмдерін орындай алады:
1) объектілердің немесе құрылымдардың үлкен массивтерімен жұмыс істеуге арналған виртуалды жад;
2) Үлкен деректер ағындарымен (әдетте файлдардан) жұмыс істеуге және бір компьютерде бірнеше процестермен деректерді бөлісуге арналған проекциялы файлдар;
3) үйінділер (куча) – көптеген шағын нысандармен жұмыс істеу үшін.
Виртуалды жадпен жұмыс істейтін функциялар мекен-жай кеңістігінің аймағын тікелей сақтауға, оған физикалық жадты бет файлынан беруге және кез-келген рұқсат етілген қорғаныс атрибуттарын тағайындауға мүмкіндік береді.
Виртуалды жад сияқты, жобаланған файлдар мекен-жай кеңістігінің аймағын сақтауға және оған физикалық жадты беруге мүмкіндік береді. Олардың арасындағы айырмашылық, соңғы жағдайда физикалық жад бет файлынан ерекшеленбейді, бірақ дискідегі файлдан алынады. Файл жадқа жобаланғаннан кейін оған жүктелген сияқты кіруге болады. Проекциялы файлдар келесі жағдайларда қолданылады:
1) exe және dll файлдарын жүктеу және орындау үшін;
2) дискіде орналасқан деректер файлына қол жеткізу үшін;
3) деректерді бір машинада орындалатын бірнеше процестер арасында бөлу үшін.
Exe-файлын жүктеу және орындау кезінде функция қолданылады CreateProcess және келесі әрекеттер орындалады:
а) функция шақыруында көрсетілген exe-файлы ізделеді, егер файл табылмаса, жаңа процесс жасалмайды және функция false мәнін қайтарады;
б) егер файл табылса, "процесс" ядросының жаңа нысаны жасалады;
в) процестің адрестік кеңістігі жасалады;
г) адрестік кеңістіктің осындай аумағы осы ехе-файлға сыйатындай етіп резервтеледі. Бұл аймақтың қалаған орналасуы exe-файлының өзінде көрсетілген. Әдепкі бойынша 0х00400000 ехе-файлының негізгі мекенжайы;
д) д) жүйе сақталған аймаққа байланысты физикалық жад – бұл бет файлы емес, дискідегі ехе-файлы..
Виртуалды жадты пайдалану әрдайым ыңғайлы емес. Мысалы, байланыстырылған тізімдер мен ағаштарды үйінді көмегімен өңдеу оңай. Динамикалық түрде таратылатын жадтың артықшылығы-бұл жадыны бөлудің түйіршіктілігі мен бет өлшемін елемеуге мүмкіндік береді. Жадты басқарудың бұл механизмінің кемшілігі жад блоктарын баяу бөлу және босату болып табылады.
Үйінді-бұл сақталған мекен-жай кеңістігінің аймағы. Бастапқыда оның көп бөлігі физикалық жадқа берілмейді. Бағдарлама Деректер үшін осы аймақты алып жатқан кезде, қадаларды басқаратын арнайы диспетчер (heap manager) бет файлынан физикалық жадты парақтан кейін жібереді. Үйіндідегі блоктар босатылған кезде диспетчер жүйеге физикалық жадтың тиісті беттерін қайтарады.
С++ бағдарламалары үшін ақпаратты негізгі жадта сақтаудың екі негізгі әдісі бар:
1) айнымалыларды пайдалану. Айнымалылар беретін жад аймағы компиляция кезінде оларға бекітіледі және бағдарламаны орындау кезінде оны өзгерту мүмкін емес;
2) жадты динамикалық бөлу жүйесін пайдалану. Бұл жағдайда деректер жады қажет болған жағдайда біздің бағдарлама (және оның тұрақты сақтау аймағы) мен стек арасында орналасқан бос жад бөлімінен бөлінеді. Бұл бөлім үйінді деп аталады.



жоғары мекен-жай аймағы

Стек




Үйінді




Ғаламдық деректер

адрестердің төменгі аймағы

Бағдарлама коды

Сурет 3.1-Жад аймағында бөлімдерді орналастыру




Достарыңызбен бөлісу:
1   2   3




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет