Реферат - Архитектура MS Windows 9х
.pdf1
Организация памяти Windows
Используется виртуальная адресация – такой способ управления памятью, при котором адресуемая памяти ПК делится между процессами и прозрачно отображается на доступные области физической памяти. Центральный процессор делит доступное адресное пространство на страницы по 4 Кб общим числом 220~1 млн., что дает 4 Гб (232=4 Гб) адресуемой памяти при 32 битной шине адреса. Они распределяются следующим образом.
4Гб |
ОС |
Код 0 кольца |
Системная |
|
|
||||
|
||||
|
|
Ядро системы |
область |
|
|
|
|
||
3Гб |
|
|
|
|
|
|
Модули DLL и другие |
Разделяемая |
|
|
|
|||
|
|
разделяемые объекты |
||
|
|
Модули commdlg.dll, |
область |
|
|
|
|
||
2Гб |
|
comdlg32.dll |
|
|
|
|
|
||
|
Программы |
Программы |
|
|
|
|
|||
|
W32 и W16 |
|
||
4Мб |
|
Область |
||
|
|
|||
Программы |
||||
|
|
|||
|
|
W16 |
приложений |
|
|
|
|||
1Мб |
|
|||
|
|
|
||
Программы |
|
|||
|
|
|
||
|
|
MS-DOS |
|
|
|
|
|
|
Диспетчер виртуальной памяти (ДВП) устанавливает соответствие между виртуальными адресами станиц и их физическим расположением в ОЗУ или на жестком диске. Обмен страницами регулирует ДВП. Редко используемые страницы откладываются на жесткий диск в файл подкачки (файл виртуальной памяти). Он имеет динамический размер и может располагаться во фрагментированных участках, а также использовать сжатые диски.
|
|
|
|
|
2 |
|
|
|
|
|
|||
|
|
|
|
|
|
Архитектура Windows |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Средства |
|
|
|
|
|
|
|
|
|
||
|
|
пользовательског |
|
|
|
Приложения |
|
|
|||||
|
|
о интерфейса 32- |
|
|
|
|
|
|
|
|
|
||
|
|
разрядная |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
оболочка |
|
|
|
|
Реестр |
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ядро Windows |
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
||||
|
|
Диспетчер |
|
|
Диспетчер |
|
|
Диспетчер |
|
||||
|
|
виртуальной |
|
|
настраиваемой |
|
|
конфигурации |
|
||||
|
|
машины (ДВМ) |
|
|
файловой |
|
|
|
|
|
|||
|
|
VMM |
|
|
системы |
|
|
|
|
|
|||
|
|
|
|
|
IFS |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
||||||
|
|
|
Драйверы устройств |
|
|
|
|||||||
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
||||||
|
|
|
Аппаратные средства |
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
Ядро Windows |
|
|
|
||||
|
|
|
|
|
|||||||||
|
|
16-разрядная часть |
|
32-разрядная часть |
|||||||||
|
|
krnl386.exe |
|
|
|
|
|
|
kernel32.dll |
||||
|
|
user.exe |
|
|
|
|
|
|
user32.dll |
||||
|
|
gdi.exe |
|
|
|
|
|
|
gdi32.dll |
Каждый компонент включает пару: одну 32-разрядную DLL и одну 16разрядную, реализованную в модуле exe. Везде, где это дает заметный выигрыш в производительности, используется 32-разрядный код. Существующий 16-разрядный сохранен там, где без него нельзя обойтись, где 32-разрядный код не дает существенного увеличения производительности или для совместимости с реальным режимом.
Kernel – ядро
Модуль ядра операционной системы (krnl386.exe и kernel32.dll) обеспечивает базовые функциональные возможности операционной системы: поддержку файлового ввода/выводы, управление виртуальной памятью и планирование задач. Модуль krnl386.exe инициализирует в процессе загрузки
3
32-разрядную часть kernel.dll.Kernel отвечает за выделение виртуальной памяти, разрешение импорт-ссылок и выполняет поддержку подкачки страниц по запросу. При выполнении программы модуль отвечает за исполнение потоков каждого процесса и распределение между ними процессорного времени. Обработка исключений – еще одна функция ядра. Исключение – событие, возникающее при выполнении программы и требующее вмешательства для прерывания нормального потока управления. При этом управление передается самой программе для принятия решения. Также kernel обеспечивает взаимодействие 16-разрядного и 32-разрядного кодов, применяя для преобразования 16-разрядного формата в 32-разрядный специальный процесс – трансформацию.
User – пользователь
Модуль user обслуживает события, генерируемые пользователем: управляет вводом с клавиатуры, от мыши и других координатных устройств, а также вводом через интерфейс пользователя (окнами, значками, меню и др.), также управляет взаимодействием со звуковыми драйверами, таймером и коммуникационными портами. Кроме того, выполняет операции асинхронного ввода для любого ввода в систему и приложения.
Основные функции выполняет модуль user.exe. Модуль user32.dll выполняет переадресацию вызовов 16-разрядному модулю.
GDI (Graphic Device Interface) – интерфейс графического устройства
Это – графическая система, управляющая процессами отображения всех объектов Windows на экране и поддерживающая графический вывод на принтеры и другие устройства. Она отвечает за прорисовку графических примитивов, манипуляции растровыми изображениями и взаимодействие с аппаратно-независимыми графическими драйверами. Для реализации работы системы разработана 32-разрядная графическая машина – DIB-машина (Device Independent Bitmaps, аппаратно-независимая растровая графика). Она содержит набор оптимизированных универсальных графических функций для работы с графическими устройствами – монохромными, 16-цветными, 256-цветными, 16-разрядными (high color), 32-разрядными (true color) и
поддерживает прорисовку линий по методу Безье. Механизм сопоставления цветов изображения (ICM – Image Color Matching) обеспечивает соответствие между цветами экрана и устройств вывода.
4
Диспетчер конфигурации
Управляет конфигурированием системы, используется для поддержки функциональных возможностей технологии plug-and-play. В процессе конфигурирования могут участвовать множество шин различных архитектур и устройств. Диспетчер конфигурации для идентификации каждой шины работает с рядом подкомпонент.
Диспетчер
конфигурации
Перечислитель |
Арбитр |
Драйвер устройства |
BIOS
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Шина |
|
|
|
|
Шина |
|
|
|
Шина |
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Устройство |
|
|
|
Устройство |
|
|
|
Устройство |
||||
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Диспетчер конфигурации вызывает шинные перечислители – драйверы, ответственные за создание дерева устройств. Дерево устройств – иерархическое представление всех шин и устройств в компьютере. Каждая шина и устройство рассматриваются как узел. В процессе перечисления устройств шинный перечислитель отыскивает и собирает информацию от драйверов устройств или от BIOS. Для каждого устройства загружается драйвер, который после загрузки ждет, какие ресурсы будут выделены ему Диспетчером конфигурации. Эту функцию выполняет арбитр ресурсов. По окончании процессов конфигурирования системы Диспетчер конфигурации информирует драйверы устройств о конфигурации соответствующих устройств. Этот процесс повторяется, когда BIOS обнаруживает в системе новое устройство.
Диспетчер виртуальной машины (ДВМ)
Работу диспетчера обеспечивает файл vmm32.vxd. Выделяет ресурсы каждому приложению и системному процессу, выполняемому на компьютере. Создает и поддерживает виртуальную среду, в которой исполняются программы и системные процессы.
Виртуальная машина – среда в оперативной памяти ПК, которая кажется приложению отдельным компьютером – с теми же ресурсами, что и у физического компьютера.
5
В Windows создается одна виртуальная машина (ВМ) (системная) в которой используются все системные процессы, Win-16 и Win-32 приложения, и по отдельной виртуальной машине для каждой программы
DOS.
Системная ВМ |
|
|
|
|
||
|
|
|
ВМ |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
DOS |
|
Win-32 |
|
Win-16 |
|
||
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Win-32 |
|
Win-16 |
|
|
|
|
|
|
|
ВМ |
||
|
|
|
|
|
||
|
|
|
|
|
|
DOS |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
Win-32 |
|
Win-16 |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Основные функции ДВМ:
•распределение процессорного времени;
•подкачка страниц памяти;
•поддержка режима MS-DOS для программ DOS.
За выделение системных ресурсов приложениям и другим выполняемым на компьютере процессам, а также за распределение процессорного времени отвечает планировщик процессов. Исполняемое Win32 приложение называется процессом. Процесс состоим как минимум из одного потока. Поток – часть кода программы, которую можно выполнять одновременно с другими частями кода. Поток использует память и системные ресурсы, выделяемые процессу, но не обращается к операционной системе. В каждый момент времени может выполнятся один поток.
Для одновременного выполнения нескольких процессов в Windows применяются два метода: кооперативная многозадачность и вытесняющая (корпоративная) многозадачность.
При кооперативной многозадачности (использовалась в оболочке Windows 3.*) приложения работают в едином пространстве. Каждому приложению выделяется процессорное время в соответствии с его приоритетом. Значение приоритета фиксировано и не изменяется операционной системой. Для операционной системы они представляют единый процесс.
В режиме вытесняющей многозадачности (приложения Win-32 и DOSпрограммы) каждый поток выполняется определенное количество времени, пока приоритет другого потока не превысит его приоритет. Приоритеты распределяются операционной системой, поэтому один процесс или поток не
6
может захватить монопольное управление. Каждому приложению отводится определенное количество процессорного времени.
Механизм планирования приоритетов следующий. В конкретный момент времени каждый поток имеет определенный приоритет 0 … 32. Управление процессом переходит к потоку, имеющему наивысший приоритет. Приоритеты потоков динамически изменяются планировщиком. Имеется два планировщика: первичный и вторичный.
Первичный вычисляет приоритеты потоков, вторичный определяет количество процессорного времени, выделяемого потоку. Время выделяется квантами: 1 квант20 мс. Каждый квант первичный планировщик выбирает поток с наивысшим приоритетом и передает ему управление. Если потоки имеют одинаковые приоритеты, то каждому выделяется равное количество времени.
Вторичный планировщик повышает или понижает приоритеты по следующим правилам:
1)повышается приоритет потоков, находящихся в ожидании пользовательского ввода;
2)если у потока наинизший приоритет, то он начинает повышаться, и наоборот;
3)периодически повышается приоритет каждого потока, чтобы потоки не зависали.