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

spz / spz

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

можливим. Однак відомо, що схеми перекладу на основі СК-компіляції можна побудувати для багатьох із широко розповсюджених класів КЗ-мов, зокрема для LR- і LL-мов.

У процесі СК-перекладу і СК-компіляції не тільки виробляються ланцюжки тексту вихідної мови, але і відбуваються деякі додаткові дії, виконувані самим компілятором. У загальному випадку схеми СК-перекладу можуть передбачати виконання наступних дій:

1.Розміщення у вихідний потік даних машинних кодів або команд асемблера, що представляють собою результат роботи (вихід) компілятора;

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

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

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

Системне програмне забезпечення. І.Яковлєва

1

Поняття обчислювального процесу та ресурсу

1.Класифікація ресурсів.

2.Загальна схема виділення ресурсу.

3.Обчислювальні процеси.

4.Діаграма станів процесу.

5.Реалізація поняття послідовного процессу в ОС.

6.Процеси і треди.

7.Блок керування процесом.

Поняття “процес” є одним основним при розгляді операційних систем. Послідовний процес (іноді, який називається задачею) – це виконання окремої програми з її даними на послідовному процесорі. Процесор розглядається у двох аспектах: по-перше, він є носієм даних і по-друге, він одночасно з цим виконує операції, пов’язані з обробкою цих даних.

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

І ще одне поняття є основним при розгляді ОС. Це “ресурс”.

Термін ресурс застосовується по відношенню до повторно використовуємих, відносно стабільним і часто недостающим ? об’єктам, які запитуються, використовуються і вивільнюються процесами в період їхньої активності. Іншими словами – ресурсом називається всякий об’єкт, який може розподілятися в середині системи.

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

Ресурси

 

Подільны

 

 

Неподільні

 

 

 

 

 

 

 

 

 

 

 

 

Які

 

Які

використовуються

 

використовуються

одночасно

 

паралельно

Рис. 1.1. Класифікація ресурсів

Системне програмне забезпечення. І.Яковлєва

2

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

Процеси і треди

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

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

Основні види ресурсів

Насамперед, одним з найважливіших ресурсів є сам процесор (для мультипроцесорних систем), точніше - процесорний час(для однопроцесорних систем). Процесорний час поділяється поперемінно (паралельно).

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

Системне програмне забезпечення. І.Яковлєва

3

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

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

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

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

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

Як відомо, програмні модулі можуть бути однократно і багаторазово (чи повторно) використовуваними.

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

Системне програмне забезпечення. І.Яковлєва

4

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

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

Непривілейовані програмні модулі це звичайні програмні модулі,

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

На противагу цьому, реентерабельні програмні модулі

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

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

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

Системне програмне забезпечення. І.Яковлєва

5

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

Паралельне існування термінів «операційна система» і «операційне середовище» викликане тим, що ОС у загальному випадку може підтримувати декілька операційних середовищ.

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

В перших обчислювальних системах люба програма могла виконуватися тільки після повного завершення попередньої. Оскільки ці перші обчислювальні машини були побудовані у відповідності з принципами, які були викладені у відомій роботі Яноша Джон фон Неймана, усі підсистеми та пристрої комп’ютера керувались виключно центральним процесором. Центральний процесор здійснював і виконання обчислень, і керування операціями введенням./виведенням . Відповідно поки здійснювався обмін даними між оперативною пам’яттю за зовнішніми пристроями, процесор не міг виконувати обчислення. Введення в склад обчислювальної машини спеціальних контролерів дозволило сумістити в часі (розпаралелити) операції виведення отриманих даних та наступні обчислення на центральному процесорі. Але все одно процесор продовжував часто та довго простоювати, очікуючи завершення операцій введення/виведення. Тому було запропоновано організувати так званий мультипрограмний, або м3ультизадачний режим.

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

Див. мал.

Системне програмне забезпечення. І.Яковлєва

6

Вв

CPU

Задача А

Задача В

Вв

CPU

Задача А

Вв

CPU

Задача В

Рис. 1.2. Приклад виконання двох програм:

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

Системне програмне забезпечення. І.Яковлєва

7

Основні риси мультипрограмного режиму

-в ОП (оперативній пам.) знаходиться декілька програм користувача;

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

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

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

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

Ресурс може бути виділений задачі, яка звернулася до супервізора з відповідним запитом, якщо:

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

-поточний запит і раніше видані запити допускають сумісне користування ресурсом;

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

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

Системне програмне забезпечення. І.Яковлєва

8

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

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

Діаграма станів процесу

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

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

-готовності до виконання – ресурси можуть бути надані, коли процес перейде стан виконання;

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

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

Системне програмне забезпечення. І.Яковлєва

9

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

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

Виконання

 

Готовність

Бездіяльність

до

(пасивний стан)

виконання

Очікування (стан блокування)

Рис. 1.3. Граф станів процесу

Процес із пасивного стану може перейти в стан готовності в наступних випадках:

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

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

здійснення деякої події може запускати відповідну задачу); [пристрій наз.

Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.

Оставленные комментарии видны всем.

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