Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС_Шеховцов_1.docx
Скачиваний:
73
Добавлен:
09.11.2019
Размер:
14.73 Mб
Скачать

19.3. Завантаження Windows хр

Завантаження Windows ХР починають стандартним способом 4- із передавання керування коду завантажувального сектора активного розділу диска. Головне його завдання - визначити місцезнаходження файла ntldr у кореневому каталозі цього розділу, завантажити його в пам'ять і передати керування на його точку входу. Зазначимо, що код завантажувального сектора залежить від того, яка файлова система встановлена для цього розділу: для FAT виконують один варіант, для NTFS - інший.

Файл ntldr можна розглядати як завантажувач другого етапу. Він починає своє виконання у 16-бітному режимі процесора, передусім переводить процесор у захи­щений режим і вмикає підтримку сторінкової організації пам'яті, після цього зчи­тує з кореневого каталогу файл boot.ini і робить його синтаксичний розбір. Ось фрагмент файла boot.ini:

[boot loader]

timeout=30

default=multi(0)disk(0)rdisk(0)partition(l)\WINDOWS

[operating systems]

multi(0)disk(0)rdisk(0)partition(l)\WINDOWS="Windows XP"

C:\="Windows 98"

Після тегу [boot loader] задано варіант завантаження за замовчуванням і час, після закінчення якого система автоматично завантажуватиметься відповідно до цього варіанта, після [operating systems] - список можливих варіантів заванта­ження. Для кожного варіанта може бути задано одну із кількох адрес завантаження:

♦ розділ із кореневим каталогом WINDOWS (для завантаження Windows ХР);

♦ літерне позначення тому, на якому перебуває інша ОС;

♦ ім'я файла із зазначенням тому.

У разі зазначення літерного імені розділу (як у прикладі) ntldr знаходить на диску файл bootsec.dos (у якому після встановлення Windows ХР зберігають за­вантажувальний сектор DOS або Consumer Windows, якщо поверх нього записа­ний завантажувальний сектор Windows ХР), перемикає процесор у реальний ре­жим і починає виконувати код цього завантажувального сектора.

Якщо задано ім'я файла, ntldr завантажуватиме файл із таким іменем; отже, якщо у файлі зберегти завантажувальний сектор іншої ОС, наприклад, Linux, ntldr зможе завантажити і його, для цього варіант завантаження має такий вигляд:

C:\bootsec.lnx="Linux"

Далі наведемо випадок завантаження Windows ХР. Зазначимо, що розділ з ус­тановкою Windows ХР у bootini не зобов'язаний збігатися із розділом, з якого від­бувається завантаження, - таких розділів може бути кілька.

Коли є один варіант завантаження, система відразу починає завантажуватися, коли їх більше - відображають меню завантаження. Після вибору варіанта із меню ntldr запускає програму ntdetect.com, що в реальному режимі визначає базову кон­фігурацію комп'ютера (подібно до того, як це робила функція setup () для Linux -жодна із сучасних систем не довіряє цей код BIOS). Зібрану інформацію збері­гають у системі, пізніше вона буде збережена в реєстрі. Внизу екрана з'являється текстовий індикатор прогресу. У цій ситуації можна натиснути на F8 і перейти в меню додаткових можливостей завантаження (у безпечному режимі тощо).

Потім ntldr завантажує у пам'ять ntoskrnl.exe (що містить ядро і виконавчу під­систему Windows ХР), bootvid.dll (відеодрайвер за замовчуванням, що відповідає за відображення інформації під час завантаження), hal.dll (рівень абстрагування від устаткування) та основні файли реєстру. Після цього він визначає із реєстру, які драйвери встановлені в режимі запуску під час завантаження (це, наприклад, драйвер жорсткого диска) і завантажує їх (без ініціалізації). Буде завантажено та­кож драйвер кореневої файлової системи. На цьому роль ntldr у завантаженні за­вершується, і він викликає головну функцію в ntoskrnl.exe для продовження завантаження.

Ініціалізація ntoskrnl.exe складається із двох етапів: фаз Oil. Багато підсистем виконавчої системи приймають параметр, який показує, у якій фазі ініціалізації зараз перебуває система.

Під час виконання фази 0 переривання заборонені, на екрані нічого не відобра­жається. Основною метою цього етапу є підготовка початкових структур даних, необхідних для розширеної ініціалізації під час виконання фази 1. Зазначимо, що менеджер процесів на цьому етапі ініціалізується майже повністю, за його допо­могою створюють початковий об'єкт-процес із назвою Idle, процес System і систем­ний потік для виконання ініціалізації фази 1.

