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

Розділ 1

Введення

Без програмного забезпечення будь-який комп'ютер - просто даремна купа заліза. Саме завдяки програмам комп'ютер може зберігати, обробляти і шукати інформацію, відтворювати музику і відео, посилати повідомлення електронною поштою, вести пошук в Інтернеті і вирішувати безліч інших важливих завдань, для яких він і призначений. Програмне забезпечення можна розбити на дві великі групи: системні програми, що управляють роботою самого комп'ютера, і прикладні програми, призначені для вирішення завдань користувача. Найголовніша системна програма - це операційна система, вона управляє усіма системними ресурсами і забезпечує основу для роботи прикладних програм. Саме операційні системи є предметом розгляду в цій книзі. Як приклад, що демонструє принципи архітектури і їх практичну реалізацію, приведена ОС MINIX 3.Сучасний комп'ютер складається з одного або декількох процесорів,

оперативної пам'яті, дисків, клавіатури, монітора, принтерів, мережевих інтерфейсів

і інших приладів введення-виведення, тобто є складною системою. Написання

програм, які відстежують усі компоненти, коректно використовують їх і при

цьому оптимально працюють, є дуже важким завданням. Якби

кожному програмістові доводилося замислюватися про те, як працюють жорсткі

диски, пам'ятати про безліч нюансів, які можуть статися при читанні блоку даних, то багато програм, швидше за все, взагалі не були б написані.

Ще багато років тому стало зрозуміло, що треба якось захистити програмістів

від тонкощів, пов'язаних з апаратним забезпеченням. Поступово був

вироблений наступний шлях: поверх апаратури працює додатковий програмний

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

Місце операційної системи в загальній структурі комп'ютера показане на

малюнку 1.1. Знизу знаходиться апаратне забезпечення, яке у багатьох випадках

саме складається з двох або більше за рівні(чи шарів). Самий нижній рівень

містить фізичні пристрої, що складаються з інтегральних мікросхем,провідників, джерел живлення, електронно-променевих трубок і т. п. Те, як вони

влаштовані і як працюють, відноситься до сфери діяльності інженерів,

фахівців з електроніки.

Далі слідує мікроархітектурний рівень, на якому фізичні пристрої

групуються у функціональні блоки. Як правило, на мікроархітектурному

рівні знаходяться внутрішні регістри ЦПУ(центральне процесорне

пристрій) і тракт даних, що включає арифметико-логічний пристрій. На кожному

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

арифметико-логічним пристроєм(приміром, беруть участь в операції арифметичного

чи логічного підсумовування). Результат зберігається в одному чи декількох

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

засоби, у тому числі регістри. Апаратне забезпечення і команди, доступні програмістові на мові асемблера, утворюють архітектуру набору команд (Instruction Set Architecture,ISA).Часто цей рівень називають машинною мовою.

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

передавати більше параметрів, а інформація про статус операції, обертова

диском, досить складна. Крім того, при програмуванні багатьох пристроїв

введення-ввиведення(Input/Output, I/O) дуже важливу роль грають тимчасові

співвідношення.

Основне призначення операційної системи - приховати усі ці складнощі

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

Поверх операційної системи на нашому малюнку розташовані інші

системні програми. Тут знаходяться інтерпретатор команд(оболонка),

компілятори, редактори і т. д. Важливо розуміти, що подібні програми не

є частиною операційної системи, хоча зазвичай постачальники комп'ютерів

встановлюють їх на машини. Це дуже важливе, хоча і тонке, зауваження. Під

операційною системою зазвичай розуміється те програмне забезпечення,

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

апаратних засобів(ми не розглядаємо в даний момент деякі старі

мікропроцесори, які взагалі не мають апаратного захисту).

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

годинника, що є частиною операційної системи і зазвичай захищений апаратно

від спроб його модифікувати. Подібна класифікація має дуже розмиті межі у вбудовуваних

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

У деяких системах, включаючи MINIX 3, описаний підхід реалізований так

утрируване, що компоненти, традиційно відношенні до операційної системи

(приміром, файлова система)функціонують в призначеному для користувача режимі.

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

Підведемо підсумок вищесказаному: поверх системних програм виконуються

застосовні програми. Зазвичай вони купуються користувачем(чи пишуться їм)

для вирішення власних проблем - обробки тексту, електронних таблиць,

