Студопедия

КАТЕГОРИИ:

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

Процедури обробки переривань і поточний процес




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

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

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

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

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

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

Системні виклики

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

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

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

· забезпечувати перемикання в привілейований режим;

· мати високу швидкість виклику процедур ОС;

· забезпечувати однакове звертання до системних викликів для всіх апаратних платформ, на яких працюють ОС;

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

· забезпечувати контроль із боку ОС за коректним використанням системних викликів

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

При будь-якому системному виклику додаток виконує програмне переривання з певним й єдиним номером вектора.

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

 


 

Адреса процедури 21h
Адреса процедури 22h
Адреса процедури 23h

 
Адреса диспетчера системних викликів
 
 
Диспетчер системних викликів
 
Процедура обробки Системного виклику 21h
 
Процедура обробки Системного виклику 22h
 
Процедура обробки Системного виклику 23h
 

 


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

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

ОС може виконувати системні виклики в синхронномуабо асинхронномурежимах.

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

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

Більшість системних викликів в ОС є синхронними.

 

 










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

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