Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Мультипрограмування на основі переривань.




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

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

Залежно від джерела, переривання діляться на три більших класи:

· зовнішні;

· внутрішні;

· програмні;

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

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

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

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

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

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

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

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

 

Узагальнено послідовність дій апаратних і програмних засобів по обробці переривання можна описати в такий спосіб:

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

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

2. Автоматично зберігається деяка частина контексту перерваного потоку, що дозволить ядру відновити виконання потоку процесу після обробки переривання. У цю підмножину включаються значення лічильника команд, слова стану машини, що зберігає ознаки основних режимів роботи процесора (приклад слова - регістр EFLAGS в Intel Pentium), а також декількох регістрів загального призначення, які потрібні програмі обробки переривання. Може бути збережений і повний контекст процесу, якщо ОС обслуговує дане переривання зі зміною процесу.

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

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

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

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

Програмні переривання

Програмне переривання реалізує один зі способів переходу на підпрограму за допомогою спеціальної інструкції процесора, такий як INT у процесорах Intel Pentium, trap у процесорах Motorola, і т.п.

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

Практично всі сучасні процесори мають у системі команд інструкції програмних переривань.

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

Диспетчеризація й приоритезація переривань в ОС

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

Переривання створюють додаткові труднощі для ОС в організації обчислювального процесу.

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

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










Последнее изменение этой страницы: 2018-05-29; просмотров: 372.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...