Теорія операційної системи

:: Меню ::

Головна
Представлення даних в обчислювальних системах
Машинні мови
Завантаження програм
Управління оперативною пам'яттю
Сегментна і сторінкова віртуальна пам'ять
Комп'ютер і зовнішні події
Паралелізм з точки зору програміста
Реалізація багатозадачності на однопроцесорних комп'ютерах  
Зовнішні пристрої
Драйвери зовнішніх пристроїв
Файлові системи
Безпека
Огляд архітектури сучасних ОС

:: Друзі ::

Карта сайту
 

:: Статистика ::

 

 

 

 

 

Запити до драйвера

Обробку запиту можна розділити на три фази: передобробку, виконання запиту і обробку поста. Призначена для користувача програма запрошує операцію, виконуючи відповідний системний виклик. У ОС сімейства Unix це може бути, наприклад, системний виклик write (int file, void * buffer, size_t size) .
Передобробка виконується модулем системи, який, як правило, виконується в нитці процесу, що сформувала запит, але має привілеї ядра. Фаза передобробки включає.

  • Перевірку допустимості параметрів. Користувач повинен мати право виконувати запитану операцію над даним пристроєм, адреса буфера має бути допустимою адресою призначеного для користувача адресного простору і так далі
  • Можливо, копіювання або відображення даних з призначеного для користувача адресного простору в системний.
  • Можливо, перетворення даних, що виводяться. Наприклад, в системах сімейства Unix при виводі на термінал система може замінювати символ горизонтальної табуляції на відповідне число пропусків (якщо термінал не підтримує горизонтальну табуляцію) і перетворювати символ перекладу рядка. Річ у тому, що усередині системи як роздільник рядків використовується символ нового рядка '\n' (ASCII NL), а різні моделі терміналів і принтерів можуть використовувати також '\r' (ASCII RET, повернення каретки) або послідовності '\r"\n' або '\n"\r'.
  • Можливо, звернення до процедур драйвера. Ці процедури можуть блокувати код і дані драйвера у фізичній пам'яті і виділяти буфери для ПДП. Ці операції реалізуються нереєнтерабельними сервісами ядра і не завжди можуть бути виконані драйвером під час обробки запиту.
  • Передача запиту драйверу. Деякі системи реалізують передачу запиту як простий виклик відповідної функції драйвера, але частіше використовуються складніші асинхронні механізми, які обговорюватиметься далі.

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

 

:: Реклама ::

 

:: Посилання ::


 

 

 


Copyright © Kivik, 2017