Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

spz / spz

.pdf
Скачиваний:
33
Добавлен:
23.02.2016
Размер:
5.16 Mб
Скачать

Системне програмне забезпечення.

І.Яковлєва

1

Структура системного програмного забезпечення

1.Структура СПЗ.

2.Місце ОС в СПЗ.

3.Поняття операційного середовища.

4.Операційні системи.

5.Системи керування файлами.

6.Інтерфейсні оболонки для взаємодії користувача з ОС і програмні середовища.

7.Системи програмування.

8.Утиліти.

9.Основні функції ОС.

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

Програма - це запис алгоритму розв'язання задачі у вигляді послідовності команд або операторів мовою, яку розуміє комп'ютер. Кінцевою метою любої комп'ютерної програми є керування апаратними засобами.

Для нормального розв'язання задач на комп'ютері потрібно, щоб програма була налагоджена, не потребувала дороблень і мала відповідну документацію. Тому стосовно роботи на комп'ютері часто використовують термін програмне забезпечення (software).

В англомовній технічній літературі термін System Software (системне

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

1.Операційні системи.

2.Системи керування файлами.

3.Інтерфейсні оболонки для взаємодії користувача з ОС і програмні середовища.

4.Системи програмування.

5.Утиліти.

Системне програмне забезпечення.

І.Яковлєва

2

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

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

Рис.1. Узагальнена структура програмного забезпечення обчислювальної системи

Основними функціями, що виконує ОС, є наступні:

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

2.прийом і виконання програмних запитів на запуск, припинення, зупинку інших програм;

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

Системне програмне забезпечення.

І.Яковлєва

3

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

5.ідентифікація всіх програм і даних;

6.забезпечення роботи систем керувань файлами (СКФ) і/чи систем керування базами даних (СКБД), що дозволяє різко збільшити ефективність усього програмного забезпечення;

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

8.забезпечення функцій по організації і керуванню всіма операціями введення/виведення;

9.задоволення жорстким обмеженням на час відповіді в режимі реального часу (характерно для відповідних ОС);

10.розподіл пам'яті, а в більшості сучасних систем і організація віртуальної пам'яті;

11.планування і диспетчеризація задач відповідно до заданого стратегією і дисциплінами обслуговування;

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

13.захист однієї програми від впливу іншої; забезпечення схоронності даних;

14.надання послуг на випадок часткового збою системи;

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

2. Призначення системи керування файлами — організація більш зручного доступу до даних, організованих як файли. Саме завдяки системі керування файлами замість низькорівневого доступу до даних із указівкою конкретних фізичних адрес потрібного нам запису використовується логічний доступ із вказівкою імені файлу і запису в ньому. Як правило, сучасні ОС мають відповідні системи керування файлами. Однак виділення цього виду системного програмного забезпечення в окрему категорію представляється доцільним, оскільки ряд ОС дозволяє працювати з декількома файловими системами (або з однією з декількох, або відразу з декількома одночасно). У цьому випадку говорять про монтируємі файлові системи (додаткову систему керування файлами можна установити), і в цьому змісті вони самостійні. Більш того, можна назвати приклади найпростіших ОС, що можуть працювати і без файлових систем, а виходить, їм необов'язково мати систему керування файлами, або вони можуть працювати з однією з обраних файлових систем. Треба, однак, розуміти, що будь-яка система керування файлами не існує сама по собі - вона розроблена для роботи в конкретній ОС і з конкретною файловою системою. Можна сказати, що

Системне програмне забезпечення.

І.Яковлєва

4

усім відома файлова система FAT (file allocation table) має багато реалізацій як система керування файлами, наприклад FAT-16 для самої

MS-DOS, super-FAT для OS/2, FAT для Wlndows NT і т.д. Іншими словами,

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

Для зручності взаємодії з ОС можуть використовуватися додаткові інтерфейсні оболонки. Їхнє основне призначення або розширити можливості по керуванню ОС, або змінити убудовані в систему можливості. Як класичні приклади інтерфейсных оболонок і відповідних операційних середовищ виконання програм можна назвати різні варіанти графічного інтерфейсу X Window у системах сімейства UNIX (наприклад, ДО Desktop Environment у Linux), PM Shell чи Object Desktop у OS/2 із графічним інтерфейсом

Presentation Manager; нарешті, можна вказати різноманітні варіанти інтерфейсів для сімейства ОС Windows компанії Microsoft, що заміняють Explorer і можуть нагадувати або UNIX з його графічним інтерфейсом, або OS/2, або MAC OS. Слід зазначити, що про сімейство ОС компанії Microsoft із загальним інтерфейсом, реалізованим програмними модулями з назвою Explorer (у файлі system.ini, що знаходиться в каталозі Windows, мається рядок SHELL=EXPLORER.EXE), все ж можна сказати, що замінною в цих системах є тільки інтерфейсная оболонка, у той час як саме операційне середовище залишається незмінним; вона інтегрована в ОС. Іншими словами, операційне середовище визначається програмними інтерфейсами, тобто API (application program Interface). Інтерфейс прикладного програмування (API) містить у собі керування процесами, пам'яттю і введенням/виведенням.

РЯД операційних систем можуть організовувати виконання програм, створених для інших ОС. Наприклад, у OS/2 можна виконувати як програми, створені для самої OS/2, так і програми, призначені для виконанні в середовищі MS-DOS і Windows 3.x. Відповідна операційне середовище організується в операційній системі в рамках окремої віртуальної машини. Аналогічно, у системі Linux можна створити умови для виконання деяких програм, написаних для Windows 95/98. Визначеними можливостями виконання програм, створених для іншого операційного середовища, володіє і Windows NT. Ця система дозволяє виконувати деякі програми, створені для MS-DOS, OS/2 1.x, Windows 3.x. Правда, у своєму останнім сімействі ОС Windows XP розроблювачі вирішили відмовитися від можливості виконання DOS-програм.

Нарешті, до цього класу системного програмного забезпечення варто віднести і емулятори, що дозволяють змоделювати в одній операційній системі яку-небудь іншу машину або операційну систему. Так, відома система емуляції WМWАRЕ, що дозволяє запустити в середовищі Linux будьяку іншу ОС, наприклад Windows. Можна, навпаки, створити емулятор,

Системне програмне забезпечення.

І.Яковлєва

5

що працює в середовищі Windows, що дозволить змоделювати комп’ютер, що працює під керуванням будь-якої ОС, у тому числі і під Linux.

Таким чином, термін операційне середовище означає відповідний інтерфейс, необхідний програмам для звертання до ОС з метою одержати визначений сервіс — виконати операцію введення/виведення, одержати або звільнити ділянка пам'яті і т.д.

3.Система програмування на мал. 1 представлена наперед усе такими компонентами, як транслятор з відповідної мови, бібліотеки підпрограм, редактори, компоновщики й відладчики. Не буває самостійних (відірваних від ОС) систем програмування. Будь-яка система програмування може працювати тільки у відповідній ОС, під якою вона і створена, однак при цьому вона може дозволяти розробляти програмне забезпечення і під інші ОС. Наприклад, одна з популярних систем при програмування мовою C/C++ від фірми Watcom для OS/2 дозволяє одержувати програми і для самої OS/2, і для DOS, і для Windows.

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

4.Нарешті, під утилітами розуміють спеціальні системні програми, за допомогою яких можна як обслуговувати саму операційну систему, так і підготовляти для роботи носії даних, виконувати перекодування даних, здійснювати оптимізацію розміщення даних на носії і проводити деякі інші роботи, зв'язані з обслуговуванням обчислювальної системи. До утиліт варто віднести і програму розбивки нагромаджувача на магнітних дисках на розділи, і програму форматування, і програму переносу основних системних файлів самої ОС. Також до утиліт відносяться і відомі комплекси програм від фірми Symantec, що носять ім'я Пітера Нортона (творця цієї фірми і співавтора популярного набору утиліт для перших IBM PC). Природно, що утиліти можуть працювати тільки у відповідному операційному середовищі.

1

Базові поняття сучасних операційних систем

1.Загальна характеристика сімейства операційних систем Unix, особливості архітектури сімейства ОС Unix

2.Основні поняття системи Unix

2.1.Віртуальна машина

2.2.Користувач

2.3.Інтерфейс користувача

2.4.Привілейований користувач

2.5.Привілейований користувач

2.6.Команди і командний інтерпретатор

2.7.Процеси

3.Функціонування системи Unix . Виконання процесів

Загальна характеристика сімейства операційних систем Unix, особливості архітектури сімейства ОС Unix

Unix являє приклад винятково вдалої реалізації простої мультипрограмної і багатокористувальницької операційної системи. У свій час вона проектувалася як інструментальна система для розробки програмного забезпечення. Своєю унікальністю система Unix зобов'язана багато в чому тій обставині, що вона була, створена всього двома розроблювачами ( Кеном Томпсоном і Денісом Рітчі).Люди, що створювали її, розробляли систему для себе, і перший час використовували на міні-ЕОМ із дуже скромними обчислювальними ресурсами. З цієї причини Unix, має просту, але дуже могутню командну мову і незалежну від пристроїв файлову систему. Оскільки при створенні цієї ОС використовувалася мова високого рівня, на якій пишуться не тільки системні, але і прикладні програми (мова йде про мову С), то система і додатки, що виконуються в ній, вийшли легко переміщуваними (мобільними). Компілятор з мови С для всіх відтрансльованих програм дає реєнтерабельний і поділюваний код, що дозволяє ефективно використовувати наявні в системі ресурси.

Першою метою при розробці цієї системи було прагнення зберегти простоту й обійтися мінімальною кількістю функцій.

Другою метою була спільність. Ті самі методи і механізми повинні були використовуватися в багатьох випадках. Тому спільність у Unixсистемах виявляється в багатьох аспектах, і зокрема:

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

2

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

ті самі механізми працюють у відношенні програмно й апаратно ініціюємих переривань.

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

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

Unix-системи поставляються з великим набором системних і прикладних програм, що включають редактори текстів, програмувальні інтерпретатори командної мови, компілятори з декількох популярних мов програмування, включаючи С, С++, ассемблер, РЕRL, FORTRAN і багато іншіх, компоновщики (редакторів міжпрограмних зв'язків), відтладчики, численні бібліотеки системних і користувальницьких програм, засоби сортування і ведення баз даних, численні адміністративні й обслуговуючі програми. Для абсолютної більшості цих програм є документація, що включає в себе такі важливі документи, як вихідні (як правило, з гарними коментарями) тексти програм. Крім цього, опис і документація в більшій частині доступні користувачу безпосередньо за екраном в інтерактивному режимі. Використовується ієрархічна файлова система з повним захистом, робота зі томами, які знімаються, забезпечується незалежність від пристроїв.

Центральною частиною системи Unix є ядро (кеrnel).

Основні поняття системи Unix

Одним з достоїнств ОС Unix є те, що система базується на невеликому числі понять; коротко їх розглянемо.

Віртуальна машина

Система Unix — багатокористувальницька. Кожному користувачу після реєстрації (входу в систему) дається віртуальний комп'ютер, у якому є всі необхідні ресурси: процесор (процесорний час виділяється на основі «карусельної» диспетчеризації (RR — round robin) і з використанням динамічних пріоритетів для того, щоб забезпечити рівність в обслуговуванні), пам'ять, пристрої, файли. Поточний стан такого віртуального комп'ютера,

3

наданого користувачу, називається образом. Можна сказати, що процес — це виконання образа. Образ складається з:

образа пам'яті;

значень загальних регістрів процесора;

стану відкритих файлів;

поточного директорія (каталогу файлів) і іншої інформації.

Образ процесу під час його виконання розміщується в основній пам'яті. У старих версіях системи Unix образ міг бути вивантажений (откачан) на диск, якщо якому-небудь більш пріоритетному процесу потрібно місце в основній пам'яті.

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

Образ пам'яті поділяється на три логічних сегменти:

сегмент реєнтерабельних процедур (починається з нульової адреси у віртуальному адресному просторі процесу);

сегмент даних (розташовується за сегментом процедур і може рости убік великих адрес);

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

уміру занесення в нього інформації при викликах підпрограм і при перериваннях).

Користувач

Із самого початку ОС Unix розроблялась як інтерактивна багатокористувальницька система. Іншими словами, Unix призначений для мультитерминальної роботи. Щоб почати працювати, людина повинна «увійти» у систему, ввівши з вільного термінала своє облікове ім'я (ассоunt name) і, можливо, пароль. Людина, зареєстрована в облікових файлах системи і, отже, що має обліковий запис, називається зареєстрованим користувачем системи. Реєстрацію нових користувачів звичайно виконує адміністратор системи. Користувач не може змінити своє облікове ім'я, але може установити і/чи змінити свій пароль. Паролі зберігаються в окремому файлі в закодованому виді.

Усі користувачі ОС Unix явно або неявно працюють з файлами. Файлова система ОС Unix має деревоподібну структуру. Проміжними

4

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

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

Інтерфейс користувача

Традиційний спосіб взаємодії користувача із системою Unix ґрунтується на використанні командних мов. Після входу користувача в систему для нього запускається один з командних інтерпретаторів. Звичайно в системі підтримується декілька командних інтерпретаторів зі схожими командними мовами, але які розрізняються своїми можливостями. Загальна назва для будь-якого командного інтерпретатора ОС Unix — shell (оболонка), оскільки будь-який інтерпретатор представляє зовнішнє оточення ядра системи.

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

Привілейований користувач

Ядро ОС Unix ідентифікує кожного користувача по його ідентифікаторі (UID — user identifier), унікальному цілому значенню, що привласнюється користувачу при реєстрації в системі. Крім того, кожен користувач відноситься до деякої групи користувачів, що також ідентифікується деяким цілим значенням (GID — group identifier). Значення UID і GID для кожного

5

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

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

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

Команди і командний інтерпретатор

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

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

Командний рядок складається з імені команди (тобто імені виконуваного файлу), за яким стоїть список аргументів, розділених пробілами. Оболонка розбиває командний рядок на компоненти. Зазначений у команді файл завантажується, і йому забезпечується доступ до заданих в команді аргументів.

Люба командна мова сімейства Unix фактично складається з трьох частин:

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

убудованих команд, виконуваних безпосередньо інтерпретатором командної мови;

команд, що представляються окремими виконуваними файлами.

Соседние файлы в папке spz