Архитектура Windows 95/98. Установка и загрузка системы.

Архитектура Windows 9x.

Ядро Windows 3.1 состояло из трех составных частей - Kernel, User и GDI. Все три части были полностью 16-разрядными. В Windows 9х эти модули стали 32-разрядными, хотя система и сохранила в себе часть 16-разрядного кода.

Общая схема ядра Windows 9x показана на рис. ниже:

Архитектура Windows 95/98. Установка и загрузка системы. - student2.ru

USER32

User32.dll и User.exe создают и контролируют окна на экране, выполняя все запросы по созданию, перемещению, изменению размеров и уничтожению окон. User.exe, кроме того, обрабатывает запросы, относящиеся к значкам и другим элементам интерфейса пользователя, а также переадресует события, порожден­ные различными устройствами ввода, соответствующим приложениям.

GDI32

Gdi32.dll и Gdi.exe контролируют интерфейс графических устройств (Graphics Device Interface - GDI). GDI выполняет графические операции при создании изоб­ражения на системном дисплее, принтере и других устройствах.

KERNEL32

Kernel32.dll выполняет базовые функции операционной системы, в том числе:

· управление памятью:

· файловый ввод/вывод;

· загрузку программы;

· выполнение программы.

И 16-разрядные компоненты

Из схемы видно, что Kernel32 никогда не обращается к Кеrnе116. Последний модуль задействуется только при загрузке Windows. При запуске Windows 9х загружает 32-разрядные виртуальные драйверы (*.vxd) для всех знакомых ей устройств, в противном случае остается драйвер 16-разрядного реального режима (*.drv).

Комбинация 16-разрядного и 32-разрядного кода позволяет сохранить совместимость с существующими приложениями и драйверами и одновременно увеличить производи­тельность системы по сравнению с Windows 3.х. Для включения в Windows 95 16-разрядных компонентов есть три основные причины:

· код для 16-разрядных систем обеспечивает обратную совместимость с при­ложениями и драйверами, разработанными для Windows 3.х;

· в некоторых случаях 16-разрядный код выполняется быстрее, чем аналогич­ный 32-разрядный;

· 32-разрядный код требует больше памяти, чем эквивалентный 16-разрядный.

Подсистемы ввода/вывода и драйверы устройств, включая сетевые и файловые системы, являются полностью 32-разрядными, как и все компоненты управления памятью и планирования. Часто возникающая при этом проблема вызова 32-разрядной функции из 16-разрядного приложения (или наоборот) решается при помощи шлюзования.

Эта операция выполняется, когда операционная система преобразует вызов 16-разрядной функции в вызов 32-разрядной. Процессы Windows 95 и Windows NT не могут содержать одновременно и 16-разрядный, и 32-разрядный код. Шлюз позволяет коду с одной стороны границы вызывать код с другой ее стороны.

Итак, Windows 9х поддерживает два режима многозадачности :

· Кооперативный режим многозадачности является наследием Windows 3.х. Сама ОС не управляет переключением приложений Win16, это делают за нее сами приложе­ния, которые по закольцованной цепочке передают друг другу управление (в этой очереди стоит и сама ОС). Активное в данный момент приложение распоряжается практически всеми системными ресурсами и передает управление другому приложению только по своей инициативе. Таким образом, приложение может выполняться сколь угодно долго, не передавая другим управление (вспомните операции с диском). Если же это приложение еще неправильно работает и может "зависнуть", то другие при­ложения никогда не получат управления, в т. ч. и ОС, что приведет к краху всей сис­темы;

· Вытесняющий режим многозадачности отличается тем, что ОС может получить контроль над процессом без согласия выполняющего приложения (вытеснение). Процессорное время распределяется при помощи механизма приоритетов (0-32). Приоритеты могут динамичеки изменяться – например, если приложение А с низким приоритетом использует ре­сурс, нужный приложению В, которое имеет более высокий приоритет, то приоритет приложения А времен­но повышается, чтобы оно могло как можно быстрее освободить ресурс. Потом приоритет А вновь понижается.

При работе системы Windows 9x создается следующая виртуальная машина (для защиты адресного пространства и повышения стабильности системы):

Архитектура Windows 95/98. Установка и загрузка системы. - student2.ru

Из схемы видно, что все приложения Win16 образуют один процесс (в NT каждое 16-разрядное приложение выполняется как отдельный процесс), каждое приложение MS-DOS и Win32 является отдельным процессом. Каждый процесс Win32 может в свою очередь породить несколь­ко потоков.

Так как внутри процесса задачи Win16 выполняются в режиме кооперативной многозадачности (Windows 9x), при крахе одного из приложений Win16 могут "зависнуть" другие приложения Win16, а сама ОС и остальные процессы не должны повредится. Но в некоторых случаях могут "зависнуть" и остальные процессы (см. выше про кооперативный режим многозадачности).



Наши рекомендации