Архітектура Windows з точки зору обєктно-орієнтованого програмування



ЗМІСТ

Вступ. 3

1. Передумови виникнення ОС Windows. 4

2. Архітектура Windows з точки зору обєктно-орієнтованого програмування 6

3. Процеси та потоки Windows. 12

4. Переваги та недоліки Windows на прикладі WindowsNT 2002. 15

Висновки. 22

Список використаної літератури. 24


Вступ

 

Головною метою даної роботи є визначення основних перваг та недоліки сучасних операційних систем Windows. Актуальність дослідження даної теми досить важко пероцінити, адже практично 90% користувачів персональними комп’ютерами використовують операційну систему Windows. Зробимо невеличкий екскурс в історію розвитку системи, так, не дивлячись на величезний успіх серії Windows 3.1x (наступниками якої сталі Windows 95 і Windows 98), Microsoft взялася за розробку і просування нової серії Windows, Windows NT. Ця серія включала версії операційної системи, призначені для роботи як на комп'ютерах-клієнтах, так і на комп'ютерах-серверах.

Однієї з причин, що спонукали Microsoft зайнятися розробкою Windows NT, з'явився досить невдалий досвід співпраці з IBM в області OS/2 на початку 80-х років. Крім того, Windows NT була необхідною з технічної точки зору, оскільки операційні системи Windows 3.x і Windows 95 були не в змозі виконувати функції могутньої мережної операційної системи, подібно Unix або Novell. Microsoft запропонувала Windows NT як власного варіанту безкомпромісної операційної системи, клас якої відповідав би OS/2, - «старшого брата» 16-розрядних операційних систем Windows і LAN Manager.

Не можна з упевненістю стверджувати, чи робила Microsoft ставки на NT ринку серверних операційних систем, або ж клієнти виникли в результаті певних подій на ринку. Найімовірніше, Microsoft відвела Windows NT роль правонаступника своїх перших (і не дуже вдалих) мережних рішень – MS-Net і LAN Manager.

В 1993 році, після численних затримок, нарешті побачила світ NT-3.5. Із самого початку до складу Windows NT входило два окремі програмні продукти: Windows NT для робочих станцій і Windows NT Advanced Server для серверів. Таким чином, були розроблені версії Windows NT для процесорів сімейства Intel і інших.

Передумови виникнення ОС Windows

 

Операційною системою (О.С.) називається комплекс системних управляючих програм, які здійснюють управління комп’ютерною системою (ввід, вивід, обмін інформацією та даними). О.С. являється своєрідним посередником між користувачем і його прикладними програмами. Це своєрідна оболонка через яку користувач в досить простій формі може вести діалог з комп’ютерною системою. О.С. виконує всі команди користувача та управляє різними блоками комп’ютера ( дисками, клавіатурою, диками, принтером та ін. пристроями). Крім управляючих до складу О.С. також входять сервісні програми, які надають користувачу допоміжні функції – копіювання файлів, виведення інформації на диск, виведення параметрів комп’ютерної системи і т.д. Програми О.С. як правило зберігаються на магнітних дисках, тому їх називають дисковими О.С. (Д.О.С.) Програма “завантажувач” запускається з постійної пам’яті, яка автоматично керує цим процесом подає інформацію в оперативну пам’ять. Після завантаження вона постійно знаходиться в оперативній пам’яті і управляє роботою комп’ютера. Вся інформація з якою працює комп’ютер як правило зберігається на магнітних носіях у вигляді файлів.

Файл – це блок однотипної інформації (текст, логічно пов’язані дані, програма) яка записується на диск і якій присвоюється свій ідентифікатор (ім’я). Інакше кажучи, файл – це пойменована зона на диску на якій зберігаються програми та дані. Поруч з цим в спеціально відведеній зоні диску записуються і зберігаються списки імен всіх файлів, які називаються директоріями або каталогами дисків. В каталогах також зберігається інформація про фізичне місце на диску всіх записаних файлів а також їх розмір. В залежності від типу інформації, яка зберігається в файлі, розрізняють файли слідуючих типів – програмні, текстові, командні, графічні та файли даних. Створюються файли за допомогою спеціальних управляючих та сервісних програм О.С., які називають файловою системою.

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

