четверг, 11 июня 2015 г.

Виртуальная память

В современных ОС конецепция, при которой каждому процессу память компьютера представляется полностью доступной для его нужд (как будто других процессов, ядра и вообще ОС не существует) и ее размер равен максимум для данной архитектуры(реальный физический размер не обязан быть максимуммом).

При этом память разбита постранично(определенными секторами), ОС ведет статистику использования каждой страницы(это мое виденье, точно я в этом не уверен) и в случае нехватки физической памяти, сливает страницы разных процессов с низкой статистикой на сторидж-устройство.


"Общая виртуальная память" компьютера разделяется на kernel space и user space(userland). В первой части находятся ядро, его расширения и некоторые драйверы устройств, в юзерспейсе находятся библиотеки, приложения и некоторые драйверы. Это повышает отказоустойчивость и безопасность ОС.

Процессы приложений видят свою виртуальную память и не имеют доступа к чужой( при этом, если позволяют права, некоторые процессы могут запросить у ядра доступ к участку памяти другого(чужого) процесса - например debuggers). Также они могут запросить разделенную память с другими процессами у ядра, хотя можно использовать и другие техники межпроцессного взаимодействия - пайпы и сокеты.




Комментариев нет:

Отправить комментарий