Վիրտուալ հիշողություն
Վիրտուալ հիշողություն (անգլ.՝ Virtual memory), ԷՀՄ-ի հիշողության կառավարման տեխնոլոգիա` մշակված բազմապրոցոսային օպեացիոն համակարգերի համար: Վերոհիշյա տեխնոլոգիայի կիրառման դեպքում յուրաքանչյուր ծրագրի համար օգտագործոմ են հիշողության հասցեավորման անկախ սխեմաներ, որոնք այս կամ այն կերպով արտացոլվում են ԷՀՄ-ի ֆիզկական հացեի վրա: Թույ է տալիս մեծացնել հիշողության օգտագործման էֆեկտիվությունը միաժամանակ աշխատող ծրագրերի կողիմից` կազմակերպելով միաժամանակյա անկախ հասցեային պրոցեսնե և ապահովում է հիշողության պաշտպանվածութոյւնը տարբեր ծրագրերի միջև։ Նաև հնարավորություն է տալիս ծրագրավորողին օգտագործել ավելի շատ հիշողություն քան տեղադրված է համակարգչի վրա: Վերջինս տեղի է ունենում երկրորդային(երկրորդային հիշողություն է համարվում համակարգչի կոշտ սկավառակը) հիշողությունում չոգտագործվող էջեի հաշվին վերբեռնման շնորհիվ: Վիրտուալ հիշողության օգտագործման դեպքում հեշտանում է ծրագրավորումը, քանի որ ծրագրավորողին այլևս անհաժեշտ չէ հաշվի առնել համակարգչի հիշողության սահմանափակումները, կամ համաձայնեցնել հիշողության օգտագործումը այլ ակտիվ ծրագրերի հետ։ Ծրագրի համար անընդհատ հասանելի է հասցեային տարածությունը` անկախ ԷՀՄ-ում առկա Օպերատիվ Հիշողության սարքի (ОЗУ) ծավալից։
Վիրտուլ հշողության մեխանիզմի կիրառումը թոյլ է տալիս.
- հեշտացնել հիշողության հասցեավորումը
- ռացիոնալ կառավարել համակարգչի/ԷՀՄ-ի օպերատիվ հիշողությունը (պահպանել հիշողության միայն ակտիվ օգտագործվող հատվածները)
- մեկուսացնել պրոցեսները իրարից (պրոցեսը ենթադրում է որ ամբողջովին տիրապետում է հիշողությանը)
Այժմ այս տեխնոլոգիան ունի սարքավորումային աջակցում, բոլոր ժամանակակից կենցաղային պրոցեսներում։
Բովանդակություն |
Պատմություն [խմբագրել]
1940-ական և 1950-ական թվականներին, մինչև վիրտուալ հիշողության զարգացումը, բոլոր ծրագրերը ստեղծվում էին հիծողության երկու մակարդակերի` առաջնային և երկրորդային, առկայությամբ։ Վիրտուալ հիրշողության ստեղծման հիմնական պատճառ հանդիսացավ հիմնական հիշողության ծավալի մեծացման միտումի բացակայությունը, իսկ հիշողության ծավալի մեծացման նմանատիպ մեթոդը շատ ավելի հեշտ էր ծրագրավորողների համար։
Վիրտուալ հիշողության էջային կազմակերպում [խմբագրել]
Գրեթե բոլոր ժամանակակից օպերացիոն համկարգերում վիրտուալ հիշողությունը կազմակերպվում է էջային հասցեավորման միջոցով: Օպերատիվ հիշողությունը բաժանվում է էջերի` ֆիկսված երկարությամբ հիշողության հատվածների (օրինակ 4096 բայթ), որոնք հանդիսանում են հիշողության հատկացման մինիմալ մեծություններ (նույնիսկ 1բայթ ծավալով հարցման դեպքում համակարգը կհատկացնի հիշողության 1 էջ): Պրոցեսները դիմում են հիշողությանը վիրտուալ հիշողության հասցեի միջոցով, որը իր մեջ պարունակում է էջի համարը և այդ էջի ներսում տեղափոխությունները:Պրոցեսորը վերափոխում է վիրտուալ էջի համարը համապատասխան ֆիզիկական էջի հասցեին` ասոցատիվ հեռարձակման բուֆերի միջոցով: Եթե չի հաջողվում իրագոծել վերը նշված գործողությունը, ապա անհրաժեշտ է դիմել էջերի աղյուսակին(այսպես կոչված Page Walk), որն իրկանացվում է կամ անմիջապես պրոցեսորի, կամ օպերացիոն համակարգի կոցմից` կաղված ճարտարապետությունից [1]: Եթե էջը դուրս է բեռնված օպերատիվ հիշողությունից, ապա օպերացիոն համակարգը վերբեռնում է այն կոշտ սկավառակից: Հիշղության հատկացման հարցման դեպքում օպերացիոն համակարգը կարող է կոծտ սկավառակի վրա ստեղծել այնպիսի էջ, որին երկար ժամանակ հարցում չի եղել: Կրիտիկական տվյալները (օրինակ` գործարկված և ածխատող ծրագրերի կոդը, համակարգի միջուկի կոդն ու հիշողությունը)սովորաբար գտնվում են օպերատիվ հիշողությունում (բացառություններ կան, սակայն դրանք չեն վերաբերում այն հատվածներին, որոնք պատասխանատու են սարքավորումային դադարների, էջերի աղյուսակի և վերբեռնման ֆայլի աշխատանքի համար)
Վիրտուալ հիշողության սեգմենտային կազմակերպում [խմբագրել]
{Համակարգչային տեխնիկայի TBN խաղը ցույց է տալիս վիրտուալ հիշողություն}}
computing,վիրտուալ հիշողության մեջ հիշողություն կառավարման տեխնիկան զարգացել է multitasking kernels. Այս տեխնիկան virtualizes համակարգիչ ճարտարապետության տարբեր ձևերի համակարգչային տվյալների պահպանումն է ինչպես, օրինակ, Պատահական մուտքի հիշողությունը և սկավառակի պահպանումը)՝ թույլ տալով [[Application Software ծրագիր է նախագծում, որ կա միայն մեկ տեսակ հիշողության՝ «վիրտուալ» հիշողություն, որը վարվում է, ինչպես ուղղակիորեն հասցեական կարդալու և գրելու հիշողությունը (RAM).
Ամենաժամանակակից Օպերացիոն համակարգերը, որոնք աջակցում են վիրտուալ հիշողությանը նաև գործարկում են յուրաքանչյուր գործընթաց իր սեփական հասցեով՝ թույլ տալով մի ծրագիր մշակել, քանի որ'այն միակ մուտք գորցելն է դեպի վիրտուալ հիշողության մեջ: Այնուամենայնիվ, որոշ հին օպերացիոն համակարգեր (օրինակ, OS/VS1 և OS/VS2 SVS) նույնիսկ ժամանակակից են ինչպես, օրինակ, IBM i, կարող են միայն հասցեն մուտքագրել օպերացիոն համակարգի տարածք , որ առաջադրվելու է բոլոր գործընթացների ոչ մի տարածք: Հասցեն բաղկացած է virtualized հիշողությամբ:
Համակարգեր, որոնք կիրառվում են վիրտուալ հիշողության մեջ:
- Օգտագործել ապարատային հիշողության մեջ ավելի արդյունավետ, քան անել առանց համակարգերի վիրտուալ հիշողության մեջ:
- Դարձնել ծրագրավորման դիմումները ավելի հեշտ:
- fragmentation,
- միջուկի բեռի կառավարում կարիք չկա, որ ծրագրի կարգավովի overlays հստակորեն:
- Ու, երբ յուրաքանչյուր գործընթացը վարում է իր սեփական նվիրված հասցեն տարածքում, ըստ անհրաժեշտության տեղափոխվել է կոդը ծրագրի կամ մուտք գործելու հիշողության հետ, հարաբերական ուղղված.
Հիշողության virtualization ընդհանրացման հայեցակարգի վիրտուալ հիշողություն: Գրեթե բոլոր վիրտուալ հիշողություն բաժանում է վիրտուալ տարածության հասցեն բլոկների և սահմանակից վիրտուալ հիշողության հասցեների Էջեր, որոնք սովորաբար առնվազն 4 kilobyte - ի չափի, համակարգեր են: Մեծ վիրտուալ հասցեն տատանվում կամ գումարների իրական հիշողության ընդհանուր օգտագործման ավելի մեծ չափսերի էջում է հայտնվում:
Page tables [խմբագրել]
Page tables օգտագործվում են թարգմանել վիրտուալ հասցեներ, օգտագործվող սարքերի մշակման ցուցումներ, այնպիսի սարքավորումներ, որոնք հատուկ են բռնակներին: Այս թարգմանությունը հաճախ հայտնի է որպես հիշողության կառավարում միավոր: Յուրաքանչյուր մուտքի այդ էջ աղյուսակում ունի դրոշ՝ նշելով, թե համապատասխան էջը գտնվում է իրական հիշողության մեջ, թե ոչ: Եթե դա է իրական հիշողությունը, սեղանի մուտքի էջը պարունակում է իրական հիշողության հասցեն, որտեղ էջը գտնվում և պահվում է: Երբ հղում է արվում մի աղյուսակի էջ մուտք գործելու համար էջը ցույց է տալիս, որ առայժմ չի գործում իրական հիշողության մեջ, ապա վերահսկիչ բաղադրիչն է օպերացիոն համակարգ:
Համակարգերը կարող են ունենալ մեկ Page tables ամբողջ համակարգի առանձին Page tables համար յուրաքանչյուր դիմումի ու հատվածի, paje tree աղյուսակների համար խոշոր հատվածների կամ որոշակի համակցության: Եթե կա միայն մեկ Page tables-ի , տարբեր ծրագրեր multiprogramming միևնույն ժամանակ օգտագործման տարբեր մասերում մի շարք վիրտուալ հասցեներ.:Եթե կան մի քանի էջ կամ հատվածի Page tables , կան բազմաթիվ վիրտուալ տարածքների հասցեներ և համանման ծրագրեր , առանձին էջի վրա սեղանների վերահղման տարբեր իրական հասցեներ:
Paging controller [խմբագրել]
Սա Page tables-ի մի մասն է կազմում՝ օպերացիոն համակարգի ստեղծման և ղեկավարման Page tables: Եթե ապարատային բարձրացման էջը բացառություն է, paging controller միջնակարգ պահեստավորման, վերադարձման էջը, որն ունի վիրտուալ հասցե, որ հանգեցրել է այդ էջում թարմացումները Page tables արտացոլում են գտնվելու վայրը վիրտուալ հասցեում և պատմում թարգմանությունը մեխանիզմ վերագործարկելու խնդրանքով:
Երբ բոլոր ֆիզիկական հիշողությունները արդեն օգտագործվում են, paging controller պետք է ազատ էջը առաջնային պահպանման անցկացնի swapped - ին էջում: ՀՀ վերահսկիչ մեկը օգտագործում է մի շարք Էջ փոխարինում ալգորիթմ ներ, ինչպիսիք են `[[Էջ փոխարինում ալգորիթմ # առնվազն վերջերս օգտագործվել է էջը անվճար:
Կարևոր էջեր [խմբագրել]
Օպերացիոն համակարգեր հիշողություն տարածքներ են, որոնք կապում են( swapped մինչև երկրորդական պահեստավորման). Օրինակ, ընդհատել մեխանիզմների մի զանգված, ցուցիչների իրենց handlers, ինչպիսիք են I / O ավարտից հետո, և Էջ մեղքով: Եթե էջերը պարունակող այդ ցուցիչներy կամ այն կոդը, որը նրանք վկայակոչել են pageable, ընդհատել - բեռնաթափման կդառնա շատ ավելի բարդ և ժամանակատար սպառwx: Հետևաբար, որոշ մասը էջի աղյուսակի կառույցների չէ pageable. Որոշ էջեր կարող են կապել կարճ ժամանակահատվածում, մյուսները կարող են կապել երկար ժամանակ, և կարող է լինել նաև այլ անհրաժեշտ մշտապես կապում: Օրինակ.
- Paging controller կոդը և Driverner-ի համար երկրորդական պահման սարքերի վրա, որի էջերում մշտապես պետք է կապում, քանի որ հակառակ դեպքում paging նույնիսկ չէր աշխատի, քանի որ անհրաժեշտ կոդը չէր լինի մատչելի:
- Ժամկետները, կախված բաղադրիչներից, կարող են խուսափել փոփոխական paging ձգձգումներից:
- Տվյալների բուֆերային ներ, որոնք կօգտվեն անմիջականորեն , ասենք, ծայրամասային սարքեր, որոնք օգտագործում են հիշողության անմիջական մուտք կամ I / O ալիք - ի համար նաև պետք է բնակում կարևոր էջերում, իսկ երբ / Բ գործողությունն է առաջընթաց, ավտոբուս, որոնց կցված են ակնկալում, գտնել տվյալների buffers ֆիզիկական հիշողության հասցեները, անկախ այն հանգամանքից, որ ավտոբուսն ունի հիշողության կառավարման միավորը I / O, փոխանցումները չեն կարող դադարեցվել, եթե էջում սխալ է տեղի ունենում, իսկ հետո վերսկսվել, երբ էջը արդեն մշակված է լինում:
IBM-ի օպերացիոն համակարգեր: System/370 իրավահաջորդ համակարգերի: Այդ «ֆիքսված» ժամկետում էջերը կարող են երկարաժամկետ ֆիքսված լինել, կամ կարող է լինել կարճաժամկետ ֆիքսված: Վերահսկիչ կառույցները հաճախ երկարաժամկետ ֆիքսված (չափվում է պատի Շուրջօրյա ժամանակ, այսինքն, ժամանակը չափվում է վայրկյաններով, այլ ոչ թե ժամանակը չափվում է ավելի քիչ, քան մեկ երկրորդ պարբերականությամբ), մինչդեռ I / O buffers սովորաբար կարճաժամկետ ֆիքսված (սովորաբար չափվում է զգալիորեն պակաս, քան Շուրջօրյա ժամանակ, հնարավոր է մի քանի milliseconds): Իսկապես, OS ունի հատուկ հաստատություն «արագ ամրագրելով« դրանք կարճաժամկետ ֆիքսված տվյալների buffers (ամրագրելով, որը կատարվում է առանց դիմելու ժամանակ `սպառող վերահսկիչ: Բացի այդ, OS - ն ևս մեկ հաստատության համար վերծանել է նրան, որ դիմումը երկարաժամկետ կայուն լինելու համար ամրագրված անորոշ ժամկետով, հնարավոր է օր, ամիս կամ նույնիսկ տարիների (Սակայն, այս հաստատության անվերապահորեն պահանջում է, որ առաջին հերթին պետք է հայտը swapped - դուրս, հնարավոր է նախընտրած - հիշողության, կամ խառնուրդ նախընտրելի և ոչ արտոնյալ հիշողություն, և երկրորդ լինել swapped - ի ոչ նախընտրելի հիշողության, որտեղ բնակվում է տևողությունը, սակայն երկար ժամանակ է, որ կարող է, այդ հաստատության ղեկավարի օգտագործում փաստաթղթային Call հրահանգներ ):
Վիրտուալ - իրական գործողություն [խմբագրել]
OS/VS1 նմանատիպ OSes, որոշ հատվածներում համակարգերի հիշողության մեջ կառավարվում է վիրտուալ `իրական ռեժիմ, որտեղ յուրաքանչյուր վիրտուալ հասցե համապատասխանում է իրական հասցեին, մասնավորապես, ընդհատել մեխանիզմներին, paging վերահսկող և աղյուսակներ է հին համակարգերի , կիրառման ծրագրերը `օգտագործելով ոչ ստանդարտ I / O կառավարման. Օրինակ, IBM-ի Z / OS ունի 3 եղանակները (վիրտուալ-վիրտուալ, վիրտուալ, իրական և վիրտուալ-ֆիքսված):
=== === Կալսում Երբ paging օգտագործվում է, որպես խնդիր կոչվում է «կալսում» կարող է առաջանալ, որտեղ համակարգչային ծախսում է unsuitable գումար ժամանակ swapping էջեր և աջակցության մի խանութ, հետևաբար դանդաղում է օգտակար աշխատանք: Ավելացնելով իրական հիշողության ամենապարզ պատասխանը, սակայն բարելավման ծրագրի նախագծման, պլանավորման և հիշողության օգտագործման կարող է օգնել.
== == Segmented վիրտուալ հիշողություն Որոշ համակարգեր, ինչպիսիք են Burroughs B5500, չեն օգտագործում paging, փոխարենը նրանք օգտագործում segmentation, բաժանարար վիրտուալ հասցե տարածքների մեջ փոփոխական-երկարությունը հատվածների: Վիրտուալ հասցեն այստեղ բաղկացած է մի շարք հատվածի և օֆսեթ շրջանակներում հատվածում, որն Intel 80286 աջակցում է նման segmentation սխեման որպես տարբերակ, բայց դա հազվադեպ է օգտագործվում: Segmentation և paging միասին կարող են օգտագործվել յուրաքանչյուր հատվածի կողմից բաժանելու մեջ էջերը, համակարգեր, այդ հիշողության կառուցվածքի, ինչպես, օրինակ, Multics և IBM System/38, սովորաբար paging - հիմնական, segmentation ապահովում հիշողության պահպանության: Intel 80386, IA-32 Պրոցեսորների, տարբեր հատվածների 32-bit գծային, տարածության paged հասցեն: Սեգմենտները կարող է տեղափոխվել, և դուրս գալ այդ տարածքներ, այնտեղ կարող են լինել »էջը» և հիմնական հիշողության մեջ՝ ապահովելով երկու մակարդակները վիրտուալ հիշողության, քանի որ եթե ցանկացած օպերացիոն համակարգերի փոխարեն օգտագործվում է միայն paging. Վաղ ոչ ապարատային օժանդակությամբ x86 virtualization լուծումներ համակցված paging և segmentation, քանի որ x86 paging առաջարկում է միայն երկու պահպանության ոլորտների Քանզի VMM / Հյուրատետր OS / Հյուրատետր դիմումների բուրգ կարիք ունի երեք [2] Կաղապար:RP միջև տարբերությունը paging և segmentation համակարգերի ոչ միայն հիշողության բաժանում, segmentation տեսանելի է Օգտվողի գործընթացները, ինչպես նաև հիշողության մոդելի իմաստաբանություն. Ուստի, հիշողության փոխարեն, որ կարծես մի մեծ վեկտոր է, կառուցվածքային մեջ բազմաթիվ բացատներով է:
Այս տարբերությունը կարևոր հետևանքներ ունի, մի հատվածի էջը փոփոխական երկարության կամ հասարակ ձևով երկարացնել հասցեի տարածքով:Segmentation, որը կարող է ապահովել մի մակարդակի հիշողության մոդելը, որտեղ չկա տարբերակման միջև գործընթաց հիշողությունից: ֆայլի համակարգը բաղկացած է միայն ցուցակի հատվածների (ֆայլերի) mapped գործընթացի մեջ ներուժը հասցեի տարածքում Սա ոչ թե նույն, ինչպես մեխանիզմների նախատեսված կոչն է անում, ինչպիսիք են mmap և win32 's MapViewOfFile, քանի որ միջգերատեսչական ֆայլի ցուցիչների չեն աշխատում, երբ քարտեզագրման ֆայլերի մեջ կիսա - կամայական տեղերը ի Multics, ֆայլի (կամ մի հատվածի մի հատվածն բազմամյա ֆայլ) է mapped մեջ մի հատվածի մեջ հասցեի տարածքում, այնպեսի ֆայլերը միշտ mapped է հասարակության մի հատվածի սահմանամերձ Ֆայլի կապ է բաժնում և կարող է պարունակել ցուցիչներ, որը փորձ է բեռնել ցուցիչի մեջ գրանցամատյան կամ անուղղակի հղման միջոցով այն առաջացնում է ծուղակ: Չլուծված ցուցիչ է պարունակում՝ նշելով անունը, հատվածը, որոնց ցուցիչը վերաբերում է և օֆսեթ շրջանակներում հատվածը, որի համար handler քարտեզների հատվածում հասցեի տարածքի մեջ է դնում հատվածը, համարը ցուցիչի մեջ փոխվում է հատկորոշիչը դաշտի այն ցուցիչը, որպեսզի այն այլևս առաջացնում է ծուղակը, և վերադառնում է այն կոդը, որտեղ տեղի է ունեցել ծուղակ, կրկին իրականացնելու կարգադրությամբ, որոնք պատճառ են թակարդի:[3] այս վերացնում անհրաժեշտությունը a linker ամբողջովին և աշխատում է, երբ տարբեր գործընթացներ քարտեզ նույն ֆայլի մեջ տարբեր վայրերում, իրենց անձնական հասցեն բացատների:
See also [խմբագրել]
- Computer memory
- Memory address
- CPU design
- Page (computing)
- Segmentation (memory)
- Memory management
- Memory allocation
- Protected mode, an x86 mode that allows for virtual memory.
Ծանոթագրություններ [խմբագրել]
- ↑ Patterson&Hennessy «Computer organisation and Design. Hardware Software Interface.» 4th edition. Chap 5.4, page 503
- ↑ org/archives/hc17/1_Sun/HC17.T1P2.pdf ժե Սմիթ, Ռ. Uhlig (օգոստոսի 14, 2005)Վիրտուալ մեքենաներ `ճարտարապետական, Implementations և Applications, HOTCHIPS 17, Tutorial 1, մաս 2
- ↑ [http:/ / www.multicians.org / exec - env.html «Կաղապար:Citation error»]։ http:/ / www.multicians.org / exec - env.html։
Գրականություն [խմբագրել]
- Hennessy, John L.; and Patterson, David A.; Computer Architecture, A Quantitative Approach (ISBN 1-55860-724-2)
Արտաքին հղումներ [խմբագրել]
- Linux Memory Management
- 161&Itemid= 32 Linux Kernel Mailing List Discussion
- Pointers to virtual memory visualizations
- The Virtual-Memory Manager in Windows NT
Գրականության ցանկ [խմբագրել]
- Вахалия Ю. UNIX изнутри. — СПб.: Питер, 2003. С.844. ISBN 5-94723-013-5
- Иртегов Д. Введение в операционные системы. СПб.: Питер, 2002.
- Bruce Jacob, Trevor Mudge. Virtual Memory: Issues of Implementation. — Los Alamitos, CA, USA: IEEE Computer Society Press, 1998. ISSN:0018-9162
Ծանցանկ [խմբագրել]
- ↑ Patterson&Hennessy «Computer organisation and Design. Hardware Software Interface.» 4th edition. Chap 5.4, page 503
- ↑ org/archives/hc17/1_Sun/HC17.T1P2.pdf ժե Սմիթ, Ռ. Uhlig (օգոստոսի 14, 2005)Վիրտուալ մեքենաներ `ճարտարապետական, Implementations և Applications, HOTCHIPS 17, Tutorial 1, մաս 2
- ↑ [http:/ / www.multicians.org / exec - env.html «Կաղապար:Citation error»]։ http:/ / www.multicians.org / exec - env.html։