орнығуы салдарынан туындайтын қателіктер. Тең төменгідеңгей қателікпен
күресе алмайды, ол қателік жөніндегі ақпаратты жоғары деңгейге
жөнелдіреді.
Тағы да бір негізгі мәселе – блоктаушы (синхронных) және
блоктамаушы (асинхронных) жөнелдірулер. Физикалық енгізу-шығару
шараларының көпшілігі асинхроннды жолмен орындалады, яғни процессор
жөнелдіруді бастап, үзілістің басталуына дейін басқа жұмысқа ауысады. Егер
енгізу-шығару
шаралары
блоктаушы
боса,
онда
тұтынушылық
бағдарламаларды жазу барынша жеңіл болады, яғни READ командасынан
кейін бағдарлама автоматты түрде деректер бағдарлама буферіне түскенше
кідірісжасайды. ОЖ енгізу-шығару шараларын асинхронды орындап,
тұтынушылық бағдарламалар үшін оларды синхронды тұрғыда танытады.
Соңғы туындаған мәселе кейбір құрылғылар – бөлісілген, ал кейбіреулері
ерекшеленген болуына байланысты келеді. Дисктер – бірнеше тұтынушының
бір мезетте дискіге қол жеткізу еш қиындық туындатпау себебінен бөлісілген
құрылғы болып табылады. Принтерлер – Түрлі тұтынушыларымен баспаға
жөнелдірілетін жолдарды араластыруға боламайтындықтан ерекшеленген
құрылғылар деп саналады. Ерекшеленген құрылғылардың болуы
операционды жүйеге қарасты бірқатар ахуалдарды туынтады.
Қойылған ахуалдарды шешу мақсатында енгізу-шығару бағдарламалық
қамтамасыздандырылуын 4 қабатқа бөлуіміз қажет:
• Үзілістерді өңдеу
• Құрылғы драйверлері
• Операционды жүйенің құрылғыдан тәуелсіз қабаты
• бағдарламалық қамтамасыздандырылудың тұтынушылық қабаты
Үзілістерді өңдеу
Үзілістер операционды жүйенің терең қабаттарында орнығуы абзал,
себебі ОЖ онымен байланысуының салдарыжағымсыз болры сөзсіз. Тиімді
тәсіл – енгізу-шығару шараларына ниеттенген үрдіске шараның тамамдалуы
мен үзілістің төнуіне дейін өзін-өзі блокқа түсіруге рұқсат ету. Үзілістің
төнуі барысында үзілісті өңдеу шаралары енгізу-шығару әрекетіне ниеттенге
үрдісті блоктан шығарады. Үзіліс нәтижесі ертеректе тоқтатылған үрдіс
ендігіде орындалуын жалғастыруда астарлайды.
Құрылғы драйверлері
Құрылғыға тәуелді бүтін код құрылғының драйверіне жазылады. Әрбір
драйвер бір типке не бір классқа жатқызылатын құрылғыларды басқарады.
Операционды жүйеде қандай да бір құрығының нақты қасиеттері
жөніндегі ақпаратты тек құрылғы драйвері ғанабіледі. Мысалға, тек диск
драйвері ғана дискінің қалыпты қызметін қамтамасыз ететін жолдар,
секторлан, цилиндрлермен қатынасады.
Құрылғыдрайвері
бағдарламалық
қабат
құрылғыларынын
сұраныстарды қабылдап, оны қалайша орындау қажеттілігін қарастырады.
Қарапайым сауалдардың бірі - n деректер блогын оқу. Егер драйвер сұраныс
түскен сәтте бос болса, онда ол оны дер кезінде орындауға кіріседі. Ал егер,
өзге сұранысқа қызмет көрсету салдарынан бос болмаса онда келіп түскен
44
сұраныс реттілік қатарына түсіп, өзінің орындалу кезегін тосады.
Енгізу-шығару сұранысын орындаудағы алғашқы қадам, мысалғадиск
үшін, оның абстракты түрден нақтысына түрленуінен басталады. Нақты
драйвер үшін аталған ұғым блок нөмірлерін цилиндр, секторларға
түрлендірілуі мен мотор қызметін орындауда ма, бас қажетті цилиндрдің
үстінде орныққанын білдіреді. Қысқаша айтқанда ол контроллердің қандай
шараларын және қандай реттілікте орындау қажеттілігін шешуі тиіс.
Контроллерге команданы жөнелдіруден кейін драйвер өзін шараның
соңына шекті блоктау қажеттілігін анықтауы қажет. Егер де іс-шара
деректердің кейбір блогын баспаға шығару іспеттес жағдайлардай ұзақ
уақытты алса, онда драйвер блокқа түсіп, үзіліс өңдеушісі оны аталған
жағдайдан шығаруда шарасыз қалады. Егер енгізу-шығару командасы
жылдам орындалса (мысалға экранды ауыстыру), ондай жағдайда драйвер еш
блоктаусыз оның тамамдалуын күтеді.
Операционды жүйенің құрылғыдан тәуелсіз қабаты
Енгізу-шығарудың
бағдарламалық
қамтамасыздандырылуының
ауқымды бөлігі құрылғылардан тәуелсіз келеді. Драйверлер мен
құрылғылардан тәуелсіз бағдарламалар арасындағы нақты шекара жүйемен
анықталады. Себебі, тәуелсіз жолмен орындалуы мүмкін бірқатар қызметтер
нәтижелілікті жоғарылаты не басқа да мақсаттарда драйверлер түрінде
орындалған.
Операционды жүйенің құрылғыдан тәуелсіз қабатының қалыпты
қызметтері:
• құрылғы драйверлеріне жалпы интерфейсті қамтамасыз ету
• құрылғылардың аталуы
• құрылғыларды қорғау
• блоктың тәуелсіз көлемін қамтамасыз ету
• буферлеу
• жадыны блок-бағдарлы құрылғыларға бөлістіру
• ерекшеленген құрылғыларды босату мен бөлістіру
• қателіктер жөніндегі хабарланулар
Аталған тзімнің кей түрлеріне тоқталып өтелік. Бағдарламалық
қамтамасыздандырылудың жоғары қабаттарына түрлі көлемдегі блоктармен
жұмыс істеу қолайсыз келеді, сондықтан да аталған қабат блоктың бірыңғай
көлемін қамтамасыз етеді, мысалға түрлі блоктарды бірыңғай логикалық
блокқа біріктіру тәсілі қолданылуы мүмкін. Осыған байланысты жоғары
қабаттар физикалық блоктың көлемінетәуелсіз логикалық блоктың бірыңғай
көлемін қолданылатын абстракты құрылғылармен жұмыс істейді.
Файлды құрастыру немесе оныжаңа деректермен нығайту барысында
қажетті жаңа блоктарды беру қажет. Бұл ретте ОЖ дискінің бос блоктар
тізімін енгізеді. Дискіде бос орынның болу-болмауы жөніндегі ақпаратқа
негізделе отырып құрылғыларға тәуелсіз және драйверлердің жоғары
қабатында орныққан бағдарламалық қабатпен орындалатын бос блокты
іздестіру алгоритмі жасалуы тиіс.
45