Байланысты: 1 Негізгі ымдар мен аны тамалар Операциялы ж йе (ОЖ) (4)
5. Үрдістің идентификаторы мен дескрипторы. Үрдісті диспетчерлеу және уақытүйлесімдіру. Үрдістердің кезегі және приоритет ұғымы. 1 Үрдістің идентификаторы мен дескрипторы. Үрдісті диспетчерлеу және уақыт үйлесімдіру. Үрдістің идентификаторы мен дескрипторы енгізу-шығару құрылғыларының аппаратураларында кездеседі. Енді енгізу-шығару аппаратурасынан енгізу-шығарудың бағдарламалық қамтамасына көшеміз. Бірінші енгізу-шығару бағдарламалық қамтамасының міндетімен танысамыз, содан кейін операциялық жүйе тарапынан енгізу-шығару операцияларының орындалуының әртүрлі тәсілдерін зерттейміз.
Енгізу-шығарудың бағдарламалық қамтамасын құрастырудың кілттік концепциясы құрылғылардан тәуелсіз ретінде белгілі. Бұл концепция нақты құрылғыны алдын ала көрсетпей-ақ кез келген енгізу-шығару құрылғысына қол жеткізуге қабілетті бағдарламаларды жазу мүмкіндігін білдіреді. Сәйкесінше, кіріс файлынан деректер оқитын бағдарлама компакт-дисктегі, қатты дисктегі және дискетадағы файлдармен бірдей табысты жұмыс істеуі қажет. сонымен қатар бағдарламаға ешқандай өзгеріс енгізбестен жұмыс істеуі қажет. Мысалы, sort output сияқты команданы орындау мүмкіндігі болуы тиіс.
Бұл команда кіріс құрылғысы ретінде – иілгіш диск, IDE-диск, SCSI-диск немесе пернетақта көрсетілгеніне қарамастан жұмыс істеуі керек. Шығару құрылғысы ретінде дәл сол сияқты экран, кез келген дисктегі файл немесе принтерді көрсетуге болады. Осы құрылғылардың ерекшеліктеріне байланысты барлық проблемаларды операциялық жүйе шешеді.
Құрылғылардан тәуелсіз идеясы бірыңғай атау беру (принцип единообразного именования) принципімен тығыз байланысты. Құрылғы немесе файл атауы қарапайым мәтіндік қатар немесе бүтін сан болуы керек және физикалық құрылғыдан ешқандай тәуелді болмауы тиіс.
Тағы бір кілттік сұрақ бұл – деректерді алмасу тәсілі: синхронды (блоктайтын) асинхрондыға (үзілулерді басқаратын) қарсы. Енгізу-шығарудың көптеген операциялары физикалық деңгейде асинхронды болып табылады – орталық процессор деректерді алмасуды бастайды және үзілу пайда болғанға дейін ол туралы ұмытады. Енгізу-шығарудың блоктаушы операцияларын қолдана отырып пайдаланушылық бағдарламаларды жазу айтарлықтай оңай, - receive жүйелік шақыруына жүгінгеннен кейін бағдарлама деректер буферде пайда болғанға дейін автоматты түрде тоқтатылады. Шындығында асинхронды болып табылатын енгізу-шығару операциялары пайдаланушы бағдарламаларында блоктаушы ретінде болуымен операциялық жүйе айналысады.
Енгізу-шығару бағдарламалық қамтамасы сөз болғанда буферлеуді айналып өтуге болмайды. Көбіне құрылғылардан келіп түсетін деректер олардың бағытталған орнына бірден сақталмайды. Мысалы, пакет желі арқылы келген болса, операциялық жүйе оның мазмұнын біліп алмайынша оны қайда орналастыратынын білмейді. Сонымен қатар, нақты уақыттың көптеген құрылғылары үшін ең маңыздысы - деректердің келіп түсу мерзімдерінің параметрлері (мысалы, цифрланған дыбысты қою құрылғылары), сондықтан қабылданған деректердің буферден шығарылу жылдамдығы буфердің толу жылдамдығынан тәуелді болмауы үшін деректерді алдын-ала шығыс буферіне орналастырылуы керек. Буферлеу көбіне енгізу-шығару операцияларының өнімділігін төмендетудің негізгі факторы болып табылатын айтарлықтай мөлшердегі деректерді көшіру болып табылады.
Соңғысы – бұл ерекшеленген құрылғылар және бөлінуші құрылғылар ұғымы. Дисктер сияқты кейбір енгізу-шығару құрылғыларымен көптеген пайдаланушылар жұмыс істей алады. Сонымен қатар бірнеше пайдаланушылар бір дисктегі файлдарды бірмезгілде ашқан кезде проблемалар туындамауы керек. Магнитті лентаға жинақтауыштар сияқты басқа құрылғылар бір пайдаланушы осы құрылғымен жұмысын аяқтап болмайынша оған монополиялық иелікке берілуі қажет. Егер екі немесе одан көп пайдаланушылар бірмезгілде блоктарды аралас түрде бір лентаға жазатын болса, бұл жақсы емес. Ерекшеленген құрылғылар ұғымын енгізу (монополиялық түрде пайдаланылатын) өзара блоктаау сияқты кең көлемді проблемаларға алып келеді. Сонда да операциялық жүйе бөлінуші құрылғыларды да, ерекшеленген құрылғыларды да басқаруға міндетті және әртүрлі потенциалды проблемаларды өз бетінше жеңуі тиіс.
Бұл есептер енгізу-шығару бағдарламалық қамтамасын төрт деңгейге бөлу жолымен шешіледі:
1. Үзілулерді өңдеуіштер (төмен деңгей).
2. Құрылғылар драйверлері.
3. Аппаратурадан тәуелсіз операциялық жүйе коды.
4. Пайдаланушылық бағдарламалар (жоғары деңгей).