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

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

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


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


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


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


== Արտաքին հղումներ ==
Linux Memory Management
161&Itemid= 32 Linux Kernel Mailing List Discussion Archived 2016-03-04 at the Wayback Machine.
Pointers to virtual memory visualizations Archived 2006-08-29 at the Wayback Machine.
The Virtual-Memory Manager in Windows NT


== Գրականության ցանկ ==
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 Archived 2011-11-22 at the Wayback Machine. (ռուս.)
FAQ по файлу подкачки на WinBlog.ru (ռուս.)