1.3. Програмне забезпечення еом
Важливою особливістю ЦОМ є те, що вони досить легко перебудовуються на інший вид роботи. Автомат для продажу газованої води не можна змусити продавати, наприклад, газети. Програми роботи цих автоматів істотно відмінні, а головне - закладені в них жорстко в процесі виготовлення. Змінити програму подібного автомата можливо тільки заміною всіх його вузлів і деталей.
Оперативна перебудова обчислювальної машини для вирішення іншої задачі без якої-небудь зміни її структури й елементного складу можлива завдяки принципам збереженої в пам'яті програми і програмного керування. Суть програмного керування полягає в тому, що керуючі сигнали задаються кодами операцій у командах. Керуючий пристрій, одержавши ці коди, виробляє відповідну послідовність впливів на необхідні вузли і пристрої ЕОМ. Отже, перебудова на рішення нової задачі здійснюється введенням у пам'ять обчислювальної машини іншої послідовності команд. Важливо і те, що перебудову можна робити також у процесі обчислень, оскільки будь-яка команда нічим не відрізняється від інших цифрових кодів. Це дозволяє модифікувати будь-яку команду за допомогою операцій додавання, віднімання і множення.
Таким чином, програма для ЕОМ є описом усього процесу обробки інформації. У пам'яті обчислювальної машини вона являє собою впорядковану послідовність команд, кожна з яких займає комірку пам'яті і фіксується там у формі двійкового коду. Це машинна мова, яку тільки і "розуміє" ЕОМ. Можна відзначити, що спочатку (для ЕОМ першого покоління) програми необхідно було попередньо подавати у вигляді окремих елементарних команд і в такій формі вводити в пам'ять. Сьогодні, як правило, цього робити немає необхідності. В окремих випадках досить ввести вихідні дані задачі і вказати ім'я програми, що наявна в пакеті прикладних програм (ППП). Усі подальші операції виконуються ЕОМ без участі людини.
Програмне забезпечення обчислювальних машин розвивалося разом з обчислювальною технікою. На першому етапі, коли обсяг оперативної пам'яті був занадто малий, економія пам'яті мала першорядне значення і, нарешті, для рішення простої інженерної задачі програму необхідно було представляти машинною мовою, однією з задач програмістів було створення системи стандартних програм, що дозволяють полегшити програмування. У першу чергу, до таких стандартних програм можна віднести програми обчислення стандартних тригонометричних функцій, логарифмів, рішення системи лінійних алгебраїчних рівнянь, основних операцій над матрицями й ін.
Створення програми для перших ЕОМ було украй важким заняттям для програміста, але її виконання було простим для ЕОМ. Розглянемо найпростіший приклад складання програми обчислення значення функції y=(a+b)/(2*c-d) при відомих a,b,c,d.
Вважаємо, що в нашому розпорядженні триадресна ЕОМ (найкращий варіант для програміста) з умовною системою команд:
№ операції |
Дв.код оп. |
Операція |
0 |
000 |
стоп |
1 |
001 |
додавання |
2 |
010 |
віднімання |
3 |
011 |
множення |
4 |
100 |
ділення |
Розробка програми починається з розподілу пам'яті, тобто закріплення номерів комірок пам'яті за вихідними, проміжними і кінцевими даними.
-
Адреса
№ комірки
10000
a
10001
b
10010
c
10011
d
10100
a+b
10101
2*c
10110
2*c-d
10111
y
11000
2
З огляду на триадресну структуру команди, програма буде мати вид:
№ комірки |
КОП |
Адреса операнда 1 |
Адреса операнда 2 |
Адреса результату |
00000 |
001 |
10000 |
10001 |
10100 |
00001 |
011 |
11000 |
10010 |
10101 |
00010 |
010 |
10101 |
10011 |
10110 |
00011 |
100 |
10100 |
10110 |
10111 |
00100 |
000 |
|
|
|
Наведений найпростіший приклад показує наскільки трудоємким може бути процес складання більш складної програми. Наочність таких програм вкрай низька і розібратися в ній дуже важко.
Різнотиповість ЕОМ першого покоління і, головне, їхня програмна несумісність не дозволяли переносити програми з одного типу машини на іншій. Природно, при розробці ЕОМ наступних поколінь, ці недоліки були усунуті. По-перше, удосконалювалася схемно-логічна організація обчислювальних машин і виконувалася їхня типізація з урахуванням можливості програмної сумісності. По-друге, істотне підвищення потужностей ЕОМ дозволило на іншому принципі вирішувати проблему програмного забезпечення.
Почалася розробка символічних і алгоритмічних мов програмування.
Спочатку зважувалася проблема подання програм у символічному вигляді. Наприклад, замість коду додавання 01011010 стало можливим використовувати слово СКЛАСТИ чи навіть його частина СКЛ. Природно, потрібен був агент, що здійснює перекодування, "переклад" символічного запису команди в двійковий код ЕОМ, оскільки інформація будь-якого характеру, як і раніше, фіксується в пам'яті машини у вигляді двійкових кодів.
Процес перетворення програми з одного вигляду в іншій, із символьної форми в двійкову називається трансляцією, а агент, що здійснює цю операцію, - транслятором, тобто перекладачем, що представляє собою спеціальну програму.
Мова символічного запису програми є машинно-орієнтованою. Вона зручний тим, що кожну команду можна записати у вигляді звичних символів і слів. Операції по кодуванню команд двійковими кодами виконує транслятор, що називається автоматичним кодувальником. Він використовується і сьогодні з більш розповсюдженою назвою, а символічні мови прийнято називати мовами Ассемблера. Мови Ассемблера орієнтовані на систему команд конкретного типу ЕОМ, що затруднює обмін програмами, якщо обчислювальні машини відносяться до різних типів.
Проблема незалежності мови програмування від типу ЕОМ вирішена створенням машинно-незалежних мов високого рівня. Найскладніша програма-транслятор для кожної мови дозволяє записувати програми у формі, що не орієнтована на конкретну систему команд ЕОМ. Облік системи команд закладений у трансляторі.
У сучасних обчислювальних машинах можуть реалізовуватися два принципи трансляції, що визначається рядом факторів. Принцип компіляції полягає в тому, що вся програма перетвориться в послідовність машинних команд внутрішньою мовою ЕОМ, названою об'єктною мовою. Отриманий у такому вигляді об'єкт прийнято називати об'єктним модулем. Ця форма подання програми дозволяє переміщати її в пам'яті ЕОМ, довгостроково зберігати в зовнішній пам'яті і використовувати в міру потреби.
Другий принцип трансляції називається інтерпретацією. Суть його в наступному. Транслюється невелика частина програми, як правило, один оператор, фіксується в ОЗП ЕОМ і відразу ж виконується машиною. Потім транслюється наступний оператор програми, результат трансляції міститься в пам'яті (а попередній результат трансляції з пам'яті стирається) і виконується. Цей принцип застосовуємо тоді, коли обсяг оперативної пам'яті малий, що не дозволяє використовувати принцип компіляції, при якому транслюється вся програма і формується об'єктний модуль. Незручність інтерпретації полягає в необхідності щораз повторювати весь процес трансляції.
Таким чином, одним з основних елементів програмного забезпечення ЕОМ є програми-транслятори, що полегшують процес програмування.
Програми-транслятори відносяться до класу обробних програм у системі програмного забезпечення ЕОМ. До цього класу відносяться і спеціальні програми, що дозволяють здійснювати налагодження розроблених програм, їхній контроль, коректування, і програми, що реалізують найбільш часто використовувані чисельні методи вирішення задач. До них можна віднести програми операцій над матрицями й іншими видами масивів, вирішення систем різних рівнянь, обчислення інтегралів, різних типових функцій і т.п. Ці програми об'єднані в бібліотеки стандартних підпрограм. До цього класу програмного забезпечення можна віднести бібліотеки спеціалізованих програм, створені з урахуванням особливостей класу розв'язуваних у конкретній області задач. Вони часто називаються пакетом прикладних програм для рішення спеціальної задачі.
Другим великим класом програмного забезпечення є керуючі програми, що забезпечують керування обчислювальним процесом. Вони дозволяють організувати обмін інформацією і керуючими впливами між процесором і зовнішніми пристроями (пристроями вводу-виводу, зовнішніми запам'ятовуючими пристроями, пультом керування і т.п.).
Сукупність керуючих програм, програм налагодження, а часто і програм-трансляторів називається операційною системою (ОС) ЕОМ, що дозволяє:
організувати ефективну взаємодію людини з ЕОМ при введенні інформації, що підлягає обробці, виводі результатів цієї обробки;
виконати трансляцію програми, представленої користувачем на одній з мов високого рівня чи ассемблерній мові, на об'єктній мові конкретної ЕОМ;
контролювати правильність програми користувача (у межах формальних правил мови програмування) і видавати інформацію про характер і місце помилки;
розміщувати програму (вже об'єктною мовою), вихідні дані задачі в ОП і резервувати комірки пам'яті для розміщення проміжних і кінцевих результатів;
оперативно реагувати на поточний стан обчислювального процесу і блоків ЕОМ, здійснюючи переривання: і їхню обробку з видачею необхідної інформації;
захищати від знищення, псування, інших змін програми, дані, результати що знаходяться в пам'яті на момент уведення нових даних і програм, чи при спробі "сторонньої" особи одержати доступ до даних або до програм;
ефективно використовувати всі ресурси обчислювальної машини в процесі вирішення задач.
Це неповний перелік того, що покликана виконувати операційна система і все програмне забезпечення ЕОМ.
Варто окремо зупинитися на властивостях операційної системи:
1. Надійність. Операційна система повинна бути надійна, як і апаратура на якій працює. Вона повинна могти робити визначення і діагностування помилок, а також відновлення після більшості характерних помилок, що відбулися з вини користувача. Вона повинна захищати користувачів від їхніх же власних помилок чи принаймні мінімізувати шкоду, що вони можуть зробити всьому програмному оточенню, що знаходиться в мікро ЕОМ.
2. Захист. Операційна система повинна захищати виконувані задачі від їх взаємного впливу одна на одну.
3. Передбачуваність. Операційна система повинна відповідати на запити користувача передбачуваним образом. Результат виконання команд користувача повинні бути тим самим поза залежністю від послідовності, у якій ці команди посилаються на виконання (при дотриманні встановлених у системі правил).
4. Зручності. Операційна система пропонується користувачу тому, що вона набагато полегшує його роботу і звільняє його від тягаря задач по визначенню різних ресурсів і задач по керуванню цими ресурсами. Система повинна бути спроектована з урахуванням основних факторів людської психології.
5. Ефективність. При розподілі ресурсів операційна система повинна максимально підвищити використання системних ресурсів користувачем. Сама система не повинна використовувати велику кількість ресурсів, тому що ці ресурси стають недостатніми для задоволення запитів користувача.
6. Гнучкість. Системні операції можуть набудовуватися для узгодження поведінки користувача. Ресурси можуть бути збільшені (зменшені) для того, щоб поліпшити ефективність і приступність.
7. Розширюваність. У процесі еволюції до операційної системи можуть бути додані нові програмні засоби.
8. Ясність. Користувач може залишатися в невіданні відносно речей, що існують нижче рівня інтерфейсної системи. У той же час він повинен мати можливість довідатися про систему стільки, скільки він хоче. У даному випадку інтерфейсною системою є правила і функціональні характеристики засобів підключення і взаємодії будов обчислювальної машини.
Причиною існування операційних систем є задачі по розподілу ресурсів і задач по керуванню цими ресурсами. Ціль керування ресурсами полягає в тому, щоб досягти ефективного використання ресурсів користувачем, а також звільнити користувача від тягаря задач по оперуванню ресурсами.
Під ресурсами ЕОМ мається на увазі наступне:
процесорний час;
оперативна пам'ять;
периферійні пристрої;
математичне забезпечення.
1.Процесорний час - час доступу до процесора і, отже, час рахунку. Більшість задач при обчисленні їх на ЕОМ витрачають половину часу на чекання завершення операцій вводу-виводу. Економічна необхідність змушує розділяти ЕОМ між багатьма користувачами, що одночасно працюють. Таким чином, для ефективного використання процесорного часу потрібно складний механізм поділу часу - механізм, що використовує одночасну роботу центрального процесора (ЦП) і пристрою вводу-виводу інформації.
2.Оперативна пам'ять. Планування доступу до оперативної пам'яті невід'ємно від доступу до центрального процесора. Програма може виконуватися, якщо є доступ до центрального процесора, вона виявляється в оперативній пам'яті і виконується, тому що пам'ять дефіцитна, система повинна використовувати її з максимальною ефективністю. Є багато пропозицій використовувати оперативну пам'ять між декількома користувачами. Мета цих пропозицій максимально скоротити порожні простори оперативної пам'яті, що виникають із - за різних об'єктів і особливостей програм користувача.
3.Периферійні пристрої. З більшістю периферійних пристроїв у кожен момент часу може працювати тільки один користувач. Така робота периферійних пристроїв може привести до неефективного їх використання, якщо час розрахунку програми досить великий. Пристрою зі швидким доступом розділяються між користувачами за допомогою системи керування файлами. Затримки, що виникають при роботі з периферійними пристроями швидкого доступу, цілком задовільні виду швидкості цих пристроїв і у виді інтервалів часу між програмними запитами вводу-виводу.
Тому що більшості ЕОМ мають по одному принтеру,. повільність роботи цього пристрою може призвести до припинення виконання програм. Для того, щоб цього не було в програмі операційна система обслуговування вводу-виводу виключається механізмом, що називається спулінгом. Спулінг - процедура автоматичного запису на магнітний диск даних, призначених для виводу на принтер, і роздруку їх у міру готовності останнього.
4. Ресурси математичного забезпечення - являють собою доступні користувачу функції, призначені для роботи з даними і для контролю за виконанням програм. Серед цих ресурсів знаходяться сервісні програми по керуванню файлами і по обслуговуванню вводу-виводу, програм системного планування і системні бібліотеки.
При розгляді операційної системи необхідно зупинитися на типах і складі операційних систем. Як було сказано раніш, призначення операційної системи - це розподіл ресурсів ЕОМ. Звільнити користувача від турбот по розподілу ресурсів, операційна система може забезпеченням функціонування ЕОМ в одному з трьох режимів:
однопрограмний;
багатопрограмний;
багатозадачний;
Однопрограмний режим - режим, у якому всі ресурси ЕОМ представляється лише одній програмі, що виконує обробку даних.
Багатопрограмний режим - мультипрограмний режим, у якому трохи незалежних одна від одної програм виконують обробку даних одночасно. При цьому програми поділяють ресурси ЕОМ між собою. Основою мультипрограмного режиму є сполучення під час роботи центрального процесора і виконання операцій периферійних пристроїв. Достоїнство цього режиму перед однопрограмним режимом: більш ефективне використання ресурсів ЕОМ і підвищення її пропускної здатності.
Багатозадачний режим - режим мультизадачний, що передбачає рівнобіжне, тобто одночасне виконання більш ніж однієї програми по різних задачах, але таких, що використовують результат однієї задачі як вихідні дані для іншої, іншими словами, в операційній системі повинні бути засоби, що дозволяють задачам взаємодіяти одна з одною. На відміну від багатопрограмного режиму, де використовується принцип поділу часу між програмами, у цьому режимі йде рівнобіжне обчислення по всіх задачах.
Багатопрограмний режим можливий тільки в мультисистемі (системі з декількома процесорами).
Операційна система є посередником між ЕОМ і користувачем. Операційна система здійснює аналіз запитів користувача і забезпечує їхнє виконання. Запит представляється послідовністю команд особливою мовою директив операційної системи.
Операційна система може виконувати запити в різних режимах, тому операційну систему можна розділити на наступні типи:
операційна система пакетної обробки;
операційна система поділу часу;
операційна система реального часу;
операційна система діалогова.
1. Операційна система пакетної обробки - це система, що обробляє пакет завдань, тобто кілька завдань, підготовлених одним чи більше користувачами. Пакет завдань надходить в ЕОМ і взаємодія між користувачем і його завданням під час обчислювального процесу неможлива. Дана операційна система може функціонувати в однопрограмному і мультипрограмному режимах.
2. Операційна система поділу часу - забезпечує одночасне обслуговування багатьох користувачів, дозволяє кожному користувачем взаємодіяти зі своїм завданням. Ефект одночасної роботи досягається поділом процесорного часу й інших ресурсів між декількома обчислювальними процесами, що задані різними користувачами. Операційна система вибудовує чергу з завдань, що надходять, виділяє квант часу для доступу до центрального процесора кожному завданню відповідно до черги. Виконавши перше завдання, операційна система відсилає його в кінець черги і переходить до другого і т.д.
3. Операційна система реального часу - це система, що гарантує оперативне виконання запитів у плині заданого інтервалу часу. При цьому швидкість обчислювальних процесів в ЕОМ повинна погодитися зі швидкістю тимчасових процесів, тобто і ходом реального часу. ЕОМ з даною операційною системою найчастіше працює в однозначному режимі.
4. Діалогові операційні системи - призначені для індивідуального користування і забезпечують зручну форму діалогу ЕОМ з користувачем через дисплей при введенні і виконанні команд. Функціонує операційна система звичайно в однопрограмному режимі.
Незалежно від типу операційна система найчастіше складається з відносно компактного ядра - монітора (супервізора), набору системних програм і даних.
С
клад
операційної системи наданий на рис.1.3.
Рис. 1.3. Склад операційної системи
Драйвер - програма, що керує фізичною роботою зовнішнього - периферійного пристрою.
Утиліта - програма, призначена для підготовки вихідної інформації й організації збереження і використання програм - сервісна програма.
Бібліотека програм - набір файлів, зв'язаних одним каталогом, у який можуть входити об'єктні модулі (програми), макровизначення мови програмування й ін.
Легко помітити, що обчислювальна машина є складною системою, здатною сприймати, перетворювати різноманітну інформацію і видавати підсумки обробки в різній формі. Цьому сприяє не тільки технічна система, але і програмне забезпечення. Сукупність технічних засобів, яку часто називають хардвером (від англійського hardware - металевий виріб, чи "твердий продукт"), і програмного забезпечення, яке називають софтвером (від англійського software - паперовий виріб, чи "м'який продукт"), утворює таке обчислювальне середовище, що тільки в такому поєднанні і випливає найцінніша властивість - здатність обробляти всіляку інформацію.
Удосконалювання обчислювального середовища йде по шляху розвитку хардвера і софтвера. Останнім часом значна увага приділяється дослідженню зовсім нових принципів логічній-схемно-логічної організації і новій елементній базі ЕОМ, новим підходам взаємодії людини з ЕОМ на основі систем штучного інтелекту. Усе це повинно наблизити людину до ЕОМ, а ЕОМ до людини, зробивши їхніми партнерами при рішенні самих складних задач.