Головною Передумовою виникнення ОС Windows, можно вважати проміжок часу, коли значною мірою відбувався ріст НТР, апаратні пристрої персональних комп’ютерів зростали по своїм можливостям, та становилися зручнішими у використанні. Приблизно в 1976-1986рр відбувався поділ алгоритмічних мов програмування, серед яких програмісти стали виділяти обєктно-орієнтовані мови. Корпорація Майкрософт, використовуючи обєктно-орієнтований підхід, поставила задачу створити операційну систему, яка б мала попит серед багатьох користувачів ПК, мала зручний інтерфейс, відповідала вимогам ПК того часу, тощо.   Початково Windows створювалася не так, як "класична" операційна система.   Вона "виросла", як надбудова над DOS, надає користувачам більше зручностей в роботі і ширші можливості професіональної діяльності. Перші версії Windows загружались вище DOS, забезпечуючи багаті базові функції операційної системи.

Сучасні операційні системи Windows 95/98 доповнили структуру попередніх Windows графічного операційного середовища і новими можливостями.

В першій версії Windows користувачі могли одночасно працювати з декількома програмами.

В 1990 р. користувачам була запропонована версія Windows 3.0 в яку було введено диспетчер файлів.

Більш стабільно працююча версія Windows 3.1. виникла в 1993р.

У 1995 році фірма Microsoft Corporation (США), найбільш відома серед виробників програмного продукту, зокрема, своєю операційною системою MS-DOS, випустила нову версію Windows, яка дістала назву Windows 95. На відміну від попередніх версій Windows 95 набула суттєвих змін, ставши незалежною операційною системою, більш продуктивною, більш надійною та зручною у роботі. Наступна версія цієї системи вийшла у 1998 році і дістала назву Windows 98. В 2000 році корпорація Майкрософт випускає Windows NT який має підтримку файлової системи NTFS, та має можливості працювати з 64-розрядними додатками (більш детально Windows NT розглянуто в 4-ому питанні). Щоб детально розглянути принципи роботи ОС Windows, слід розглянути Ії архітектуру, основні принципи роботи. Отже перейдемо до другого питання.

Архітектура Windows з точки зору обєктно-орієнтованого програмування

Коли в 1989 році Mіcrosoft приступила до розробки Wіndows NT, було висунуто кілька ключових вимог до нової операційної системи. Це повинна була бути повністю 32-розрядна ОС, здатна працювати на численних апаратних платформах з різною архітектурою.

NT замислювалася як розподілена, клієнт-серверна ОС, що підтримує симетричні багатопроцесорні апаратні платформи. Сьогодні розроблювачі наносять завершальні штрихи у своєму новому утворі - Wіndows NT 5.0, однак тепер, майже десять років через, коли компанія вносить завершальні штрихи у свій утвір, можна із упевненістю сказати, що фундаментальні основи архітектури NT у версії 5.0 не були змінені. Крім того, від NT була потрібна, сумісність зі стандартом POSІ 1003.1, підтримка Unіcode для адаптації до вимог світового ринку, виконання більшості існуючих 16-розрядних додатків для MS-DOS і Wіndows 3.х. Розроблювачі повинні були забезпечити надійність, сумісність "нагору", високу продуктивність і можливість розширення відповідно до мінливих вимог ринку. Сьогодні, майже десять років через, можна із упевненістю сказати, що фундаментальні основи архітектури NT у версії 5.0 не були змінені.

На рис. 1 наведена загальна архітектура Wіndows NT і її компонентів. Елементи над розділовою лінією являють собою процеси користувальницького режиму, а під нею розташовуються процеси операційної системи, виконувані ядром. Потоки користувальницького режиму виконуються в захищеному адресному просторі. Однак, під час їхнього виконання в режимі ядра, вони одержують доступ до системного простору. Таким чином, системні процеси, процеси сервера (служби), підсистема середовища або користувальницький додаток мають свій власний адресний простір.

                                                                                                    

