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

Sis_prog_zabezpechennya

.pdf
Скачиваний:
60
Добавлен:
17.03.2016
Размер:
832.88 Кб
Скачать

Енциклопедичне видання

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

Структури програмних модулів

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

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

Може виявитись, що програма занадто велика і цілком у наявну оперативну пам’ять не вміщується. Тоді може бути використана оверлейна структура. Програму ділять на логічні частини — сегменти, причому деякі сегменти перекривають один іншого, тобто займають одне і те ж місце в ОП в процесі виконання (рис. 24).

Сегменти В і С викликаються в потрібній послідовності із сегмента А. Транслятори з мов програмування та редактори зв’язків мають зображувальні засоби для реалізації модулів оверлейної структури. В MS DOS для цього є різновид функції EXEC (21h, AH=4Bh, AL=03h), коли програма завантажується в ОП, але управління їй не передається, а повертається в програму, яка видала EXEC.

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

101

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

вмонтована в програму транслятором), виконується запит на додаткову пам’ять і в неї завантажується замовлений модуль.

Рис. 24

Супервізор

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

Текстовий редактор

Текстовий редактор — програмний продукт, призначений для автоматизації процесу створення та модифікації цільового документа. Сучасні текстові редактори можуть виконувати такі групи функцій:

редагування текстів, а саме:

запис тексту у файл на диску;

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

пошук та заміну ланцюжків символів;

102

Енциклопедичне видання

одночасну обробку різних фрагментів одного або кількох файлів;

перевірку орфографії;

пошук синонімів;

форматування тексту, у тому числі:

оформлення тексту з використанням різномантіних шриф-

тів;

управління поділом тексту на абзаци;

автоматичне перенесення слів;

вирівнювання тексту по лівому, правому краю;

багатоколонковий набір;

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

вставка в текст ілюстрацій;

підготовка змісту, зносок та індексів;

друкування текстів на різноманітних принтерах.

Нині найчастіше використовується текстовий редактор Word.

Тестовий контроль ЕОМ

Тестовий контроль — це перевірка ЕОМ на працездатність за допомогою спеціальних випробувальних програм — тестів. У ході виконання тесту ЕОМ здійснює певну послідовність дій над еталонними початковими величинами, порівнює одержані результати з еталонними і у випадку їх неспівпадання фіксує помилку. Основне завдання під час створення тестів — це якнайповніше охоплення вузлів ЕОМ та режимів їх роботи підбором відповідних прикладів для обчислень та комбінацій операцій. У процесі підбору контрольних прикладів тесту намагаються максимально використовувати «тяжкі» коди — значення операндів, за яких найбільш імовірні помилки виконання операцій в ЕОМ. Виконання операцій з тяжкими кодами викликає перемикання найбільшого числа елементів схеми, внаслідок чого навантажен-

103

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

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

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

Розрізняють тести контролюючі та діагностичні. Контролюючі тести призначені для визначення факту наяв-

ності несправності в ЕОМ або в пристрої. Вони «пропускаються» при кожному запуску ЕОМ, а для ЕОМ, які працюють у режимі підвищеної відповідальності (серверів тощо) також і періодично,

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

Оскільки контрольована ЕОМ є фактично підозрюваною на несправність і в той же час вона повинна винести достовірне суджен-

104

Енциклопедичне видання

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

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

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

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

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

Транслятор

Транслятор — програма, призначена для перекладу (трансляції) описів алгоритмів з вхідної мови у вихідну. Найчастіше у ролі вихідної мови використовується машинна мова конкретної ЕОМ (репертуар команд ЕОМ), хоча можливе й використання у цій ролі деякої проміжної мови, наприклад, мови Асемблера при

105

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

ступінчастій трансляції. Вхідними мовами найчастіше є процедурноабо об’єктно-орієнтовані мови програмування: Фортран, Алгол, Паскаль, С, С++ , Delphi та ін. Застосування мов програмування високого рівня підвищує продуктивність праці програмістів у кілька разів.

Розрізняють транслятори інтерпретуючого і компілюючого типів. У трансляторі інтерпретуючого типу процес трансляції поєднується з виконанням створюваної програми (пооператорно — один оператор вхідної мови транслюється у відповідну послідовність машинних команд і тут же виконується). Транслятори компілюючого типу видають вихідні програми, які можна потім виконувати багаторазово у міру необхідності. Транслятори компілюючого типу створюють більш ефективні програми (за швидкодією та займаною пам’яттю ЕОМ), ніж транслятори інтерпретуючого типу, особливо у випадку застосування оптимізації програми — заміна деяких одержаних при трансляції послідовностей машинних команд на коротші еквівалентні послідовності команд, повторне використання комірок оперативної пам’яті в ході виконання обчислювального процесу. Транслятори інтерпретуючого типу зручніші в режимі діалогу програміста з програмою при наладжуванні програми — покроковому виконанні новостворюваної програми з видачею інформації про виконання кожного кроку (як правило, один крок відповідає одному оператору мови програмування високого рівня, хоча можлива і більш гнучка дисципліна покрокової трансляції).

Трафік

Трафік — це навантаження на канал зв’язку. Наприклад, у випадку телефонного зв’язку це — коефіцієнт зайнятості лінії зв’язку протягом визначеного проміжку часу. Цей коефіцієнт приймає значення від нуля у випадку цілковитої незайнятості лінії зв’язку до одиниці у випадку безперервної зайнятості лінії зв’язку весь визначений проміжок часу. Реклама послуг мережі Інтернет трактує трафік як кількість одержаної користувачем

106

Енциклопедичне видання

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

Тупик (клінч, дедлок, взаємне блокування)

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

Для того щоб виник клінч, необхідно, щоб одночасно виконувались чотири умови:

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

2)очікування — процес, який видав запит на ресурс, буде чекати, поки запит не буде задоволено, продовжуючи в той же час утримувати ресурси, які він вже одержав раніше;

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

107

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

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

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

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

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

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

108

Енциклопедичне видання

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

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

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

Зокрема, в ОС Windows її «зависання» часто пов’язане з потраплянням у тупик. Для виходу з тупика рекомендується натиснути комбінацію клавіш CTRL + ALT + DEL і одержати список запущених у даний момент процесів. Завершуючи процеси послідовно по одному, можна досягти відновлення роботи системи. Такі засоби боротьби з тупиками є досить слабкими, тому ця ОС не рекомендується для застосування у відповідальних комплексах, зокрема, медичних та аерокосмічних. UNIX-подіб- ні ОС у цьому відношенні кращі — сервери під їх управлінням стійко працюють роками.

Угоди про міжпрограмні зв’язки

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

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

109

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

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

У цілому викликаюча програма зобов’язана:

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

2.Побудувати список параметрів для програми, що викликається, й адресу цього списку занести в умовлений регістр зв’язку (або використати стек, або записати параметри, якщо їх мало, у регістри).

3.Передати управління програмі, що викликається. Програма, що викликається, зобов’язана:

1.На самому початку своєї роботи зберегти вміст усіх регіст-

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

2.Перед своїм завершенням відновити вміст регістрів, збережений при вході в дану програму.

3.Повернутись в материнську програму (або в супервізор, якщо викликаюча програма дала таку вказівку), використовуючи стек або відповідний регістр зв’язку.

У сучасних комп’ютерах запам’ятовування регістрів та іншої інформації, пов’язаної зі зміною задач, має значну апаратну підтримку (сегмент стану задачі TSS).

110

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