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

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

**Վիրտուալ հիշողություն** (), ԷՀՄ-ի հիշողության կառավարման տեխնոլոգիա՝ մշակված բազմապրոցեսային օպերացիոն համակարգերի համար։ Վերոհիշյալ տեխնոլոգիայի կիրառման դեպքում յուրաքանչյուր ծրագրի համար օգտագործում են հիշողության հասցեավորման անկախ սխեմաներ, որոնք այս կամ այն կերպով արտացոլվում են ԷՀՄ-ի ֆիզիկական հացեի վրա։ Թույլ է տալիս մեծացնել հիշողության օգտագործման էֆեկտիվությունը միաժամանակ աշխատող ծրագրերի կողմից՝ կազմակերպելով միաժամանակյա անկախ հասցեային պրոցեսներ և ապահովում է հիշողության պաշտպանվածությունը տարբեր ծրագրերի միջև։ Նաև հնարավորություն է տալիս ծրագրավորողին օգտագործել ավելի շատ հիշողություն քան տեղադրված է համակարգչում։ Վերջինս տեղի է ունենում երկրորդային(երկրորդային հիշողություն է համարվում համակարգչի կոշտ սկավառակը) հիշողությունում չօգտագործվող էջերի հաշվին վերբեռնման շնորհիվ։
Վիրտուալ հիշողության օգտագործման դեպքում հեշտանում է ծրագրավորումը, քանի որ ծրագրավորողին այլևս անհրաժեշտ չէ հաշվի առնել համակարգչի հիշողության սահմանափակումները, կամ համաձայնեցնել հիշողության օգտագործումը այլ ակտիվ ծրագրերի հետ։ Ծրագրի համար անընդհատ հասանելի է հասցեային տարածությունը՝ անկախ ԷՀՄ-ում առկա օպերատիվ հիշողության ծավալից։

Վիրտուալ հիշողության մեխանիզմի կիրառումը թույլ է տալիս.
* հեշտացնել հիշողության հասցեավորումը
* ռացիոնալ կառավարել համակարգչի/ԷՀՄ-ի օպերատիվ հիշողությունը (պահպանել հիշողության միայն ակտիվ օգտագործվող հատվածները)
* մեկուսացնել պրոցեսները իրարից (պրոցեսը ենթադրում է որ ամբողջովին տիրապետում է հիշողությանը)
Այժմ այս տեխնոլոգիան ունի սարքավորումային աջակցում, բոլոր ժամանակակից կենցաղային պրոցեսներում։

## Պատմություն
1940-ական և 1950-ական թվականներին, մինչև վիրտուալ հիշողության զարգացումը, բոլոր ծրագրերը ստեղծվում էին հիշողության երկու մակարդակների՝ առաջնային և երկրորդային, առկայությամբ։ Վիրտուալ հիրշողության ստեղծման հիմնական պատճառ հանդիսացավ հիմնական հիշողության ծավալի մեծացման միտումի բացակայությունը, իսկ հիշողության ծավալի մեծացման նմանատիպ մեթոդը շատ ավելի հեշտ էր ծրագրավորողների համար։

## Վիրտուալ հիշողության էջային կազմակերպում
Գրեթե բոլոր ժամանակակից օպերացիոն համակարգերում վիրտուալ հիշողությունը կազմակերպվում է էջային հասցեավորման միջոցով։ Օպերատիվ հիշողությունը բաժանվում է էջերի՝ ֆիքսված երկարությամբ հիշողության հատվածների (օրինակ 4096 բայթ), որոնք հանդիսանում են հիշողության հատկացման մինիմալ մեծություններ (նույնիսկ 1բայթ ծավալով հարցման դեպքում համակարգը կհատկացնի հիշողության 1 էջ)։ Պրոցեսները դիմում են հիշողությանը վիրտուալ հիշողության հասցեի միջոցով, որը իր մեջ պարունակում է էջի համարը և այդ էջի ներսում տեղափոխությունները։ Պրոցեսորը վերափոխում է վիրտուալ էջի համարը համապատասխան ֆիզիկական էջի հասցեին՝ ասոցատիվ հեռարձակման բուֆերի միջոցով։ Եթե չի հաջողվում իրագործել վերը նշված գործողությունը, ապա անհրաժեշտ է դիմել էջերի աղյուսակին (այսպես կոչված Page Walk), որն իրականացվում է կամ անմիջապես պրոցեսորի, կամ օպերացիոն համակարգի կողմից՝ կախված ճարտարապետությունից։ Եթե էջը դուրս է բեռնված օպերատիվ հիշողությունից, ապա օպերացիոն համակարգը վերբեռնում է այն կոշտ սկավառակից։ Հիշողության հատկացման հարցման դեպքում օպերացիոն համակարգը կարող է կոշտ սկավառակի վրա ստեղծել այնպիսի էջ, որին երկար ժամանակ հարցում չի եղել։ Կրիտիկական տվյալները (օրինակ՝ գործարկված և աշխատող ծրագրերի կոդը, համակարգի միջուկի կոդն ու հիշողությունը) սովորաբար գտնվում են օպերատիվ հիշողությունում (բացառություններ կան, սակայն դրանք չեն վերաբերում այն հատվածներին, որոնք պատասխանատու են սարքավորումային դադարների, էջերի աղյուսակի և վերբեռնման ֆայլի աշխատանքի համար)

## Ծանոթագրություններ

## Գրականություն
* 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

## Արտաքին հղումներ
* 621004 Virtual Memory: Issues of Implementation 
* Драйвер виртуальной памяти, использующий Linux swap раздел 
* Увеличение файла подкачки в Microsoft Windows XP/Vista/7  
* FAQ по файлу подкачки на WinBlog.ru 
*Linux Memory Management
*161&Itemid= 32 Linux Kernel Mailing List Discussion 
*Pointers to virtual memory visualizations 
*The Virtual-Memory Manager in Windows NT

Կատեգորիա:Վիրտուալ հիշողություն