Виртуальная адресация памяти
W95 позволяет использовать больший, чем установленный на ПК, объем оперативной памяти. Точнее W95 использует возможности МП 386 по обмену страницами памяти с жестким диском. Если потребности программ превышают возможности ПК, т.е. участки (страницы) памяти, которые требуется реже всего, откладываются на жесткий диск. Для этого используется специальный файл обмена, он же файл подкачки, он же файл виртуальной памяти. Особенностью файла подкачки динамически изменять свой размер в зависимости от потребностей системы.
Процессор делит доступное адресное пространство на 4-х килобайтные страницы общим числом около миллиона (220), что и дает 4 Гбайта адресуемой памяти. Диспетчер виртуальной памяти процессора устанавливает соответствие между виртуальными адресами страниц памяти и их физическим расположением в оперативной памяти ПК или в файле виртуальной памяти. Он же и контролирует объем страниц между ОЗУ и виртуальной памятью 4Гбайта адресов памяти W95 распределяет следующим образом:
4 Гбайт | Операционная система | Kernel, CDI, код нулевого кольца | Системная область |
3 Гбайт | Программы | DLL и другие разделяемые объекты | Разделяемая область |
2 Гбайт | Программы Win 32 и Win 16 | Область приложений | |
4 Мбайт | Программы Win 16 | ||
1 Мбайт | Программы MS-DOS |
0-1Мбайт. Доступно только для программ MS-DOS и драйверов устройств реального режима;
1-4Мбайт. Используется только программами Win16. Операционная система и программы Win32 не занимают эти адреса.
4Мбайт-2Гбайт. Используется программами Win32 и некоторыми программами Win16.
2Гбайт-3Гбайт. Используется разделяемыми объектами, такими, как динамически загружаемыми модулями COMMDLG.DLL и COMMDLG32.DLL, содержащими элементы стандартных диалоговых окон Windows.
3Гбайт-4Гбайт. Используется только ОС для ее внутренних нужд.
Когда виртуальный адрес, по которому обращается применение, не соответствует странице, расписанной в физической памяти, процессор сообщает об ошибке и диспетчер виртуальной памяти подкачивает требуемую страницу из файла обмена. При этом предварительно обычно приходится освобождать соответствующий объем физической памяти и сбрасывать какую-нибудь другую страницу из памяти в файл обмена. Для этого используется классический алгоритм «удаление стариков» (LRU, least recently used) – т.е. сбрасывает в файл обмена наиболее редко используемые страницы памяти.
Многозадачность
Microsoft характеризует W95 как многозадачную и многопоточную система. Это значит, что в операционной системе может одновременно выполняться несколько процессов, причем в пределах одного процесса могут параллельно существовать несколько более простых процессов, или несколько независимых потоков.
Каждая работающая программа является процессом, причем каждый процесс состоит хотя бы из одного потока, DOS – программы всегда состоят из одного потока. Поток может использовать память и системные ресурсы, выделенные ему материнским процессом, но не может сам обращаться к операционной системе за дополнительными ресурсами. В каждый момент времени выполняется один поток.
В режиме вытесняющей многозадачности каждый поток выполняется определенное количество времени или до тех пор, пока приоритет другого потока не превысит его приоритет. Приоритеты регулируются операционной системой, поэтому ни один процесс не может монопольно использовать ресурсы. Каждому приложению отводится строго определенная доля процессорного времени и в любой момент оно может быть переведено в фоновый режим. Программы DOS и Win32 выполняются в режиме вытесняющей многозадачности.
При кооперативной многозадачности каждая программа получает столько времени сколько ей нужно. Программы делят процессорное время периодически опрашивая друг друга. Все программы Win16 выполняются в режиме кооперативной многозадачности и все вместе предоставляют для ОС как бы один процесс, работающий в режиме вытеснения. Это сделано для совместимости с программами Windows написанными для работы в среде кооперативности.
Прикладные программы выполняются в виртуальных машинах, которые для них создают операционная система и процессор.
Виртуальная машина представляет собой среду, имитирующую отдельный (виртуальный) ПК со всеми его системами и периферийными устройствами. Процессор при этом имитирует работу отдельного процессора для каждой виртуальной машины, а ОС снабжает его виртуальными устройствами. Наличие системы виртуальных машин позволяет программно не отслеживать и использование ресурсов ПК другими программами, т.к. память и наборы ресурсов каждой виртуальной машины изолированы от памяти ресурсов других виртуальных машин.
При загрузке W95 всегда создается системная виртуальная машина в которой выделяется отдельное адресное пространство для ядра системы – модулей Kernel, GDI и User.
Каждому запуску 32-разрядному приложению W95 (их называют Win32) также выделяется отдельное адресное пространство в пределах системной виртуальной машины. Для всех 16-разрядных приложений Win16 ОС W95 использует общее адресное пространство в пределах системной виртуальной машины.
Каждое приложение DOS выполняется в собственной виртуальной машине в режиме V86.
Управление программами в W95 основано на модели передачи сообщений. Каждое событие, такое как перемещение мыши, нажатие клавиши или поступление данных по сети, приводит к генерации сообщения. Когда программам нужно получить ту или иную слугу от ОС или передать данные, они тоже генерируют сообщения, каждое из которых попадает в соответствующую очередь сообщений.
Для каждого Win32 приложения и для каждого создаваемого ими потока используются отдельные очереди сообщений. Это делает ошибку в Win32 приложении фактически безопасной для остальных приложений. Если приложение Win32 пытается выполнить запрещенные действия, система принудительно завершает его, выдав сообщение о недопустимой операции. Если программа «зависла», она перестает реагировать на действия пользователя, но на стабильность системы, оно, как правило, не влияет. Такое приложение можно удалить, нажав Ctrl+Alt+Del. Такой метод прерывания программы называется локальной перезагрузкой.
Приложение Win16 имеют общую очередь сообщений. Зависание программы Win16 более опасно: остальные программы Win16 перестают получать сообщения и тоже зависнут.
Виртуальные машины DOS работают в режиме вытесняющей многозадачности, деля процессорное время с системой виртуальной машиной. Виртуальные машины DOS не участвуют в передаче сообщений и не создают очередей сообщений. При выходе из программы MS-DOS (как и при ее принудительном прекращении) завершается работа виртуальной машины, и освобождается использовавшаяся ею системные ресурсы.
В каждый момент времени каждый поток имеет определенный приоритет, управляемый целым числом от 0 до 32. Управление процессором переходит к тому потоку, который имеет на данный момент самый высокий приоритет.
Приоритеты потоков динамически изменяет планировщик так, чтобы смогли отработать все потоки.
В назначении приоритетов участвуют два планировщика – первичный и вторичный или диспетчер квантования. Первичный планировщик вычисляет приоритеты потоков, а вторичный определяет количество процессорного времени, выделяемое каждому потоку. Каждые 20 мс первичный планировщик сравнивает текущие приоритеты потоков, выбирает поток с наивысшим приоритетом и передает ему управление. Если потки имеют одинаково высокие приоритеты, и планировщик выделяет каждому поочередно равное количество времени. Вторичный планировщик повышает или понижает приоритеты потоков, например повышает приоритет потоков, находящихся в ожидании пользовательского ввода, если поток обладает низким приоритетом, он начинает повышаться, периодически повышается приоритет каждого потока, чтобы выполнялись приложения с низким приоритетом, если приоритет потока наивысший, он начинает понижаться.
Файловая система W95
Главная особенность файловой системы W95 для пользователя – то, что максимальная длина имени файла может достигать 256 символов, включая пробелы. Ограничением длины имени файла служит путь к файлу: суммарная длина пути и имени файла не может превышать 260 символов.
При создании файла ему присваивается сразу два имени – длинное и короткое, в стиле MS-DOS. Короткое имя образуется из длинного путем удаления из него пробелов и символов \,:,*,?,»,<,>,|. Для 8-буквенного имени файла используются первые 6 оставшихся символов длинного имени файла, символ «~» и порядковый номер. Для 3х-буквенного расширения используются первые три символа после последней точки в длинном имени файла.
В сеансе MS-DOS под W95 можно использовать и короткие и длинные имена, в приглашении к вводу команды отображается длинное имя каталога. Чтобы использовать те символы, которые были запрещены к использованию в прежних версиях MS-DOS, нужно брать имя файла в кавычки. Например:
CD “My Documents”
Можно пользоваться сокращенным вариантом имени
CD MYDOU~1
Создать файл с длинным именем в окне MS-DOS можно, например, так:
C:\>”Файл с длинным именем.TXT”