Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
вступ, ст 22-93.doc
Скачиваний:
5
Добавлен:
02.09.2019
Размер:
1.62 Mб
Скачать

Глава 1

Введення

Сучасна комп'ютерна система складається з одного або декількох

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

використовують їх і при цьому працюють оптимально, являє собою вкрай важку

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

відповідає за управління всіма перерахованими пристроями і забезпечує

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

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

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

провідників, джерел живлення, електронно-променевих трубок і т. п. Те, як вони

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

електроніці.

Вище розташований мікроархітектурний рівень, на якому фізичні

пристрою розглядаються з точки зору функціональних одиниць. Зазвичай на

цьому рівні знаходяться внутрішні регістри центрального процесора (CPU -

Central Processing Unit) і арифметико-логічний пристрій. На кожному такті процесора з регістра вибирається один або два операнда, які обробляються в арифметико-логічному пристрої (наприклад, дією операції додавання або логічного І). Результат зберігається в одному або кількох регістрах.

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

Деякі команди можуть бути виконані за один цикл передачі даних, інші

вимагають декількох циклів. Такі команди можуть використовувати регістри або

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

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

операцій та порівняння величин. Управління пристроями на цьому рівні здійснюється за допомогою завантаження певних величин в спеціальні регістри

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

адреса місця на диску, адреса в основній пам'яті, число байтів для читання і на-

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

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

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

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

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

Над операційною системою на нашому малюнку розташовані інші системні програми. Тут знаходяться Лари команд (оболонка), системи

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

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

встановлюють їх на машини. Це дуже важливе зауваження. Під операційною

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

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

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

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

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

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

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

системи і зазвичай захищений апаратно від спроб його модифіковані.

Існують системи, в яких ця різниця розмито. До них відносяться вбудований-

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

компонентів використовується інтерпретація, а не обладнання. Але в традиційних

комп'ютерах операційна система являє собою набір програм, запус-

запускаються в режимі ядра.

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

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

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

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

У деяких системах частині того, що зазвичай вважалося операційною системою

(Наприклад, файлова система), працюють у просторі користувача. У таких

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

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

операційної системи, або, принаймні, тісно з нею пов'язані.

Нарешті, над системними програмами розташовані прикладні програми.

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

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

збереження інформації в базі даних.

Що таке операційна система?

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

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

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

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

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

розглянемо обидві функції.

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

Як було згадано раніше, архітектура (система команд, організація пам'яті, введення-виведення даних і структура шин) більшості комп'ютерів на рівні машинного мови примітивна і незручна для роботи з програмами, особливо в процесі введення-виведення даних. Щоб це твердження не здалося голослівним, коротко розглянемо приклад того, як відбувається введення-виведення даних з гнучкого диска через сумісні мікросхеми контролера NEC PD765, використовувані на більшості персональних комп'ютерів з процесором Intel. (У цій книзі ми будемо використовувати і термін «гнучкий диск», і термін «дискета».) Контролер PD765 має 16 команд, кожна задається передачею від 1 до 9 байт у регістр пристрою. Це команди для читання і запису даних, переміщення головка і форматування доріжок, а також для ініціалізації, розпізнавання, установки в початкове положення і калібрування контролера і приводів. Основними командами є команди read і write (читання і запис). Кожна з них вимагає 13 параметрів, упакованих в 9 байт. Ці параметри визначають такі елементи, як адресу блоку на диску, який потрібно прочитати, кількість секторів на доріжці, фізичний режим запису, розстановку проміжків між секторами. Вони ж повідомляють, що робити з міткою адреси даних, які були вилучені. Якщо ви не можете відразу це осмислити, не хвилюйтеся повністю це зрозуміло лише присвяченим. Коли виконання операції завершується, чіп контролера повертає упаковані в 7 байт 23 параметра, що відображають наявність і типи помилок. Але цього не достатньо, і програміст при роботі з гнучким диском повинен також постійно знати, включений двигун чи ні. Якщо двигун вимкнений, його слід включити (з тривалим очікуванням запуску), перш ніж дані будуть прочитані або записані. Двигун не може залишатися включеним занадто довго, так як гнучкий диск зношується. Програміст змушений вибирати між довгими затримками під час завантаження і зношуються гнучкими дисками (з ймовірністю втрати даних на них). Навіть якщо не вдаватися глибше в подробиці цього процесу, стає ясно, що звичайний програміст навряд чи захоче мати справу з такими деталями при роботі з гнучким диском (або жорстким диском, робота з ним не менш складна). Замість цього програмісту потрібні прості високорівневі абстракції. У випадку роботи з дисками типовою абстракцією є колекція іменованих файлів, що містяться на диску. Кожен файл може бути відкритий для читання або записи, прочитаний або записаний, а потім закритий. А такі деталі, як поточне стан двигуна або використання при записі модифікованої частотної модуляції, не повинні міститися в абстракції, що предстає перед користувачем. Програма, що приховує істину про апаратне забезпечення і представляє простий список пойменованих файлів, які можна читати і записувати, і є операційною системою. Операційна система не тільки усуває необхідність роботи безпосередньо з дисками і надає простий, орієнтований на роботу з файлами інтерфейс, але і приховує безліч неприємною роботи з перериваннями, лічильниками часу, організацією пам'яті та іншими елементами низького рівня. У кожному разі абстракція, пропонована операційною системою, набагато простіше і зручніше в обігу, ніж те, що може запропонувати нам безпосередньо основне обладнання. З точки зору користувача операційна система виконує функцію розширеної машини або віртуальної машини, в якій простіше програмувати і легше працювати, ніж безпосередньо з апаратним забезпеченням, що становить реальний комп'ютер. Те, яким чином операційна система досягає своєї мети - довга історія, але ми детально розглянемо цей процес у нашій книзі. Підіб'ємо підсумок вищесказаного: операційна система надає нам ряд можливостей, які можуть використовувати програми з допомогою спеціальних команд, які називаються системними викликами. Ми наведемо приклади найбільш загальних системних викликів далі в цьому розділі.