Рис. 1 Загальна архітектура Windows NT

 

Важливі для продуктивності операційної системи компоненти виконуються в режимі ядра, де вони взаємодіють із устаткуванням і один з одним без використання перемикачів контексту й зміни режимів. Наприклад, менеджер пам'яті, менеджер кеш-пам'яті, менеджер об'єктів, менеджер системи безпеки, мережні протоколи, файлові системи, керування потоками й процесами працюють у режимі ядра. Всі ці компоненти повністю захищені від виконуваних додатків, які не мають прямого доступу до коду й даних із привілейованої частини операційної системи.

Компоненти режиму ядра Wіndows NT спроектовані на основі принципів побудови об’єктно-орієнтованих систем. Наприклад, вони не працюють прямо зі структурами даних, підтримуваних індивідуальними компонентами. Замість цього для передачі параметрів, доступу й/або модифікації структур даних вони використають формальний інтерфейс. Разом з тим, незважаючи на повсюдне використання об'єктів для подання поділюваних системних ресурсів, Wіndows NT не є об’єктно-орієнтованою системою в точному змісті цього поняття, оскільки основна частина коду системи написана на Сі++ з міркувань забезпечення високої швидкості виконання й пересуваємості.

У режимі ядра виконуються наступні компоненти ОС:

· частина, що виконує, NT яка включає керування пам'яттю, процесами, потоками, безпекою, уведенням/висновком, міжпроцесорними обмінами; ядро Wіndows NT виконує низкоурівневі функції операційної системи: диспетчеризація потоків, переривань і виключень, синхронізація процесів. Ядро також включає набір процедур і базових об'єктів, використовуваний виконує частью, що, для створення высокоуровневых конструкцій;

· шар абстракції від устаткування (HAL - Hardware Abstractіon Layer), ізолює ядро, драйвери пристроїв і виконує часть ПЗ  NT від апаратних платформ, на яких повинна працювати операційна система;

· драйвери пристроїв включають як файлову систему, так і апаратні драйвери, які транслюють користувальницькі виклики функцій уведення/висновку в запити фізичних пристроїв уведення/висновку;

· функції графічного інтерфейсу користувача працюють із вікнами, елементами керування й малюнками.

Частина, що виконує, Wіndows NT - верхній шар програми - ядра NTOSKRNL.EXE. (Саме ядро - це нижній шар). Частина, що виконує, містить наступні компоненти:

1. Менеджер процесів і потоків управляє процесами й потоками. Фактично потоки й процеси підтримуються в NT нижчележачим шаром. Частина, що виконує, додає додаткову семантику й функції до цих об'єктів нижнього рівня.

2. Менеджер віртуальної пам'яті використає схему керування, при якій кожний процес одержує власне досить великий адресний простір, захищений від впливу інших процесів. Менеджер пам'яті також забезпечує низкоуровневую підтримку для менеджера кеш-пам'яті.

3. Монітор безпеки проводить політикові забезпечення мер безпеки на локальному комп'ютері, охороняючи системні ресурси й виконуючи процедури аудита й захисту об'єктів.

4. Система уведення/висновку використає незалежний від пристроїв уведення/висновок і відповідає за пересилання даних відповідним драйверам для подальшої обробки.

5. Менеджер кеш-пам'яті поліпшує продуктивність системи уведення/висновку файлів, розміщаючи дані, що читають із диска, в основній пам'яті для прискорення доступу до них, а також відкладаючи на короткий час запис змінених даних на диск.

6. Крім того, що виконує частина включає чотири головних групи функцій, використовуваних тільки що перерахованими компонентами.

7. Менеджер об'єктів, що створює, видаляє об'єкти й абстрактні типи даних, а також управляє ними. Об'єкти використаються в Wіndows NT для подання таких ресурсів операційної системи, як процеси, потоки й об'єкти синхронізації.

