I-O система, компютърна RAM

В тази статия ще говорим за теми катоВходно/изходна система и също така ще говорим закомпютърна RAM, ще разберем как тя взаимодейства сВходно/изходна система.

I/O система

Една от основните задачи на ОС е да осигури обмен на данни между приложенията и компютърната периферия. В съвременните операционни системи тази функция се изпълнява отI/O subsystem.

Основните компоненти на I / O подсистемата:

  1. Шофьори.
  2. Файлова система.
  3. мениджър на прекъсвания.

Входно-изходната подсистема на мултипрограмна ОС, когато обменя данни с външни устройства на компютъра, трябва да решава редица общи задачи, от които най-важните са следните:

  • Организация на паралелна работа на входно-изходни устройства и процесор.
  • Съвпадение на скоростта и кеширане на данни.
  • Разделяне на устройства и данни между процесорите.
  • Осигуряване на удобен логически интерфейс между устройствата и останалата част от системата.
  • Поддръжка на широк набор от драйвери с възможност за включване на нов драйвер в системата.
  • Динамично зареждане и разтоварване на драйвери.
  • Поддръжка на множество файлови системи.
  • Поддръжка за синхронни и асинхронни I/O операции.

Организация на паралелна работа на I / O устройства и процесор

Всяковходно/изходно устройство на изчислителната система е оборудвано с управляващо устройство - контролер. Контролерът взаимодейства с драйвера - системен софтуерен модул, предназначен да управлява това устройство.

Контролерът периодично получава изход от драйвера къминформация за устройството, както и команди за управление, които ви казват какво да правите с тази информация. Под ръководството на контролера, устройството може да изпълнява своите операции автономно за известно време, без да изисква внимание от страна на процесора. Това време зависи от много фактори - количеството изобразена информация, степента на интелигентност на контролера, управляващ устройството, скоростта на устройството и т.н. Дори най-примитивният контролер, който изпълнява прости функции, обикновено прекарва доста време в изпълнение на такава функция, след като получи следващата команда от процесора. Същото важи и за сложните контролери. скоростта на всяко I / O устройство обикновено е значително по-ниска от скоростта на процесора.

Процесите, протичащи в контролерите, се случват в периодите между подаването на команди, независимо от операционната система. ОтI/O подсистемата се изисква да планира в реално време (в което работят външните устройства) стартирането и спирането на голямо разнообразие от драйвери, като гарантира, че всеки драйвер има приемливо време за реакция на независими събития на контролера. От друга страна, необходимо е да се сведе до минимум използването на процесора от I/O задачи, като се остави възможно най-много време на процесора за изпълнение на потребителски нишки.

Този проблем обикновено се решава на базата на многостепенна схема за обслужване на приоритетни прекъсвания.

Договаряне на скорост и кеширане на данни

Магнитните дискови устройства имат изключително ниска скорост в сравнение със скоростта на централната част на компютъра: средната скорост на процесора с RAM е 2-3 порядъка по-висока от средната скорост на прехвърляне на данни от външна памет към RAM.

Буфериране само за OP в I/O подсистематасе оказва недостатъчна - разликата между скоростта на обмен с OP, където процесите поставят данни за обработка, и скоростта на външното устройство често става твърде значителна и количеството OP просто може да не е достатъчно.

За да се изглади такова силно несъответствие в производителността на основните подсистеми, се използва буфериране и / или кеширане на данни.

Често като буфер се използва дисков файл, наричан също spool файл.

Пример. Организация на извеждането на данни към принтера.

Друго решение на този проблем е използването на голяма буферна памет в контролери на външни устройства. Този подход е особено полезен в случаите, когато поставянето на данни на диск забавя прехвърлянето твърде много (или когато данните се записват на самия диск).

Пример. Буферна памет в контролери за графичен дисплей.

Кеширането е изключително полезно, когато програма многократно чете едни и същи данни от диска. След като бъдат поставени в кеша веднъж, не са необходими повече дискови достъпи и скоростта на програмата ще се увеличи значително.

Споделяне на устройства и данни между процеси

Входно-изходните устройства могат да бъдат предоставени на процеси както при изключителна, така и при споделена (споделена) употреба. В този случай ОС трябва да осигури контрол на достъпа по същия начин, както когато процесите осъществяват достъп до други ресурси на изчислителната система - чрез проверка на правата на потребителя или групата потребители, от чието име действа процесът, за извършване на една или друга операция на устройството. Например, определена група потребители на сериен порт имат право да поемат собственост върху серийния порт, докато други потребители нямат право да го правят.

операционна системаможе да контролира достъпа не само до устройството като цяло, но и до отделни части от данните, съхранявани или показвани от това устройство. Дискът е типичен пример за устройство, за което е важно да се контролира достъпът не до устройството като цяло, а до отделни директории и файлове.

