ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Управління вводом-висновком
         

     

    Інформатика, програмування
    Управління введенням-виводом

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

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

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

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

    ОС виконує введення-виведення, записуючи команди в регістри контролера. Наприклад, контролер гнучкого диска IBM PC приймає 15 команд, таких як READ, WRITE, SEEK, FORMAT і т.д. Коли команда прийнята, процесор залишає контролер і займається іншою роботою. При завершенні команди контролер організовує переривання для того, щоб передати управління процесором операційній системі, яка має перевірити результати операції. Процесор отримує результати і статус пристрою, читаючи інформацію з регістрів контролера. Організація програмного забезпечення вводу-виводу

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

    Ключовим принципом є незалежність від пристроїв. Вид програми не повинен залежати від того, чи вона читає дані з дискети або з жорсткого диска.

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

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

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

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

    Для вирішення поставлених проблем доцільно розділити програмне забезпечення вводу-виводу на чотири шару (малюнок 2.30):  Обробка переривань,  Драйвери пристроїв,  Незалежний від пристроїв шар операційної системи,  Користувацький шар програмного забезпечення.

    Рис. 2.30. Багаторівнева організація підсистеми вводу-виводу Обробка переривань

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

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

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

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

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

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

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

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

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

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

    Хоча більша частина програмного забезпечення вводу-виводу знаходиться всередині ОС, деяка його частина міститься в бібліотеках, що пов'язуються з призначеними для користувача програмами. Системні виклики, що включають виклики введення-виведення, зазвичай робляться бібліотечними процедурами. Якщо програма, написана на мові С, містить виклик count = write (fd, buffer, nbytes),

    то бібліотечна процедура write буде пов'язана з програмою. Набір подібних процедур є частиною системи вводу-виводу. Зокрема, форматування вводу чи виводу виконується бібліотечними процедурами. Прикладом може служити функція printf мови С, яка приймає рядок формату і, можливо, деякі змінні в якості вхідної інформації, потім будує рядок символів ASCII і робить виклик write для виведення цього рядка. Стандартна бібліотека введення-виведення містить велику кількість процедур, які виконують введення-виведення і працюють як частина призначеної для користувача програми.

    Інший категорією програмного забезпечення вводу-виводу є підсистема спулінга (spooling). Спулінг - це спосіб роботи з виділеними пристроями в мультипрограмній системі. Розглянемо типовий пристрій, що вимагає спулінга - рядковий принтер. Хоча технічно легко дозволити кожному призначеному для користувача процесу відкрити спеціальний файл, пов'язаний з принтером, такий спосіб небезпечний через те, що користувальницький процес може монополізувати принтер на довільне час. Замість цього створюється спеціальний процес - монітор, який отримує виключні права на використання цього пристрою. Також створюється спеціальний каталог, званий каталогом спулінга. Для того, щоб надрукувати файл, призначений для користувача процес поміщає виведену інформацію в цей файл і поміщає його в каталог спулінга. Процес-монітор по черзі роздруковує всі файли, що містяться в каталозі спулінга.

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status