Основни понятия за I / O организация в операционни системи

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

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

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

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

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