8. LPC передає повідомлення між клієнтським процесом і процесом сервера на тім же самому комп'ютері. По суті, LPC - це оптимизированная версія відомої процедури вилученого виклику RPC (Remote Procedure Call), стандарту для організації взаємодії процесів в архітектурі клієнт/сервер.

9. Широкий набір бібліотечних функцій загального типу: обробка рядків, арифметичні операції, перетворення типів даних, обробка структур.

10. Процедури розподілу пам'яті, взаємообмін між процесами через пам'ять, два спеціальних типи об'єктів синхронізації - ресурси й об'єкти fast mutex.

Ядро NTOSKRNL.EXE виконує більшість основних операцій NT, що визначають порядок використання процесора: диспетчеризація потоків; диспетчеризація й обробка виключень; cинхронизация роботи процесорів; забезпечення базових об'єктів ядра, які використаються виконуємою часиною, що і в деяких випадках експортуються в режим користувача.

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

Одна з функцій ядра - забезпечення низкорівневої бази для добре певних примітивів операційної системи, які забезпечують роботу компонентів вищого рівня. Ядро ізолює саме себе від іншої частини ОС, що дозволяє винести прийняття політичних рішень із ядра, за винятком диспетчеризації потоків. Ядро використає набір найпростіших об'єктів, називаних об'єктами ядра, що дозволяють управляти роботою центрального процесора й порядком створення об'єктів, що обчислюють. Більшість об'єктів, що обчислюють, містить у собі один або більше об'єктів ядра, включаючи певні ядром атрибути. Один з наборів об'єктів називається об'єктами керування й включає об'єкт процесу ядра, об'єкт АРС, об'єкт процедури відкладеного виклику DPC (Deferred Procedure Call) і кілька об'єктів, використовуваних системою уведення/висновку (наприклад, об'єкт обробки переривання).

Інший набір об'єктів ядра - об'єкти диспетчеризації, включає об'єкти синхронізації потоків, потік ядра, mutex, об'єкти події, семафора, таймера, таймера очікування й ряд інших.

Іншим найголовнішим завданням ядра є абстрагування (або ізоляція) виконує частини ПЗ (программного забезпечення) драйверів пристроїв від розходжень мікропроцесорних платформ, на яких здатна працювати Wіndows NT: х86 і Alpha AXP. Специфічні для архітектури функції (такі, як контекстне перемикання потоку) реалізовані в ядрі. Функції, які можуть відрізнятися від машини до машини, реалізовані в складі HAL.

Драйвери пристроїв - модулі, що завантажують це, які працюють у режимі ядра, забезпечуючи інтерфейс між системою уведення/ висновку й відповідним устаткуванням. Назви цих модулів звичайно мають розширення .SYS. Всі вони, як правило, написані на Си (іноді S++) з використанням викликів процедур HAL і можуть бути стерпними на рівні двійкового коду між платформами, підтримуваними NT. Є кілька типів драйверів пристроїв:

· Драйвери, що маніпулюють пристроями (з використанням HAL) для запису вихідних даних або одержання вхідних даних від фізичних пристроїв або через мережу.

· Драйвери файлової системи, які приймають запити на файлове уведення/висновок і транслюють їх у запити уведення/висновку, пов'язані з конкретними пристроями.

· Драйвери фільтрів. Прикладом можуть бути драйвери підтримки дзеркальних дисків, шифрування даних, перехоплення уведення/висновку для додаткової обробки даних перед передачею їх на наступний рівень і т.д.

· Мережні драйвери, які передають і приймають вилучені запити на уведення/висновок.

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

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

 

 

Процеси та потоки Windows

Дійсно неможливо професійно розробляти багатопотокові програми, не знаючи, що таке процеси, потоки, ниті й синхронізаціяі, не представляючи, як вони працюють. Візьмемо за основу взята операційну систему Wіndows 2000.

Головною обставиною є те, що майже всі сучасні ОС багатозадачні. ОС Wіndows 2000 не є виключенням, у ній може працювати одночасно кілька програм. Кожна програми має, принаймні, одним програмним потоком, що у свою чергу може створювати ще кілька потоків і т.д. Але, незважаючи на те, що ОС, називається "багатозадачною" у конкретний момент часу виконується тільки один потік. Але сучасні комп'ютери працюють настільки швидко, що ви не зауважуєте, як ОС перемикається між потоками. Не варто забувати, що, розподіляючи процесорний час, операційна система Wіndows, має справу саме з потоками, а не із процесами, яким ці потоки належать.

Запускаючи програму в Wіndows, ви створюєте процес. І в цьому немає нічого дивного, тому що в інших операційних системах відбувається майже те ж саме. Однак все-таки процес в Wіndows, наприклад, відрізняється від процесу в Unіx. А вся справа в тому, що в Wіndows процес володіє відкритими файлами, оперативною пам'яттю й іншими ресурсами. Для кожного процесу (програми) Wіndows виділяє віртуальний адресний простір обсягом 4 Гб. Для адресації цього простору використаються звичайні 32-бітні покажчики, які являють собою числа від 0 до 4. Але процес в Wіndows не виконується. Виконується програмний потік. Потік - це послідовність машинних команд, які Wіndows сприймає, як єдине ціле (набір регістрів процесора). Потік має покажчик на команду, що у цей момент виконується, і покажчиком на стек де зберігаються локальні змінні потоку. Так у чому ж різниця запитаєте ви, між процесом і потоком, якщо запущена програма має тільки один, програмний потік те різниці практично ніякий. Однак потік може створювати інші потоки. А ті потоки можуть створювати ще потоки. Два процеси не можуть мати загальні ресурси, якщо не використають спеціальні механізми міжпроцесорної взаємодії. На противагу цьому всі потоки, які належать одному процесу, маю доступ до всіх ресурсів цього процесу.

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

Виділяють  чотири базових типи користувальницьких процесів

· Спеціальні процеси підтримки системи, наприклад, процес реєстрації користувача й менеджер сесій, які не є службами NT.

· Процеси сервера, які є службами NT (аналог демонів в ОС Unіx). Прикладом може бути реєстратор подій (Event Logger). Багато хто додатково встановлювані додатки, такі як Mіcrosoft SQL Server і Exchange Server, також включають компоненти, що працюють як служби NT.

· Підсистеми середовища, які забезпечують користувальницьким додаткам середовище інших операційних систем. Wіndows NT поставляється із трьома підсистемами: Wіn32, Posіx і OS/2 2.1.

· Користувальницькі додатки одного з п'яти типів: Wіn32, Wіndows 3.1, MS-DOS, Posіx або OS/2 1.2.

· Підсистеми середовища й бібліотеки DLL

Як видно з рис. 1, Wіndows NT має три підсистеми середовища (Wіn32, Posіx і OS/2 2.1), які працюють тільки на платформі х86. Підсистема Wіn32 специфічна для Wіndows NT і не може працювати поза нею.

Кожна з підсистем забезпечує користувальницьким додаткам доступ до різних  служб Wіndows NT. Це означає, що деякі речі можуть бути зроблені з додатка, побудованого на одній підсистемі, і не можливі з додатка, побудованого в іншій підсистемі. Так, додаток для Wіn32 не може використати функцію fork підсистеми Posіx.

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

Користувальницькі процеси не викликають служби NT прямо, а використають бібліотеки динамічних зв'язків (DLL) відповідної підсистеми середовища. Роль бібліотек, що належать підсистемі середовища, у тім, щоб транслювати документовані функції середовища у відповідні виклики недокументированных служб NT. Ці бібліотеки DLL експортують документований інтерфейс, що можуть викликати пов'язані з підсистемою програми. Наприклад, бібліотеки DLL підсистеми Wіn32 використають функції Wіn32 APІ. Бібліотека DLL підсистеми Posіx використає функції Posіx 1003.1 APІ.


Дата добавления: 2019-07-15; просмотров: 132; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!