технічних розрахунків або зберігання інформації у базі даних.

    1. Поняття операційної системи

Більшість користувачів комп'ютерів мають деякий досвід спілкування з операційною системою, але зазвичай вони зазнають утруднення при спробі дати

їй визначення. До певної міри проблема пов'язана з тим, що операційні

системи виконують дві основні, але практично не пов'язані між собою

функції: розширення можливостей машини і управління її ресурсами. І в

залежності від того, якому користувачеві ви поставите питання, ви почуєте у відповідь

більше або про одну функцію, або про іншу. Давайте розглянемо обидві.

      1. Операційна система як розширена машина

Як було згадано раніше, архітектура(система команд, організація пам'яті,

уведення-виведення даних і структура шин) більшості комп'ютерів на рівні

машинної мови примітивна й незручна для роботи з програмами, особливо

відносно введення-виведення даних. Щоб це твердження не показалося

голослівним, коротко розглянемо приклад того, як відбувається введення-виведення даних з гнучкого диска через сумісні мікросхеми контролера NEC PD765,

використовувані на більшості персональних комп'ютерів з процесором Intel.

(У цій книзі ми використовуватимемо терміни "гнучкий диск" і " дискета" як

синоніми.) Контролер PD765 підтримує 16 команд, кожна вимагає

передачі від 1 до 9 байт в регістр пристрою. Це - команди для читання і запису

даних, переміщення голівки диска і форматування доріжок, а також для

ініціалізації, розпізнавання, установки в початкове положення і калібрування

контролера і приводів.

Основними командами є команди read(читання) і write(запис).

Кожна з них вимагає 13 параметрів, упакованих в 9 байт. Ці параметри

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

кількість секторів на доріжці, фізичний режим запису, розставляння проміжків

між секторами. Вони ж повідомляють, що робити з мітками адрес видалених

даних. Якщо ви не можете відразу все осмислити, не хвилюйтеся - повністю це

можуть зрозуміти лише декілька присвячених. Коли виконання операції

завершується, чіп контролера повертає упаковані в 7 байт 23 параметри, що відображають наявність і типи помилок. Але і цього недостатньо; програміст при роботі з гнучким диском повинен також постійно знать, включений двигун або ні. Якщо двигун вимкнений, його слід включити(з тривалим очікуванням запуску) перш, ніж дані будуть прочитані або записані. Двигун не може залишатися включеним занадто довго, оскільки гнучкий диск зношується. Програміст вимушений вибирати між довгими затримками під час завантаження і зношуванням гнучкого диску(з вірогідністю втрати даних на них). Навіть якщо не вдаватися до подробиць цього процесу, стає ясно, що звичайний програміст навряд чи захоче зіткнутися з такими деталями при роботі з гнучким диском (або жорстким диском, робота з ним не менш складна, але відбувається абсолютно інакше). Замість цього програмісту потрібні прості високо рівневі абстракції. В разі роботи з дисками типовою абстракцією є колекція іменованих файлів, що містяться на диску. Кожен файл може бути відкритий для читання або запису, прочитаний або записаний, а потім закритий. А такі деталі, як поточний стан двигуна або механізм модифікованої частотної модуляції, використовуваний при записі, не повинні відбиватися в абстракції, що з'являється перед користувачем. Звичайно ж, програма, що приховує істину про апаратне забезпечення і представляє простий список пойменованих файлів, які можна читати і записувати, — це і є операційна система. Операційна система не лише усуває необхідність безпосередньої взаємодії дисками, не лише надає простий орієнтований на роботу з файлами інтерфейс, але і приховує безліч проблем, пов'язаних з перериваннями, лічильниками часу, організацією пам'яті і іншими низькорівневими елементами. В кожному випадку абстракція, пропонована операційною системою, набагато простіше і зручніше в обігу, чимось, що може запропонувати безпосередньо основне обладнання.

З точки зору користувача операційна система виконує функцію

розширеної машини або віртуальної машини, для якої простіше програмувати

і з якої легше працювати, ніж безпосередньо з апаратним забезпеченням.

Історія про те, яким чином операційна система досягає своєї мети, -

виходить довгою, і ми докладно опишемо її в нашій книзі. Підіб'ємо підсумок

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

системними викликами. Ми наведемо приклади найбільш загальних системних викликів далі в цьому розділі.

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