Разнообразието отВходно/изходни устройства прави функцията на ОС за създаване на логически интерфейс между периферни устройства и приложения особено подходяща. Почти всички съвременни операционни системи поддържат файловия модел на периферните устройства като основа за такъв интерфейс, когато всяко устройство изглежда на приложния програмист като последователен набор от байтове, с които може да се работи с помощта на унифицирани системни повиквания (например четене и запис), като се указва името на файла на устройството и отместването от началото на последователността от байтове.

Обменът с всяко външно устройство изглежда като обмен с файл, който има име и е неструктурирана последователност от байтове. Файлът може да бъде или истински файл на диск, или буквено-цифров терминал, принтер или мрежов адаптер.

Пример.

PRN, LPT1 - за порта на принтера, CON - за клавиатурата (символични имена, а за ОС - това са файлове).

Привлекателността на модела файл-устройство се крие в неговата простота и еднаквост за устройства от всякакъв тип, но в много случаи той е твърде лош за програмиране на I/O операциите на дадено устройство. Следователно този модел често се използва само като основа, върху коятоI/O подсистемата изгражда по-смислен модел на устройства от определен тип.

Предимството наI/O подсистема на всяка универсална ОС е наличието на разнообразен набор от драйвери занай-популярните периферни устройства.

Една добре планирана и внедрена ОС може да се провали на пазара само защото не включва достатъчен набор от драйвери и администратори и потребителите са принудени да търсят драйвера, от който се нуждаят, или да го разработят (първите версии на OS / 2).

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

Драйверът взаимодейства, от една страна, с модули на ядрото на ОС (модули на I/O подсистема, модули за системни повиквания, модули на подсистема за управление на процеси и памет), а от друга страна, с контролери на външни устройства. Следователно има два типа интерфейси:

  1. Интерфейс драйвер-ядро.
  2. Интерфейс "драйвер-устройство".

За подпомагане на процеса на разработване на драйвери за ОС обикновено се пуска така нареченият DDK (Driver Development Kit), който представлява набор от подходящи инструменти - библиотеки, компилатори и дебъгери.

В допълнение към проблема с разработването на нови драйвери, съществува и проблемът с включването на драйвера в модулите на работещата операционна система, тоест динамичното зареждане и разтоварване на драйвера. Тъй като наборът от периферни устройства, потенциално поддържани от дадена ОС, винаги е значително по-широк от набора от устройства, които ОС трябва да управлява, когато е инсталирана на определена машина, ценно свойство на ОС е способността динамично да зарежда необходимия драйвер в операционната система и да го разтоварва, след като необходимостта от поддръжка на устройството е преминала, което може значително да спести област на системната памет.

Поддръжка на множество файлови системи

Потребителските и системните файлове се съхраняват на дискове. Тези данни са организирани във файлови системи. Свойствата на файловата система до голяма степен определят свойствата на самата ОС: устойчивост на грешки, скорост, максимално количество съхранявани данни.

Файловата система е подсистема на ОС, която определя как данните са организирани на диск.

Файловата система е отговорна за извършването на следното:

  1. Създаване, унищожаване, организиране, четене, писане, модифициране и движение на файлова информация.
  2. За контролиране на достъпа до файлове и за управление на ресурсите, които файловете използват.

Популярността на файловата система често води до нейната "миграция" от "родната" операционна система към други операционни системи.

Файловата система FAT се появи първоначално в MS-DOS, след това беше внедрена в OS / 2, в семейството на MS Windows и в много реализации на UNIX.

С оглед на това, поддръжката на няколко популярни файлови системи заI/O подсистемата е също толкова важна, колкото поддръжката на широк набор от периферни устройства. Също така е важно, че архитектурата наI/O подсистемата улеснява включването на нови типове файлови системи в нея, без необходимост от пренаписване на кода. Обикновено операционната система има специален слой софтуер, който отговаря за решаването на този проблем.

VFS (виртуална файлова система) слой във версии на UNIX, базирани на код на System V Release 4.

Поддръжка за синхронни и асинхронни I/O операции

Входно-изходна операция може да бъде извършена на програмния модул, който е поискал операцията, синхронно или асинхронно.

Синхронен режим означава, че софтуерният модул преустановява работата си, докато I/O операцията приключи.

Асинхронно означава товапрограмният модул продължава да се изпълнява в многопрограмен режим едновременно с I/O операцията.

Най-простият вариант на асинхронен изход е така нареченият буфериран изход към външно устройство, при който данните от приложението не се прехвърлят директно към I / O устройството, а към специален системен буфер. В този случай, логично, изходната операция за приложението се счита за незабавно завършена и задачата не трябва да чака края на самия процес на прехвърляне на данни към устройството. Процесът на действително извеждане на данни от системния буфер се управлява от I/O супервайзора.