Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Виділення критичних секцій, як системний засіб, доцільно застосовувати для відносно сильно зв'язаних процесів - таких, які розділяють великий об'єм даних. Крім того, при застосуванні програмістом дужок критичних секцій можливі помилки, що призводять до придушення одних процесів іншими, важливо, щоб конфлікти між процесами не приводили до конфліктів між користувачами. Ці властивості характерні для нитей частин одного і того ж процесу, що паралельно виконуються: вони всі належать одному процесу - одному користувачеві і розділяють майже всі ресурси цього процесу. Отже, критичні секції доцільно застосовувати тільки для взаємного виключення ниток. ОС може надавати для цих цілей елементарні системні виклики. Коли нить входить в критичну секцію, решта всіх нитей цього процесу блокується. Блокування не зачіпає інші процеси і їх ниті. Природно, що така політика вельми консервативна і знижує рівень мультипрограмування, але це може вплинути на ефективність тільки в рамках одного процесу. Програміст може самостійно організувати і ліберальнішу політику доступу до ресурсів, що розділяються, використовуючи, наприклад, семафори, які будуть описані нижче.
Крім того, роль таких дужок можуть грати системні виклики типу suspend і release, перший з яких припиняє виконання нитки, а другий - відміняє припинення.
Ми вже говорили про віртуальні переривання, як про засіб, за допомогою якого ОС сигналізує процесу про закінчення асихронно виконуваної операції введення/виведення. Розширюючи цю концепцію, можна застосовувати віртуальні переривання для повідомлення процесу про будь-яку зовнішню по відношенню до нього подію. Зокрема, віртуальне переривання може використовуватися для того, щоб видавати синхронізуючий сигнал з одного процесу в іншій. ОС може надавати в розпорядження процесів системний виклик:
raiseInterrupt (pid, intType );
де pid - ідентифікатор процесу, якому посилається переривання, intType - тип (можливо, номер) переривання. Ідентифікатор процесу - це не зовнішнє його ім'я, а маніпулятор, що встановлюється для кожного запуску процесу ОС. Для того, щоб процес міг послати сигнал іншому процесу, процес-відправник повинен знати ідентифікатор процесу-одержувача, тобто, знаходитися з ним в достатньо "конфіденційних" відносинах. Щоб запобігти можливості посилки непередбачених переривань, можуть бути введені додаткові обмеження: дозволити посилку переривань тільки від процесів-предків до нащадків або обмежити обмін перериваннями тільки процесами одного і того ж користувача.
Коли процесу посилається переривання, управління передається на обробник цього переривання у складі процесу. Процес повинен встановити адресу обробника за допомогою системного виклику типу:
setInterruptHandler (intType, action, procedure );
де action - вид реакції на переривання. Вид реакції може задаватися з переліку стандартних, в число яких можуть входити: реакція за умовчанням, ігнорувати переривання, відновити колишню установку або встановити як обробника переривання процедуру procedure, адреса якої є параметром системного виклику.
Зрозуміло, в системі повинні бути визначені допустимі типи віртуальних переривань. Віртуальні переривання можуть генеруватися в наступних випадках:
Якщо процес отримує переривання, для якого він не встановив обробник, то процес повинен аварійно завершитися (це - встановлюваний за умовчанням вид реакції на переривання). Така установка може здатися надмірно жорсткою, але пригадаєте, наприклад, яка буде реакція системи на реальне переривання, для якого не визначений його обробник (вектор переривання в Intel-Pentium).
Ще одне рішення, яке повинен прийняти конструктор ОС, - чи є установка обробника постійною (до її явної відміни) або одноразовою (для обробки тільки одного переривання). Другий варіант є гнучкішим, оскільки кожна процедура обробки переривання може при необхідності закінчуватися новим системним викликом setInterruptHandler, яким буде задана установка на обробку наступного переривання цього типу. Це рішення можна також перекласти на програміста, включивши відповідний параметр в специфікації системного виклику.
Як повинна реагувати ОС на посилку переривання неіснуючому процесу? Мабуть, аварійне завершення процесу, що видав таке переривання, може бути нормальною реакцією системи. Можливо, втім, і ліберальніше рішення - завершити виклик raiseInterrupt з ознакою помилки. Аналогічний ефект може викликати виконання переривання, для якого в процесі-приймачі встановлений спеціальний режим обробки - неприпустиме переривання.
Як і для реальних переривань, процес повинен мати засоби заборони віртуальних переривань (наприклад, при входженні в критичну секцію) - всіх або вибірково по типах. Для цих цілей повинні використовуватися спеціальні системні виклики. Якщо переривання заборонене, то його обробка відкладається до дозволу переривань. Коли обробка вирішується, обробка виконується по тому виду реакції, який встановлений на момент виконання (він може відрізнятися від встановленого на момент видачі переривання). Серед зарезервованих за ОС типів переривань обов'язково повинні бути такі, заборонити які або перевизначити обробку яких процес не має можливості - обов'язково в цьому списку повинне бути переривання kill.
У більшості сучасних ОС (Unix, OS/2 і ін.) віртуальні переривання носять назву сигналів і використовуються перш за все для сигналізації про надзвичайні події. Сигнальні системи конкретних ОС, як правило, не надають у складі API універсального виклику типу raiseInterrupt, який дозволяв би користувачеві видавати сигнали будь-якого типу. Набір зарезервованих типів сигналів обмежений (у Unix, наприклад, їх 19, а в OS/2 - всього 7), не всі з них доступно процесам, і для кожного з доступних є власний системний виклик. Недопустимі також незарезервовані типи сигналів. У набір включається декілька (по 3 - в згаданих ОС) типів сигналів, зарезервованих за процесами, ці типи і використовують взаємодіючі процеси для посилки один одному сигналів, які вони інтерпретують по попередній домовленості.
В мить, коли для процесу генерується віртуальне переривання, процес, можливо (у однопроцесорній системі - напевно), перебуває в неактивному стані. Тому обробка переривання відкладається до моменту активізації процесу (по черзі до планувальника), а переривання запам'ятовується в блоці контексту процесу. Як повинне оброблятися віртуальне переривання, якщо під час його надходження процес виконує системний виклик? Виконання системного виклику включає як фрагменти коду, що виконуються в привілейованому режимі, так і фрагменти, що виконуються в режимі завдання. Очевидно, що привілейовані фрагменти уриватися не можуть - їх виконання може бути пов'язане із змінами системних структур даних, які повинні виконуватися транзакційний (тобто, не повинні уриватися). Віртуальне переривання, що в цьому випадку прийшло, запам'ятовується в блоці контексту процесу і оброблятися під час переходу процесу із стану ядра в стан завдання. Але системний виклик може містити і непривілейовану частину, що до того ж виконується вельми тривало (наприклад, введення з клавіатури з очікуванням). Розумним рішенням буде дозвіл переривати такий системний виклик, але в цьому випадку виконання перерваного системного виклику може закінчуватися з помилкою, - і процес повинен бути готовий до цього.
Більшість засобів взаємодії процесів відповідають концепції комунікаційних портів - віртуальних пристроїв, через які процеси обмінюються даними. Як пристрої, комунікаційні порти можуть "вписуватися" у файлову систему як спеціальні файли. Таке зведення засобів взаємодії до файлової моделі в загальному випадку забезпечує три переваги:
Концепція комунікаційних портів, проте, в реальних ОС витримується далеко не строго. Реальне маніпулювання далеко не зі всіма засобам взаємодії між процесами можливо звести до однотипних операцій. Доступ до видалених засобів вирішується методами мережевих модулів ОС. Розмежування доступу в повному об'ємі ми спостерігали тільки в AS/400, і то не в рамках файлової системи, а в контексті загальної об'єктно-орієнтованої структури цієї системи. Проте, тенденція до моделі портів в тому або іншому ступені спостерігається в сучасних ОС, перш за все, в частині іменування засобів взаємодії. У цьому розділі ми розглянемо загальні властивості засобів взаємодії, називаючи їх віртуальними комунікаційними портами.
Віртуальним комунікаційним портом є ресурс ОС. Він, зрозуміло, має і фізичне уявлення - структури даних, області пам'яті, приховані семафори і тому подібне.Порти, як ресурси, що конструюються ОС, не мають жорсткого обмеження по кількості - нові порти можуть створюватися у міру потреби і знищуватися, коли необхідність в них відпадає. При використанні порту декількома процесами один процес створює порт, а інші - дістають доступ до вже існуючого порту.
Як і при роботі зі всяким ресурсом, процес повинен дістати доступ до цього порту - відкрити його. Системний виклик відкриття комунікаційного порту (або його створення) повертає процесу маніпулятор, який процес використовує як ідентифікатор порту у всіх подальших операціях з ним. Порт використовується одночасно, як мінімум, двома процесами, тому важливо, щоб маніпулятори у процесів-кореспондентів, що взаємодіють через цей порт, зв'язувалися з одним і тим же фізичним представленням порту. Можливі два варіанти: або всі процеси, що використовують порт, мають один і той же маніпулятор порту, або для кожного процесу цей маніпулятор індивідуальний. У будь-якому випадку ОС підтримує в ядрі таблицю відкритих портів (точніше - декілька таких таблиць - по одній для кожного типу засобів взаємодії процесів). Якщо маніпулятор може використовувати покажчик на елемент цієї таблиці - тоді маніпулятор буде однаковим для різних процесів, або покажчик на елемент індивідуальної таблиці, що входить до складу контексту процесу, а вже елемент таблиці процесу містить посилання на загальносистемну таблицю. Очевидно, що другий варіант надійніший, оскільки виключає випадковий доступ до порту. Навіть у тих випадках, коли ОС видає один і той же маніпулятор декільком процесам, вона вимагає, щоб процес виконав системний виклик отримання доступу до ресурсу.
Для доступу двох процесів до одного і того ж фізичного представлення порту у виклику відкриття порту необхідно вказати параметри, що дозволяють системі це фізичне уявлення знайти. З погляду ідентифікації порти можуть бути іменованими або неіменованими.
Іменований порт має зовнішнє ім'я. Системний виклик відкриття іменованого порту вимагає вказівки цього імені як параметр виклику. Користувачі-розробники взаємодіючих процесів заздалегідь домовляються про використовувані імена портів. Система іменування портів і відкриття іменованих портів аналогічна файловій системі. Імена засобів взаємодії формуються по угодах іменування файлів і можуть виглядати, як імена файлів, розташованих в спеціальних каталогах, наприклад: каталог \shrmem - для загальних областей пам'яті, каталог \sem - для системних семафорів \pipe - для каналів \queues - для черг.
Неіменований порт зовнішнього імені не має. При створенні такого порту системний виклик повертає його маніпулятор - і це єдине, що має в своєму розпорядженні процес для ідентифікації порту. Маніпулятор порту майже напевно буде різним при різних виконаннях однієї і тієї ж програми. Для встановлення зв'язку між процесами процес-творець порту повинен передати процесу-кореспондентові маніпулятор створеного ним порту. Процес-кореспондент в системному виклику відкриття порту указує ідентифікатор процесу-творця і маніпулятор порту у процесу-творця, а у відповідь отримує маніпулятор того ж порту для себе. Передача маніпулятора процесу-кореспондентові може проводитися як передача ресурсу від предка до нащадка або (якщо процеси не зв'язані спорідненістю) через іменований порт. Як правило, неіменовані порти використовуються для зв'язку між процесами - предком і нащадком, в цьому випадку нащадок успадковує від предка вже відкритий комунікаційний порт. Неіменовані порти використовуються для зв'язку між незалежними процесами.
У зв'язку з використанням портів декількома процесами виникає проблеми закриття портів. Закінчивши роботу з портом, процес виконує системний виклик закриття. У ОС підтримується загальносистемна таблиця портів і обов'язковою для системи вимогою є закриття при завершенні процесу всіх портів, які процес "забув" закрити явним чином. Якщо з портом працюють два процеси, і один з них закрив порт, а інший звертається до цього порту, то для останнього процесу цей системний виклик закінчується з ознакою помилки - і це єдино можливе рішення. Ще одна проблема - знищення фізичного представлення портів. Вона може вирішуватися двома шляхами: або порт знищується, коли він закривається останнім з процесів, що використовують його, або він знищується - спеціальним системним викликом або простим закриттям - тим процесом, який його створив. Останній випадок привабливіший з погляду впорядкування доступу, але він може породжувати більше помилок, коли процеси-кореспонденти звертаються до вже неіснуючого порту. Засоби взаємодії, що розглядаються нами нижче, є окремими випадками моделі віртуальних комунікаційних портів.
Мережева операційна система є "мозком" мережі і забезпечує коректну взаємодію її програмного та апаратного забезпечення.
Мережеві ОС поділяються на дві категорії: однорангові і клієнтісерверні.
Однорангові операційні системи передбачають можливість використання будь-якого комп'ютера як робочої станції і сервера одночасно.
В однорангових мережах мережеві ОС (LANtastic, LanSmart, Windows for Workgroups тощо) інсталюються на кожному комп'ютері, у цьому разі назва мережі - це похідна від операційної системи, що утворює однорангову мережу. Таким чином, кожний із комп'ютерів отримує можливість надавати свої ресурси всім іншим комп'ютерам у мережі.
Продуктивність однорангових мереж значно знижується за збільшення розмірів мережі і збільшення кількості взаємодій мережевих комп'ютерів. Експлуатація і підтримка таких мереж, як правило, ускладнена.
Не маючи можливості централізованого управління, адміністратори змушені керувати множиною сервісів на кожній машині окремо. Така робота ускладнюється ще й тим, що користувачі, працюючи на кожному з комп'ютерів, мають можливість самостійно змінювати настройки ОС, що часто призводить до непрацездатності всього програмного забезпечення робочої станції.
У мережах клієнт/сервер мережна ОС (Windows 95/98, Windows 2000, Windows NTt Windows XP, Windows Millennium, Novell NetWare, UNIX тощо) установлюється на сервері. Цей комп'ютер керує мережею і надає свої ресурси клієнтським робочим станціям. Мережева ОС, працюючи на сервері (серверна ОС), відповідає за координацію всіх дій, пов'язаних із використанням ресурсів і сервісів цього сервера.
Клієнтом у такій мережі є будь-який мережевий пристрій, що формує запит до сервера для використання його ресурсів і сервісів. Для забезпечення взаємодій клієнта і сервера на комп'ютер і-клієнті встановлюється і функціонує клієнтське програмне забезпечення, яке підтримує загальний протокол взаємодії клієнта і сервера.
У клієнт/серверній мережі користувачі "реєструються" зі своєї робочої станції. Для реєстрації користувач повідомляє серверові своє ім'я і пароль, якщо ім'я і пароль коректні, сервер аутентифікує користувача і надає йому доступ до всіх тих ресурсів і сервісів (використання файлів і принтерів, забезпечення безпеки даних і надання можливостей мережевої взаємодії), на які користувачу були надані права. Серверна ОС гарантує надійність і безпеку будь-яких даних, що зберігаються і опрацьовуються на сервері.
Мережева операційна система дає змогу користувачам спільно використовувати:
До складу сучасних операційних систем (Windows XP, Windows 2000, Windows NT Server, Net Ware) входять компоненти:
Програма переспрямування резидентно міститься в пам'яті комп'ютера. Коли користувач або його програма звертається із запитом до операційної системи комп'ютера, ця програма перехоплює запит, аналізує, хто може його виконати, і спрямовує або до ОС того ж комп'ютера, або до сервера, якому адресовано запит.
У мережі вузли (комп'ютери) взаємодіють між собою за певними правилами - комунікаційними протоколами, які реалізуються як програмно, так і апаратно.
Протоколи нижніх рівнів, як правило, реалізуються комбінацією програмних і апаратних засобів, а протоколи верхніх рівнів - суто програмними засобами.
Як уже зазначалося, протоколи реалізуються не тільки комп'ютерами, а й іншими мережевими пристроями - концентраторами, мостами, комутаторами, маршрутизаторами тощо.
Протокол являє собою узгодженість, прийняту двома взаємодіючими об'єктами (комп'ютерами), проте це не означає, що він обов'язково є стандартним. На практиці під час побудови мереж намагаються використовувати стандартні протоколи. Вони можуть бути національними або міжнародними.
Наприкінці 80-х років минулого століття Міжнародна організація зі стандартизації розробила правила пересилання даних мережею, які отримали назву "Модель взаємодії відкритих систем" (Open System Interconnection, OSI). Модель OSI отримала статус міжнародного стандарту і її рекомендації є керівництвом для побудови мережі. Відповідно до моделі OSI засоби взаємодії поділяються на сім рівнів: рівень протоколу, представлення даних, сеансовий, транспортний, мережевий, канальний і фізичний. Кожен із семи рівнів визначає сукупність логічно згрупованих функцій, необхідних для контролю процесу передачі даних мережею.
Рівень протоколу - це найвищий рівень в ієрархії еталонної моделі ISO, він установлює інтерфейс між додатками користувача і мережею.
Рівень представлення даних - відповідає за спосіб кодування даних, Далеко не всі комп'ютерні системи використовують ту саму схему кодування даних, тому на рівень представлення даних покладено обов'язки з перетворення між несумісними схемами кодування даних.
Сеансовий рівень керує потоком службової інформації під час "спілкування" двох комп'ютерних систем. Він визначає, чи є з'єднання одно- або двонаправленим, а також гарантує, що поточний запит буде цілком опрацьований. Функції сеансового рівня реалізуються компонентами мережевої операційної системи.
Транспортний рівень забезпечує додаткам користувача або верхнім рівням - представлення і сеансовому - передачу даних з певною надійністю (можливість відновлення перерваного зв'язку, здатність виявляти і виправляти помилки передачі).
Мережевий рівень відповідає за визначення маршруту між передавальним і приймальним комп'ютерами. Мережевий рівень може і не використовуватися. Він обов'язковий тільки в тому разі, якщо комп'ютерні системи розташовані в різних мережевих сегментах, розділених маршрутизатором.
Канальний рівень готує дані для передачі (розбиває їх на окремі частини - кадри, до кожного кадру додає адреси відправника і отримувача, службову інформацію). Канальний рівень також відповідає за складання кадрів при прийнятті від фізичного рівня.
Фізичний рівень має справу з передачею бітів фізичними каналами зв'язку, такими, наприклад, як коаксіальний кабель, вита пара або опто-волоконний кабель. Фізичними каналами передаються повідомлення і заголовки, які додаються до повідомлення на кожному рівні. Заголовки містять службову інформацію, яку необхідно передати через мережу відповідному рівню OSI комп'ютера, щоб повідомити йому, яку роботу треба виконати. Функції фізичного рівня реалізує мережевий адаптер.
Робота із сокетами містить ряд етапів: сокет створюється, настроюється на заданий режим роботи, застосовується для організації обміну й, нарешті, ліквідується. Технологія сокетів підтримує роботу з будь-якими стеками протоколів, сполучені процедури введення/виведення, використання великого числа сервіс-провайдерів (серверів послуг), можливість групування сокетів, що дозволяє реалізувати їхнє пріоритетне обслуговування, і багато чого іншого. Набір операторів, що підтримують інтерфейс сервіс провайдеру, утворить окрему динамічну бібліотеку.
Для загальної синхронізації роботи сервіс-провайдерів і додатків в wіnsock уведене поняття об'єктів подій. Об'єкти подій служать, зокрема, для організації роботи сполучених за часом процесів інформаційного обміну. Тут доречне зауваження про використання стандартних номерів портів. У багатозадачних, багатокористувальницьких системах стандартні номери портів використовуються при ініціалізації процесу. Тому що допускається кілька ідентичних з'єднань (наприклад, кілька одночасних сесій FTP) між клієнтом і сервером, стандартними номерами портів тут не обійтися.
У системах, орієнтованих на з'єднання, пари комбінацій ІP-адрес і номерів портів однозначно визначає канал зв'язку між двома процесами в ЕОМ. Така комбінація називається сокетом (socket). Номера портів можуть і збігатися, але ІP-адреси повинні бути обов'язково різними. Уперше ідея сокета була використана в системі BSD4.3 Unіx для організації мережевого введення/виведення. В Unіx зовнішній пристрій і файл із погляду системного програміста еквівалентні. Мережні процедури трохи складніше й не вкладаються в таку просту схему. Із цієї схеми випадають, насамперед, операції, при яких сервер пасивно очікує, особливо операції обміну, не орієнтовані на з'єднання. Сокет є прикордонним поняттям між протоколами телекомунікацій і операційною системою ЕОМ. Сокети відіграють важливу роль при написанні прикладних програм (APІ).
Сокет відправника = ІP-адрес відправника + номер порту відправника
Сокет адресата = ІP-адрес адресата + номер порту адресата
При обмінах, орієнтованих на з'єднання, формується ансамбль ( ІPSPS + ІPDPD ), де ІPSPS - адреса й порт відправника, а ІPDPD - адреса й порт місця призначення.
Міжкомпютерні комунікації не зводяться до знайомства із сусідським депозитарієм, до виконання операцій Telnet/ssh, FTP/scp і т.д. Однією з найважливіших завдань є віддалений контроль за процесами в більших розподілених системах, коли обмін інформацією активізується не людиною, а ЕОМ. Прикладами таких завдань можуть служити керування сучасними високотехнічними виробництвами, збір метео- або іншої геофізичної інформації в реальному масштабі часу, експерименти в області фізики високих енергій, де для контролю установки й збору експериментальних даних використовуються десятки (а іноді й сотні) обчислювальних машин, які обмінюються діагностичною інформацією й даними. Саме для рішення таких завдань і застосовуються ідеї сокетів, "труб" і т.д. Поняття сокета в прикладних програмах - це не просто комбінація ІP-адрес і номерів портів, це вказівник на структуру даних, де зберігаються параметри віртуального каналу.
BIOS (скорочення від Basic Input/Output System базова система введення/виведення) це вмонтоване в комп'ютер програмне забезпечення, яке йому доступне без звертання до диска. Це набір програм перевірки й обслуговування апаратури комп'ютера, зокрема необхідних для управління клавіатурою, відео-картою, дисками, портами й іншими пристроями.
BIOS одержує управління при вмиканні (так званому «холодному» завантаженні) й скиданні («гарячому» завантаженні) системної плати, тестує саму плату й основні блоки комп'ютера відеоадаптер, клавіатуру, контролери дисків і портів введення/виведення, налаштовує чіпсет і передає управління завантажникові операційної системи.
При роботі під DOS і Windows 9x BIOS також керує основними пристроями, тобто виступає посередником між операційною системою й апаратурою комп'ютера. При роботі під Windows NT/2000/XP, різновидами UNIX, OS/2 й іншими альтернативними ОС BIOS практично не використовується, виконуючи лише одну початкову перевірку й настроювання.
BIOS складається з таких частин:
BIOS узагалі унікальний для кожної моделі материнської плати комп'ютера, тобто він розробляється з урахуванням особливостей функціонування тієї комбінації обладнання, що властива саме для цієї моделі.
Чи потрібно змінювати BIOS
Загальний принцип, якого слід дотримуватися: якщо комп'ютер працює стабільно і ніяких дефектів у його роботі, пов'язаних із BIOS, не виявлено (при цьому треба переконатися, що ці недоліки викликані саме BIOS, а не іншими причинами, наприклад неправильними драйверами пристроїв, неправильною конфігурацією операційної системи і т. д.), то відновлювати BIOS не треба.
Однак існують ситуації, коли відновлення BIOS необхідне. Зазвичай це вихід нового процесора, підтримка якого не була закладена в колишній версії. Перш ніж установлювати нову версію, необхідно вийти на сайт технічної підтримки фірми-виробника системної плати, прочитати специфікації нової версії BIOS і при необхідності скачати їх, переконавшись, що ця версія виправляє саме ті дефекти, що були виявлені у вашому комп'ютері.
Як BIOS завантажує комп'ютер
Після вмикання комп'ютера на процесор подається напруга, і він «прокидається». Першими прочитаними процесором командами є інструкції з чіпа BIOS (про це піклуються мікросхеми системної плати). Першим запускається POST програма самотестування. POST виконує такі кроки:
У процесі виконання цих дій BIOS порівнює дані поточної системної конфігурації з інформацією, що зберігається в CMOS, і при необхідності відновлює її. Якщо при виконанні якого-небудь кроку виникли збої, BIOS інформує про це повідомленнями на екрані монітора, а якщо це неможливо (наприклад, ще не був ініціалізований відеоадаптер), видає гудки через системний динамік. Кількість гудків відповідає кодам помилки, про що можна довідатися з документації. Деякі системні плати забезпечуються рідкокристалічним індикатором, де відображаються стадії проходження POST-тестів і коди виявлених помилок.
Після того як усі POST-завдання завершені, BIOS починає шукати програму-завантажник. Сучасні версії BIOS дозволяють завантажувати операційну систему не тільки із флопі-дисководів і жорсткого диска, але і з CD-ROM, ZIP. Програма-завантажник, як правило, розташовується в першому секторі диска, на якому розміщена операційна система. Порядок перебору дисків при пошуку завантажника задається в конфігурації BIOS. Якщо завантажник знайдений, він переноситься в пам'ять і йому передається управління. Він у свою чергу знаходить і копіює в пам'ять власне програму завантаження операційної системи (opration system loader), що завантажує, ініціалізує і конфігурує операційну системі й драйвери пристроїв. І вже на сам кінець, коли операційна система завантажена (якщо комп'ютер працює в режимі Windows), запускаються програми папки «Автозавантаження».
Як бачимо, у системах під управлінням DOS або Windows 9x BIOS бере на себе роль управління апаратною частиною ПК і служить посередником між операційною системою й обладнанням.
BIOS реалізує свої функції через систему переривань програмного забезпечення. Для запуску підпрограми, що містить спеціальну інструкцію мікропроцеcopy щодо обробки якої-небудь конкретної ситуації, виконувана програма встановлює відповідний прапорець переривання.
Переривання програмного забезпечення призводять до того, що мікропроцесор припиняє виконання поточної задачі й починає виконувати підпрограму з обробки переривання. Для реалізації цього механізму мікропроцесор, «виконавши яку-небудь елементарну операцію, досліджує вектори переривань, і якщо переривання виставлене, коди виконуваної програми запам'ятовуються, щоб після обробки переривання виконання перерваної програми могло бути продовжене. Кожен вектор переривання є покажчиком, що говорить мікропроцесорові, де знаходяться коди з обробки цього переривання. Мікропроцесор читає значення вектора і починає виконувати програму за зазначеною вектором адресою.
Через те що кількість наявних переривань може виявитися набагато меншою за ту кількість функцій, що ви хотіли б використовувати у своїх програмах, деякі переривання BIOS використовуються для реалізації декількох функцій. Ці функції і реалізуються за допомогою передачі параметрів. Параметри обробляються підпрограмами BIOS. їхні значення заносяться в один або кілька регістрів при установці прапорця переривань. У свою чергу, підпрограми BIOS можуть передвати результати назад у програму, що виконується.
Проблема BIOS у тому, що обмеженою кількістю підпрограм неможливо оптимально задовольнити всі потреби програмного забезпечення і всі особливості роботи обладнання. Таким чином, використання підпрограм BIOS не завжди є благом. Зокрема, ці підпрограми реалізують деякі функції комп'ютера дуже повільно. Іншим негативним моментом є те, що BIOS не дозволяє повністю використовувати можливості наявного устаткування, наприклад його можливості, що були реалізовані після написання BIOS. Тому всі сучасні операційні системи, обладнані розвинутою системою виявлення, конфігурації й роботи з апаратним забезпеченням комп'ютерів за допомогою драйверів, не користуються послугами BIOS.
Базова система введення-виведення розміщується в постійній пам'яті комп'ютера. Цей модуль є одночасно і частиною апаратури частиною операційної системи.
Основні функції BIOS:
Сутність переривань полягає в тому, що робота комп'ютера може бути зупинена на певний проміжок часу за допомогою сигналу, який вказує на виникнення ситуації, що потребує негайного опрацювання. Звернення до переривань здійснюються програмними чи апаратними засобами з метою виконання різних операцій.
Розрізняють три види переривань:
Кожне переривання має унікальний номер (від 0 до 255) і з ним зв'язана певна підпрограма для обслуговування ситуацій, що виникають.
Блок початкового завантаження ( Boot Record)
Блок початкового завантаження (завантажувач) програма, яка завантажує два модулі операційної системи:
Модуль розширення базової системи введення-виведення (Io.sys)
Файл IO.SYS є доповненням до базової системи введення-виведення. Він завантажується до оперативного запам'ятовуючого пристрою (ОЗП) комп'ютера завантажувачем операційної системи (Boot Record) і залишається в пам'яті постійно. Модуль розширення базової системи введення-виведення дозволяє підєднувати до BIOS драйвери, які обслуговують допоміжні зовнішні пристрої. Про необхідність підєднання до ОС драйверів зовнішніх пристроїв повідомляється у файлі конфігурації операційної системи CONFIG.SYS, який опрацьовується файлом IO.SYS.
За допомогою файлу CONFIG.SYS можна розширити операційну систему та змінити деякі її параметри, які впливають на роботу зовнішніх пристроїв. Драйвери зовнішніх пристроїв можна додати до MS-DOS, якщо вказати їх у файлі конфігурації. Крім того у файлі CONFIG.SYS можна вказати, яка кількість файлів в ОС може бути відкрита одночасно (відкрити файл означає встановити робочий зв'язок програми з файлом, тобто інформація про файл заноситься до спеціальних таблиць, які розміщуються в пам'яті комп'ютера), задати кількість буферів для обміну даними з зовнішніми накопичувачами та деякі інші параметри операційної системи.
Модуль опрацювання переривань (Msdos.sys)
Модуль опрацювання переривань є основним модулем операційної системи. Він забезпечує взаємодію з програмами користувача. Файл MSDOS.SYS завантажується до ОЗП комп'ютера завантажувачем і залишається там постійно.
Компонентами даного модуля є програми, які забезпечують роботу файлової системи, інформаційний обмін з дисками, а також обслуговування деяких спеціальних ситуацій.
Командний процесор (Command.com)
Командний процесор (інтерпретатор вказівок ОС) зберігається у вигляді файлу з іменем COMMAND.COM, як правило на тому диску, з якого завантажується операційна система. Командний процесор виконує наступні функції:
Зовнішні вказівки
Зовнішні вказівки ОС реалізуються програмами, які зберігаються на диску у вигляді окремих завантажуваних файлів. Для виконання зовнішніх вказівок командний процесор шукає на дисках програму з відповідним іменем, і, якщо знаходить її, то завантажує до пам'яті і передає їй управління. Після закінчення роботи програми командний процесор вилучає програму з пам'яті та виводить повідомлення про готовність до виконання вказівок.
Драйвери зовнішніх пристроїв
Драйвери пристроїв це спеціальні програми, які доповнюють систему введення-виведення і забезпечують обслуговування допоміжних зовнішніх пристроїв або нестандартне використання пристроїв. Драйвери зберігаються у вигляді файлів, імена яких мають розширення .SYS. Вони завантажуються до пам'яті комп'ютера при завантаженні операційної системи, їх імена вказуються в спеціальному файлі CONFIG.SYS.
Завантаження операційної системи
Для виконання початкового завантаження ОС необхідно, щоб на дисководі А для гнучких магнітних дисків було встановлено системний диск (диск з записаною операційною системою), або щоб комп'ютер мав жорсткий диск з записаною на ньому операційною системою. Завантаження ОС виконується автоматично при вмиканні персонального комп'ютера. Це так зване “холодне завантаження”. “Гаряче перезавантаження” відбувається за допомогою одночасного натиснення трьох клавіш <Ctrl>+<Alt>+<Del>.
Після завантаження операційної системи на екрані висвітлюється запрошення, яке вказує, що DOS готова до сприймання вказівок. Як правило запрошення складається з імені дисковода, далі може записуватися шлях до файлу, який закінчується символом “>”.
Наприклад:
С:\>
A:\DOS>
Запрошення є сигналом для користувача про правильність функціонування операційної системи та її готовності виконувати вказівки. Вигляд запрошення можна змінити за допомогою вказівки PROMPT.
Процес завантаження ОС полягає в наступному: