Виртуална памет и пейдж файл (page file)

Виртуална паметИзползването на виртуална памет е често срещан подход в операционните системи. Това е така понеже тя предоставя доста преимущества, на ниска цена.

Както знаете всеки компютър разполага с оперативна памет (RAM), в която се разполагат всички стартирани програми. Всеки един техен процес заема част от паметта и ако отворим прекалено много програми тя може да свърши. Тук идва на помощ виртуалната памет.

С използването на виртуална памет, периодично части от RAM паметта, които не сте използвали скоро, се записват на твърдия диск. По този начин се освобождава място от RAM паметта за нови програми. Прехвърлянето на части от паметта и записването им на хард диска става автоматично и се ръководи от операционната система. Благодарение на виртуалната памет вие разполагате с много повече памет от колкото е вашата реална оперативна памет. Получава се много по-ефективно използване на RAM паметта, като само най-често достъпваните части от нея остават реално върху нея, а неизползваните се прехвърлят на хард диска. Ако от някой процес бъде поискана информация намираща се на хард диска, то тя се прехвърля в паметта. Ако няма празна памет, то част от заетата се прехвърля на хард диска.

Какво е пейдж файл (page file)?

Мястото на твърдия диск, където се записва тази информация се нарича пейдж файл (page file). Името идва от думата страница (page). При използване на виртуална памет, реалната памет се разделя на равни по големина участъци, наречени страници. Това са и парчетата информация които се прехвърлят.

Идеята на виртуалната памет се състои в това, всяка програма да си мисли че разполага с повече памет отколкото реално има свободна. Използват се виртуални адреси, които са различни от истинските адреси в паметта. Така два различни процеса може да работят с еднакви виртуални адреси. По-късно те се преобразуват в различни реални адреси. Тоест програмите работят с виртуалните адреси, а хардуера с реалните. За да бъде преобразуван един виртуален адрес в реален се използва таблица на страниците (page table). В тази таблица се съдържа информация, която асоциира всяка виртуална страница, или с адрес в реалната памет или с адрес в пейдж файла (page file).

Къде трябва да бъде пейдж файла (page file)?

За по-бърза работа на виртуалната памет, пейдж файла трябва да бъде лесно и бързо достъпван от главата на хард диска. Ако имате един хард диск, разположете пейдж файла в този дял, в който има най-много активност, тоест където са инсталирани програмите. Там е най-голям шанса да е главата на хард диска през повечето време. Ако имате повече от един хард диск, разположете пейдж файла в този, в който не е инсталирана операционната система и в който няма голяма активност. Така когато веднъж файла бъде достъпен главите на този хард диск ще си останат там и ще са готови да го достъпят бързо.

Каква трябва да е големината на пейдж файла?

Това е доста често обсъждан въпрос. За жалост отговорът не е много прост и еднозначен. Доста пъти съм виждал да се препоръчва големината му да е 1.5 или 2 пъти размера на RAM паметта. Също минималната и максималната му големина да са еднакви за да не се получава бавене при промяна на големината му. Ако спазя тези препоръки трябва да настроя моят пейдж файл (page file) да е винаги 3GB. Това не е най-доброто решение.

Минималната му големина е добре да е толкова колкото е нормално неговата ползваемост. Погледнете в Task Manager-а и вижте при нормална работа колко долу горе е неговата големина. Това е стойността, която ще ви гарантира че няма непрестанно да се увеличава и намалява. Максималният му размер вече не е проблем да е доста голяма стойност, при положение че имате място на твърдият диск.

Примерно аз имам 1.5GB RAM памет, а като погледна големината на пейдж файла в момента е около 400 – 500MB. Отворил съм браузър, антивирусна, скайп и още няколко малки програми които по принцип са отворени, плюс още една работна програма. Общо взето това е най-честото състояние на компютъра ми. Смятам да задам минимална големина на пейдж файла (page file) 500MB, а понеже имам много място ще задам максимална големина 2GB. Тези 2GB плюс моите 1.5GB RAM памет са ми напълно достатъчни, поне във Windows XP. Естествено ще е още по-добре ако имам повече RAM, тогава ще се използва още по-малко виртуалната памет.

Ако на вашият компютър използвате няколко потребителски акаунта и при смяна между акаунтите остават по много програми включени, вероятно ще ви трябва по-голям пейдж файл.

Недостатъци на виртуалната памет

Недостатъците на виртуалната памет са главно два. Първият е че пейдж файлът заема място от твърдия диск. Всъщност това не е почти никакъв проблем, освен ако твърдият ви диск е с малък капацитет. Вторият и основен недостатък е свързан със скоростта на твърдия диск. Докато оперативната памет е доста бърза, не можем да кажем същото за хард диска. Неговата скорост на четене/запис е доста по-ниска и това значително намалява бързодействието при ползване на виртуална памет. Ако един компютър разполага с малко оперативна памет, той все повече разчита на виртуалната. Така той често обменя информация с пейдж файла и това се усеща, като значително забавяне в работата. При достатъчно оперативна памет, почти липсва забавяне дължащо се на виртуалната памет.

История на виртуалната памет

През 40-те и 50-те години на 20-ти век, преди въвеждането на виртуалната памет, по-големите програми сами са изпълнявали нейните фунции. Те са ръководели прехвърлянето на информация между първостепенното и второстепенното устройство за съхранение и обратно (от RAM към хард диск и обратно). Това е и една от причините за въвеждане на виртуалната памет – да облекчи програмистите при направата на тези програми.

Виртуалната памет е разработена в периода около 1959-1962 година. Естествено имало е доста проблеми и спорове свързани с нея. Примерно нуждата от по-сложен и по-скъп хардуер и притеснението на специалистите че технологията ще е много по-неефективна от предишните подобни технологии. През 1969 година споровете приключват и тя започва да се прилага в комерсиалните продукти. Първият такъв компютър използващ виртуална памет е NORD-1. Първоначално се е използвало сегментно разделяне на паметта, а по-късно странициране (paging).