Վիրտուալ հիշողություն
Վիրտուալ հիշողություն (անգլերեն՝ 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 եղանակները (վիրտուալ-վիրտուալ, վիրտուալ, իրական եւ վիրտուալ-ֆիքսված):Cite error: Closing </ref> missing for <ref> tag չեն օգտագործում paging, փոխարենը նրանք օգտագործում segmentation, բաժանարար վիրտուալ հասցե տարածքների մեջ փոփոխական-երկարությունը հատվածների: Վիրտուալ հասցեն այստեղ բաղկացած է մի շարք հատվածի եւ օֆսեթ շրջանակներում հատվածում, որն Intel 80286 աջակցում է նման segmentation սխեման որպես տարբերակ, բայց դա հազվադեպ է օգտագործվում: Segmentation եւ paging միասին կարող են օգտագործվել յուրաքանչյուր հատվածի կողմից բաժանելու մեջ էջերը, համակարգեր, այդ հիշողության կառուցվածքի, ինչպես, օրինակ, Multics եւ IBM System/38, սովորաբար paging - հիմնական, segmentation ապահովում հիշողության պահպանության: <Սայլակ > Կաղապար:Քաղվածել Հյուրատետր</ref>Cite error: Closing </ref> missing for <ref> tag այս վերացնում անհրաժեշտությունը a linker ամբողջովին [2] եւ աշխատում է, երբ տարբեր գործընթացներ քարտեզ նույն ֆայլի մեջ տարբեր վայրերում, իրենց անձնական հասցեն բացատների:[3]
Cite error: <ref> tags exist, but no <references/> tag was found