Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SysSoft Lecture 04.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.7 Mб
Скачать

Незалежна (preemptive) багатозадачність

У Windows 3.1 – спільна (cooperative) багатозадачність. довільний Windows– продукт повинен був час від часу відмічати в черзі повідомлень (message queue) для того щоб ОС могла передати керування іншому продукту. Продукти, які не відмічаються в черзі повідомлень досить часто, монополізували весь процесорний час і фактично припиняли виконання інших задач.

У Windows 98 при роботі 32–розрядних продуктів використовується механізм незалежної багатозадачності. ОС сама визначає час, який відводиться кожному з працюючих продуктів та після його закінчення передає керування іншій задачі. Таким чином, 32–розрядні продукти більше не повинні віддавати керування – тепер сама ОС відбирає його в потрібний час.

Але 16–розрядні продукти для сумісності продовжують працювати в режимі cooperative.

Preemptive окрім всього пропонує також multithreading – багатопотоковий механізм, який полегшує розробку складних продуктів з паралельною функціональністю.

Запущений 32–розрядний продукт – це процес. Довільний процес складається, як мінімум, з одного ланцюжка виконання, тобто послідовності кодів, які виконуються один за одним. Саме такі ланцюжки і складають елементарну задачу з точки зору ОС і отримують від неї певні кванти часу.

Але 32–розрядний продукт може складатись і з декількох ланцюжків коду, що виконують різні задачі в рамках одного процесу.

Наприклад: текстовий редактор може використовувати один ланцюжок коду для вводу символів з клавіатури, другий – для перевірки орфографії і третій – для одночасного друку документа.

Такий розподіл дозволяє покращити ввід команд, забезпечити обробку даних у фоновому режимі.

Windows 98 підтримує багатотоковість рівні ОС.

Продукти, що реалізують багатотоковий механізм, можуть ефективно використовувати декілька процесорів у багатопроцесорній системі (наприклад Windows NT), шляхом запуску потоку із ланцюжків коду на своєму процесорі.

Взаємодія 32– та 16–розрядних кодів

Використання 32–розрядного, або 16–розрядного коду в тому або іншому місці Windows 98 визначається міркуваннями сумісності з існуючими продуктами, зменшенням робочої частини ОС і загальним підвищенням продуктивності.

Windows 98 застосовує 32–розрядний код скрізь, де це дозволяє суттєво покращити продуктивність без втрати сумісності. 16–розрядний код Windows 3.Х зберігається там, де потрібна сумісність з існуючими продуктами і там, де впровадження 32–розрядного коду суттєво збільшувало б вимоги до пам’яті без значного підвищення продуктивності.

Всі функції нижнього рівня – ядро ОС, менеджер пам’яті і всі підсистеми вводу/виводу та драйвери пристроїв (в тому числі, драйвери мережі та файлова система) – реалізовані у вигляді 32–розрядного коду.

Більшість 16–розрядного коду Windows 98 написано на асемблері, на самому низькому рівні і тому забезпечує продуктивність, що може бути порівняна з 32–розрядними програмами.

Багато функцій із модуля GDI (Graphics Device Interface) Windows 3.1 (система друку, система роботи із шрифтами) були переписані у 32–розрядний формат.

В той же час, більшість функцій керування вікнами із модуля User.exe залишені 16‑розрядними для збереження сумісності.

Компоненти системи розподілені між чотирма рівнями (Ring 0 .. Ring 3), які пропонують різний ступінь системного захисту. Захист рівня Ring 3 виконується внутрішніми засобами архітектури процесора Intel. Найменш захищений рівень Ring 0 вміщує код найвищого рівня (файлова система і менеджер віртуальних машин).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]