Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Обробка даних багаторівневими драйверами

Завершення запиту введення-виведення

Обслуговування переривань

Принципи обробки переривань введення-виведення у Windows ХР майже не від­різняються від розглянутих для Linux. У разі виникнення переривання апаратура викликає оброблювач переривання для даного пристрою. При цьому безпосеред­ній оброблювач (верхня половина) звичайно залишається на рівні переривань пристрою тільки для того щоб поставити на виконання нижню половину (DPC) і завершитися. Основну роботу здійснює, як і в Linux, нижня половина, що вико­нується із меншим пріоритетом (на рівні переривань DPC/dispatch). Після завер­шення обробки драйвер просить менеджера введення-виведення завершити оброб­ку запиту і вилучити із системи пакет IRP.

Після завершення виконання функції DPC починається останній етап обробки запиту - завершення введення-виведення (I/O completion).

Таке завершення розрізняють для різних операцій. Звичайно воно зводиться, як і в Linux, до копіювання даних в адресний простір процесу користувача (це мо­же бути буфер введення-виведення або блок статусу операції - структура, задана потоком, що робив виклик).

У разі синхронного введення-виведення адресний простір належить до проце­су, що робив виклик, і дані можуть бути записані в нього безпосередньо. Якщо за­пит був асинхронним, активний потік швидше за все належить до іншого процесу, і потрібно дочекатися, поки адресний простір потрібного процесу не стане доступ­ним (тобто поки не почне виконуватися потік, що викликав операцію). Для цього менеджер введення-виведення планує до виконання спеціальну процедуру, яку називають АРС-процедурою (від Asynchronous Procedure Call - асинхронний ви­клик процедури). АРС-процедура виконується лише в контексті конкретного по­току, тому очікуватиме, поки цей потік не продовжить своє виконання. Далі вона отримує керування, копіює потрібні дані в адресний простір процесу, що робив ви­клик, вивільняє пам'ять із-під пакета IRP і переводить файловий дескриптор, для якого виконувалась операція (або інший об'єкт, наприклад, порт завершення вве­дення-виведення) у сигналізований стан, для того щоб потік, який викликав опе­рацію (або будь-який потік, що очікував на цих об'єктах) відновив своє виконан­ня. Після цього введення-виведення вважають завершеним.

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

Після створення пакета IRP менеджер введення-виведення передає його драй­веру верхнього рівня (у нашому випадку - файлової системи). Подальші дії зале­жать від запиту і реалізації його обробки в цьому драйвері - він може відіслати драйверу нижнього рівня той самий пакет, а може згенерувати і відіслати набір нових пакетів. Ці два підходи розглянемо докладніше.

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

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

 

 

Розділ 8. Взаємодія з користувачем в операційних системах.

(аудиторних6/2г. , самостійних- 8/6г.)

 

Лекція №1.

 

Тема: Термінальне введення-виведення.

 

План:

1. Організація термінального введення-виведення: поняття термінала, емуляція термінала, віддалені термінали і консоль, термінальне введення, термінальне виведення,(Л1 ст.439-442).

2. Термінальне введення-виведення в UNIX та Linux: файли термінальних пристроив та консоль, псевдотермінали, керуючий термінал процесу (Л1 ст.442-443).

3. Термінальне введення виведення у Win-32 API (Л1 ст.444-445).

 

1.

Поняття термінала

Історично термінали (terminals) використовували для організації багатокористувацької роботи із мейнфреймами або мінікомп'ютерами. Це були апаратні при­строї, що складалися із клавіатури і дисплея, які підключали до комп'ютера через інтерфейс послідовного порту. Особливе поширення такі термінали здобули у 70-80-ті роки: усі розроблені в той час операційні системи включали засоби їхньої підтримки, було створено багато прикладного програмного забезпечення, розрахованого на роботу із ними.

Такі термінали працюють у текстовому режимі, за якого обмін даними і їхнє відображення на програмному рівні відбуваються посимвольно. Для відображен­ня використовують екран розміром у символах (звичайно 25 на 80), причому ві­дображатися можуть тільки стандартні символи із кодами ASCII. За подання на екрані розширеного набору символів із кодами 127-255, зокрема символів кири­лиці, відповідає символьна таблиця, яка використовується терміналом.

Є спеціальні символи (керуючі коди) і послідовності символів, які не відобра­жаються, а керують виведенням на екран термінала. До керуючих кодів належать такі символи, як повернення каретки, переведення рядка, Backspace тощо. Керую­чі послідовності називають також ESС-послідовностями (вони починаються із символу із ASCII-кодом 27-ESC). Передаючи такі послідовності термінала, можна переміщати курсор у довільну позицію екрана, керувати яскравістю відоб­раження символів, для деяких моделей терміналів - кольорами тощо.

Емуляція термінала

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

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

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

 


Читайте також:

  1. Аналіз паралельного інтерейсу з DSP-процесорами: запис даних в ЦАП, що під’єднаний до адресного простору пам’яті
  2. Аналіз паралельного інтерфейсу з DSP-процесорами: читання даних з АЦП, що під’єднаний до адресного простору пам’яті
  3. Аналіз статистичних даних про склад та плинність кадрів, які обіймали керівні
  4. Аналіз та інтерпретація одержаних даних
  5. Аналітична обробка інформації вузлами інформаційно-аналітичної функціональної підсистеми МОЗ України і питань НС.
  6. Архіватори даних.
  7. Архітектура баз даних
  8. Аудит розрахунків за відшкодуванням завданих збитків
  9. Бази даних АС ДЗК
  10. Бази даних як засіб зберігання й обробки інформації
  11. Банки даних
  12. Безпека даних




Переглядів: 982

<== попередня сторінка | наступна сторінка ==>
Структура драйвера пристрою | Термінальне введення

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.003 сек.