Վիրտուալ հիշողություն

Վիքիպեդիայից՝ ազատ հանրագիտարանից
Վիրտուալ հիշողությունը համատեղում է ակտիվ (օպերատիվ հիշողության սարքում) և ոչ ակտիվ (սկավառակի վրա) հիշողություները, մեկ մեծ հիշողության հասցեների շարունակական տիույթում

Վիրտուալ հիշողություն (անգլ.՝ 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[խմբագրել]

Ծանոթագրություններ[խմբագրել]

  1. Patterson&Hennessy «Computer organisation and Design. Hardware Software Interface.» 4th edition. Chap 5.4, page 503
  2. org/archives/hc17/1_Sun/HC17.T1P2.pdf ժե Սմիթ, Ռ. Uhlig (օգոստոսի 14, 2005)Վիրտուալ մեքենաներ `ճարտարապետական, Implementations և Applications, HOTCHIPS 17, Tutorial 1, մաս 2
  3. [http:/ / www.multicians.org / exec - env.html «Error: no |title= specified when using {{Cite web}}»]։ http:/ / www.multicians.org / exec - env.html։ 

Գրականություն[խմբագրել]

  • Hennessy, John L.; and Patterson, David A.; Computer Architecture, A Quantitative Approach (ISBN 1-55860-724-2)

Արտաքին հղումներ[խմբագրել]

Գրականության ցանկ[խմբագրել]

  • Вахалия Ю. 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

Ծանցանկ[խմբագրել]

Հղումներ[խմբագրել]