Windows 9.x позволяет использовать больший объем памяти, чем установленный на компьютере объем оперативной памяти. Если потребности программ превышают возможности компьютера, то те участки (страницы) памяти, которые требуются реже всего, “откладываются” на жесткий диск. Для этого используется специальный файл обмена, он же файл подкачки или файл виртуальной памяти. Особенностью виртуальной памяти Windows 95 является способность файла подкачки динамически изменять свой размер в зависимости от потребностей системы в отличии от файла подкачки Windows 3.1, который не мог превышать утроенный объем оперативной памяти и должен быть постоянным.
Процессор делит доступное адресное пространство на 4 – килобитные страницы общим числом около миллиона, что дает 4 Гбайт адресуемой памяти для 32 – разрядных приложений. Диспетчер виртуальной памяти процессора устанавливает соответствие между виртуальными адресами страниц памяти и их физическим местоположением. Диспетчер виртуальной памяти контролирует 4 Гбайт адресов памяти (причем не обязательно наличие 4 Гбайт физической памяти). Эти адреса распределены следующим образом:
0 – 1 Мбайт. Не используются программы Windows, доступны только для программ Ms-Dos. То есть приложение Ms-Dos считают себя загруженным ниже адреса 1 Мбайт.
1 – 4 Мбайт. Используется только программами Win 16. Программы Win 32 не занимают эти адреса.
4 Мбайт – 2 Гбайт. Используются программами Win 32 и некоторыми программами Win 16.
2 – 3 Гбайт. Используется разделяемыми объектами, такими, как динамически загружаемые модули.
3 – 4 Гбайт. Используется только ОС для ее внутренних нужд.
Когда виртуальный адрес, по которому обращается приложение, не соответствует странице, расположенной в физической памяти, то процессор сообщает об ошибке, и диспетчер виртуальной памяти подкачивает требуемую страницу из файла обмена. При этом предварительно обычно приходиться освобождать соответствующий объем физической памяти и сбрасывать какую-нибудь другую страницу из памяти в файл обмена. Для того чтобы оптимизировать процесс обмена между физической и виртуальной памятью, Windows 9.x применяет классический алгоритм «удаление стариков» – то есть сбрасывает в файл обмена наиболее редко используемые страницы памяти.
Многозадачность
Windows 9.x – многозадачная и многопоточная система. Это значит, что в ОС может «одновременно» выполняться несколько процессов, а в пределах одного процесса могут одновременно существовать несколько более простых процессов – потоков. Каждое работающее приложение Windows или Ms-Dos является процессом, причем каждый процесс состоит хотя бы из одного потока. Приложения Dos и Win 16 всегда состоят из одного потока. Поток может использовать память и системные ресурсы, выделяемые ему материнским процессом, но не может сам обращаться в ОС с требованием выделить новые ресурсы. В каждый момент времени выполняется один поток.
В режиме вытесняющей многозначности каждый поток выполняется определенное количество времени или до тех пор, пока приоритет другого потока не превысит его приоритет. Приоритеты распределяются ОС, поэтому ни один процесс или поток не может захватить монопольное управление. Каждому приложению отводится строго определенная доля процессорного времени, каждое приложение может быть в любой момент переведено в файловый режим. При вытесняющей многозначности кажется, что программы действительно работают одновременно. Программы Ms-Dos и 32 - разрядные приложения выполняются в режиме вытесняющей многозначности.
При кооперативной многозначности каждое приложение получает фактически столько процессорного времени, сколько оно считает нужным. Все приложения делят процессорное время, периодически ограничивая друг друга. Поэтому хорошо заметно, когда одно программа «тормозит» другую, а при длительных операциях с диском замирает практически вся другая деятельность. Все 16 - разрядные приложения выполняются под Windows примерно так же, как и под Windows 3.х – в режиме кооперативной многозначности. Таким образом, достигается совместимость со старыми приложениями Windows, написанными для выполнения в среде кооперативной многозначности.