Після завершення фази 0 переривання дозволені, і починає виконуватися системний потік. Під час виконання фази 1 керування екраном здійснює відео­драйвер bootvid.dll, що відображає завантажувальний екран і графічний індикатор прогресу на ньому (цей індикатор змінюватиметься упродовж всієї фази 1). Від­бувається остаточна ініціалізація різних підсистем виконавчої системи (менеджера об 'єктів, планувальника, служби безпеки, менеджера віртуальної пам'яті, мене­джера кеша тощо). Під час ініціалізації підсистеми введення-виведення (яка за­ймає до 50 % часу цієї фази) відбувається підготовка необхідних структур даних, ініціалізація драйверів із запуском під час завантаження (boot-start), завантажен­ня та ініціалізація драйверів із системним запуском (system-start). Фаза 1 завер­шується запуском менеджера сесій (smss.exe).

Подальше завантаження виконують три системні процеси, розглянуті у розді­лі 2: менеджер сесій smss.exe, процес реєстрації у системі winlogon.exe і менеджер керування сервісами (SCM, services.exe). Основним завданням менеджера сесій є завантаження та ініціалізація всіх компонентів підсистеми Win32 (як режиму користувача, так і режиму ядра), а також остаточна ініціалізація реєстру і запуск winlogon.exe.

Процес реєстрації у системі запускає менеджер керування сервісами і мене­джер аутентифікації, а також організовує реєстрацію користувачів у системі, як описано у пункті 18.5.2.

Менеджер сервісів (SCM) завантажує та ініціалізує сервіси режиму користу­вача, встановлені в режимі автоматичного завантаження. Цей процес може трива­ти вже після початку інтерактивної роботи користувачів. Після ініціалізації сер­вісів завантаження вважають успішним.

Висновки

♦ Жодна операційна система не може розпочати роботу без виконання процеду­ри завантаження та ініціалізації. Під час цього процесу спочатку виконується найпростіший завантажувач ОС, що перебуває у фіксованому місці жорстко­го диска, потім він відшукує ядро ОС і завантажує його у пам'ять. Ядро в свою чергу ініціалізує свої внутрішні структури та апаратне забезпечення і передає керування процесам користувача або системним процесам, які завершують процес ініціалізації.

♦ Широко розповсюджене двоетапне завантаження, під час якого завантажувач ОС передає керування складнішому завантажувачу другого етапу, який може керувати завантаженням кількох систем, установлених на комп'ютері. Такий завантажувач виконує основні дії щодо взаємодії із користувачем і заванта­ження потрібної системи.

Контрольні запитання та завдання

1. Які додаткові можливості адміністрування надають ОС, у яких є підтримка за­вантаження ядра системи з флоппі-диска?

2. Вкажіть переваги встановлення завантажувача системи в MBR порівняно з його встановленням у завантажувальний сектор одного з розділів диска.

3. Комп'ютерна система включає кілька НЖМД, на кожному з яких встановлена своя файлова система. Опишіть, у якій послідовності ці системи повинні бути змонтовані під час завантаження. Чи є необхідність у ході завантаження одер­жувати доступ до диска без використання засобів ядра?

4. Ідентифікатор процесу для init дорівнює одиниці, він менший, ніж у будь-яко­го потоку ядра Linux. У той же час init стає процесом пізніше, ніж будуть створені потоки ядра. Як можна це пояснити?

5. Альтернативним способом завантаження ОС є підхід, реалізований для Linux утилітою loadl in. Ця утиліта виконувалася під керуванням MS-DOS або Windows і завантажувала ядро Linux з файлової системи FAT. Після завантаження ядра в пам'ять подальший процес ішов, як описано в розділі 19.2. Назвіть переваги і недоліки такого підходу.

Розділ 20

Багатопроцесорні та розподілені системи

♦ Багатопроцесорні системи

♦ Базові технології розробки розподілених систем

♦ Організація віддаленого виклику процедур

♦ Синхронізація та координація розподілених застосувань

♦ Особливості реалізації розподілених файлових систем

♦ Сучасні архітектури розподілених обчислень

♦ Кластери і grid-системи

Сьогодні є два основні підходи до збільшення обчислювальної потужності ком­п'ютерних систем. Перший з них пов'язаний із підвищенням тактової частоти процесора. При цьому у розробників виникають технологічні проблеми, які пов'язані з необхідністю організовувати охолодження процесорів і тим, що швидкість поши­рення сигналів обмежена. Крім того, єдиний процесор системи є її «вузьким місцем» у надійності - його вихід із ладу призводить до неминучого краху всієї системи.

Альтернативним підходом, про який ітиметься в цьому розділі, є організація паралельних обчислень на кількох процесорах. З одного боку, внаслідок збіль­шення кількості процесорів можна досягти більшої потужності, ніж доступна на цей момент для однопроцесорних систем. З іншого, такі системи мають більшу стійкість до збоїв — у разі виходу одного із процесорів із ладу на його місці можна використати інший.

Як було зазначено в розділі 1, можна виділити дві основні категорії систем, що використовують кілька процесорів. У багатопроцесорних системах набір про­цесорів перебуває в одному корпусі та використовує спільну пам'ять (а також пе­риферійні пристрої). У розподілених системах процесори перебувають у складі окремих комп'ютерів, з'єднаних мережею. Паралельні обчислення організовані на базі спеціального програмного забезпечення, що приховує наявність мережі від користувачів системи.