Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операциялық жүйелер.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
835 Кб
Скачать
☆

8 Тақырып. Енгізу-шығаруды басқару

Енгізу-шығару операциялық жүйенің проектілеу барысындағы ең күрделі мәселелердің бірі. Күнделіктік АЖ қолдайтын енгізу-шығару құрылғыларының саны көп болғандықтан пайда болады. Енгізу-шығару жүйесі барлық құрылғыларының қажетілігін тексеру керек. Екінші жағынан қатар орындалатын есептер жиыны үшін енгізу-шығару құрылғыларына қатынасуды қамтамасық ету керек, сонымен қатар құрылғылар бір-біріне бөгет жасамауы керек. Сондықтан келесі принцип негізгі деп саналады. Енгізу-шығаруды басқаруды кезкелген операциясы привелегияланған деп саналады және тек АЖ-нің кодымен орындалады. Осы принципті жүзеге асыру үшін процессорлардың көбінде қолданушы режимі және супервизор режимі енгізіледі, супервизор режимінде енгізу-шығару командасын орындауға рұқсат береді, ал қолданушы режимінде тиым салынады. Қолданушы режиінде енгізу-шығару командасын қолдану ішкі үзуді шақырады және үзулер механизмі арқылы басқару АЖ-ң кодына беріледі. Қолданушының жеке программа сыртқы құрылғыларға тікелей қатынасуға тиым салатын негізгі 3 себепті айтуға болады:

  1. Енгізу-шығару құрылғыларына қатынасқанда пайда болатын конфликтерді шешу қажеттілігі.

  2. Ресурстардың қолданудың жоғарлату.

  3. Енгізу-шығару программа қателер барлық есептеу процесстерін тоқтатуы мүмкін.

Енгізу-шығаруды басқару АЖ-ң енгізу-шығару супервизор компонентімен жүзеге асырады. Супервизорға жүктелетін негізгі есептер.

  1. Супервизор қолданбалы есептерден және АЖ-ң программалық жүйенің программалық модулінен енгізу-шығаруға сұраныстар алады. Сұраныс тексеріледі егер қате болмаса орындалады, ал қате бар болса сәйкес хабарлама беріледі.

  2. Есептерге енгізу-шығару құрылғыларын қолданудың кезегін анықтайды.

  3. Супервизор енгізу-шығару операцияларын орындау үшін басқаруды сәйкес драйверлерге береді.

  4. Енгізу-шығару құрылғыларынан үзу алған соң супервизор оларды анықтайды және үзулерді өңдеуді сәйкес программа басқаруды береді.

  5. Қателер туралы хабарламаларды беруді қамтамассыз етеді.

  6. Енгізу-шығару операциясы сұраған процесске хабар жібереді осындай есептерді супервизор программасы жүзеге асырады.

Енгізу-шығарудың негізгі жүйелік кестелері

Әр бір АЖ-де өзінің енгізу-шығару кестелері бар әр кестенің саны және кестенің қызметі әр түрлі АЖ-е әртүрлі болады. Ең кешінде 3 жүйелік кесте бар болады.

1 кесте есептеу жүйесіне қосылған барлық енгізу-шығару құрылғылары туралы ақпаратты сақтайды. Бұл кестенің әртүрлі элементі құрылғы туралы келесі ақпаратты сақтайды.

  1. Құрылғының типі, оның моделі, құрылғының атауы және сипаттамасы.

  2. Құрылғы қалай қосылған туралы ақпарат (интерфейс) разъем, порт, үзулер суранышы жалпы осындай ақпаратты сақтайды.

  3. Канал нөмері және адресі.

  4. Осы құрылғыны басқаратын драйвер туралы ақпарат драйверді іске қосу секцияның адресі және жұмысты жалғастыру секциясының адресі.

  5. Осы құрылғымен берілгендер мен алшолуда буфер қолданатындығы немесе қолданбайтындығы туралы ақпарат.

  6. Құрылғының қалып күйі.

2 кесте енгізу-шығару құрылғысын вертуализациялау принцепін жүзеге асыру үшін қолданылады. Бұл кестенің қызметі нақты құрылғылар мен және вертуалді (логикалық) құрылғылармен байланыс құру.

3 кесте енгізу-шығару құрылғылары және орталық бөлім арасындағы кері байланысты ұйымдастыру үшін қажет. Бұл кесте - үзулер кестесі. Әр бір үзуге сұраныс сигналы үшін құрылғыны сәйкес қояды. Қазіргі АЖ-де енгізу-шығару процесін басқару үшін қолданылатын кестелер саны өте көп.

Файлдарды және құрылғыларды басқару

Операциялық жүйенің маңызды есептерінің бірі болып қосымшалар және компютердің перифериалық құрылғылар арасындағы берілгендер алмасуын қамтамасыз ету болады. Операциялық жүйеде перифериалық құрылғымен берілгендер алмасуы мен енгізу  шығару ішкі жүйесі орындайды. Енгізу – шығару ішкі жүйесінің компоненттері — драйверлер және файылдық жүйе. Құрылғының драйвері – бұл құрылғылармен жұмысты инициализациялай алатын, қолданушыға қажет енгізу - шығару операцияларын орындайтын құрылғы мен жұмысты ұйымдастыратын, құрылғылардан үзулерді өңдейтін өз статистикалық берілгендері бар программалық модуль.

Енгізу - шығару ішкі жүйесі келесі маңызды есептерді шешеді:

  1. Процессормен енгізу - шығару құрылғысының параллелді жұмысын ұйымдастыру.

  2. Берілгендермен алмасу және кэштеу жылдамдығын келістіру.

  3. Процесстер арасындағы берілгендерді және құрылғыларды бөлу.

  4. Құрылғылар және жүйенің басқа бөліктері арасында ыңғайлы логикалық интерфейсті қамтамассыз ету.

  5. Кең ауқымды драйверлер спекторын қолдау.

  6. Драйверлерді динамикалық жүктеу және жадты босату.

  7. Бір неше файылдық жүйені қолдау.

  8. Синхронды және асинхронды операциялық жүйенің құрылғылары.

Процессор мен енгізу - шығару құрылғысының параллелді жұмысын ұйымдастыру

Әрбір енгізу - шығару құрылғылар жүйесі - диск, принтер, терминал және т.б – арнайы басқару блогымен қамтамасыз етілген, ол бақылаушы. Бақылаушы үнемі, құрылғыға драйверден шыққан мәліметпен басқару командаларын қабылдап отырады. Бақылаушының көмегімен құрылғы біраз уақыт аралығында жұмысын автономды түрде орталық процессорды қолданбай жүргізеді. Бұл уақыт көптеген факторларға тәуелді - шығаратың мәлімет көлеміне, бақылаушының интелектуалды мүмкіндігіне, құрылғының тездігінне және т.б. Кез - келген енгізу - шығару құрылғысының жылдамдығы процессор жұмысының жылдамдығынан кем. Сондықтан уақыт көптеу кетеді.

Бақылаушыда болып жатқан процестер операциялық жүйеге тәуелді емес, олар командаларды жіберу барысында орындалады. Енгізу - шығару ішкі жүйесі жіберу уақытын және драйверлердің алмасуын, әрбір бақылаушының жұмысына драйвердің уақыт реакциясын қадағалау тиіс. Сонымен қатар енгізу - шығару есептерін процессірге жүктеуін үнемдеу үшін қолданушының әрекеттеріне көбірек процессорлық уақыт қалдыру керек.

Бұл есепті шешу үшін көп сатылы үзулер схемасын қолданамыз. Тиісті сатысын таңдау үшін әуелі драйверлерді уақыт реакциясына және процессорды қолдану сұранысына қарай бөлеміз. Осы есепті жүзеге асыру үшін көбінесе операциялық жүйенің жалпы үзулер жүйесінің диспетчерін қолданамыз.

Берілгендермен алмасу және кэштеу жылдамдығын келістіру

Мәліметтерді алмастыру уақытында жылдамдықтарды келістіру сұрағы пайда болады. Мысалы: егер бір қолданушылық процесс мәліметтерді қарастырып және оны оперативті жады арқылы келесі прорцесске жіберсе, онда олардың генерациялау жылдамдығы мен оқу жылдамдығы сәйкес келмейді. Оперативті жадыда мәліметтерді буферлеу және буферге процессорлардың қатынасын синхронизациялау арқылы жылдамдықтарды келістіруге болады.

Енгізу - шығару ішкі жүйесінде жылдамдықтарды келістіру үшін оперативті жадыдағы мәліметтерді буферлеу қолданылады. Енгізу - шығару жылдамдығына көп көңіл бөлінетін операциялық жүйелерде оперативтік жадының көп бөлігі мәліметтерді буферлеуге бөлінеді. Бірақ, буферлеу тек оперативті жадыда енгізу - шығару ішкі жүйесінде жеткіліксіз - жылдамдықтар айырмашылығы және сыртқы құрылғының жұмыс жылдамығы көзге көрінерлік, сондықтан уақытша буфер ретінде оперативті жадыны қолданғанда көлемі жетпей қалуы мүмкүн. Бұндай жағдайда буфер орнына файылдық диск қолданылады, олар спул - файлы (spool- шпулька, буфер тек жіптер үшін) деп аталады. Қарапайым мысал ретінде мәліметтерді принтарға шығаруын келтіруге болады.

Сонымен қатар сыртқы құрылғының бақылаушыдағы үлкен буферлік жадысын қолдануға болады. Бұл егер мәліметті дискіге жазу көп уақыт алатың болса өте қолайлы.

Мәліметтерді буферлеу процессор жұмысы мен сыртқы құрылғылардың жылдамдығың келістіріп қоймай, кэштеу арқылы енгізу - шығару операцияларын азайтады. Операциялық жүйедегі енгізу - шығару ішкі жүйесінің негізгі атрибуттарының бірі - дисктік кэш, сақталған мәліметтерге қатынасу уақытын азайтады.

Процесстер арасындағы берілгендерді және құрылғыларды бөлу

Енгізу - шығару құрылғысы процесстерге монопольді және бірдей қолдануға болатындай етіп көріне алады. Бірақ операциялық жүйе қатынасуды бақылайтың түрмен қамтамассыз ету керек. Мысалы, белгілі бір қолданушылар тобына монопольті түрге рұқсат етіл се, келесі топқа тиым салынған.

Операциялық жүйе құрылғыға қатынасты қадағалай отырып, осы құрылғыда сақталған немесе көрсетілген жекеленген мәліметтер бөліктерін қадағалайды. Мәселен файылдық жүйеде әр каталогпен файл үшін индивидуальді қатынасу мүмкіндігін жасауға болады. Ал құрылғының бөліктеріне немесе мәліметтердін бөліктеріне ортақ қолданушылық қатынас құру үшін құрылғыны толығымен ортақ қолданатың режимді қосу керек.

Мысалыға, кезекті порттар мен алфавитті- цифрлық тирминалы көбінесе монопольді түрде қолданады, ал диск- бірге қолданушылық қатынаста.

Құрылғының процесстер арасында бөліну уақытында екі процессорлар бір - бірінен мәліметтерін бөліктерге бөлуінде шек қою қажеттілігі пайда болуы мүмкін. Көбінесе бұндай жағдай кезекті құрылғыларды қолданғанда пайда болады, ондағы мәліметтер адрестелмеген. Мысал ретінде принтерді келтіруге болады. Бұндай құрылғыларда есептер тізім ретінде басылуға дайындалынады, бірақ әрбір есеп өз ретінде бөлуге болмайтың мәліметтер бөлігі (порция) болады. Осы есептер тізімін сақтау үшін спул - файлы қолданылады. Ол принтер жұмысының жылдамдығымен оперативті жадының жылдамдығың келістіріп және мәліметтерді логикалық бөліктерге бөлуге мүмкүндік береді. Спул - файл тікелей қатынасудың бөлшектеу құрылғысында орналасқандықтан процесстер бір уақытта принтермен шығара отырып спул - файылдағы өз бөлімге мәліметтерді орналастырады.

Құрылғылар мен жүйенің басқа бөліктері арасында ыңғайлы логикалық интерфейсті қамтамасыз ету

Түрлі енгізу - шығару құрылғылары операциялық жүйедегі перифериялық құрылғылар мен қосымшалар арасындағы экрандаушы логикалық интерфейсті құруда өте актуалды. Казіргі заман операциялық жүйесінде көбінесе осындай интерфейс түрінде перифериялық құрылғының файылдық модульін қолдайды. Бұндай интерфейсті қолдау үшін енгізу - шығарудың ішкі жүйесі біраз жұмыс атқару керек оның ішінде мәліметтерді алмастыру операциясын ұйымдастыруды есепке ала отыру, мысалы, қатты дискпен графикалық терминал.

Құрылғының файлдық модулі қарапайым болғандықтан оны базис ретінде қабылдайды. Оның үстінен енгізу - шығару ішкі жүйесі мағыналырақ белгілі бір типі бар құрылғының модулін құрады. Енгізу - шығару ішкі жүйесі көбінесе графикалық мәліметтерді дисплейге немесе принтерге шығаратың спецификалық интерфейс, желілік алмасу операциясын программалау және т.б.

Кең ауқымды драйверлер спекторын қолдау

Операциялық жүйедегі енгізу - шығару ішкі жүйесінің ерекшелігі болып перифериялық құрылғылардың драйверлерінің жиындығының болуы. Операциялық жүйенің күштілігіне қарамайды егер, онда драйверлер жиындығы болмаса.

Операциялық жүйедегі драйверлер жиындығының жетіспеушілігін көрсетпеу үшін- драйверлармен операциялық жүйенің басқа компаненттері үшін ашық және қолайлы интерфейс болуы қажет. Драйверлер интерфейсінің ашықтығы операциялық жүйенің дамуының бір шарты.

Драйвер операциялық жүйенің ядро модулімен және сыртқы құрылғының бақылаушысымен қарым қатынаста. Сондықтан интерфейстін екі түрі бар: «драйвер- ядро» (driver kernel interface, dki) интерфейсі және «драйвер- құрылғы» интерфейсі (driver device interface, ddi). Windows NT операциялық жүйесінде желілі адаптерлер драйверлері үшін стандарты NDIS (NETWORK DRIVER INTERFACE SPECIFICATION ) интерфейсі бар. Көбінесе енгізу - шығару ішкі жүйесінде жүйелік функцияны қолдайды, оны драйвер типтік жұмыс атқару үшін шақыра алады.

Операциялық жүйедегі драйверлерді жетілдіру процессіне көмек ретінде DDK(Driver Development Kit) пакетін шығарады. Онда кең ауқымды қолданатың құралдар жиналған - библиотек, компилятор, реттеуші.

Драйверлерді динамикалық жүктеу және жадты босату

Операциялық жүйенің маңызды қасиеті болып қажетті драйверді оперативті жадыға динамикалық жүктеу және жұмыс орындалып біткеннен кейің жадты босату, яғни жадыдағы жүйелік аумақты үнемдеу.

Кәзіргі операциялық жүйелерде драйверлердің динамикалық жүктелуін қолдау көп дерде міндетті.

Бірнеше файлдық жүйені қолдау

Диск перифериялық құрылғылардың бір түрі, өйткені қолданушының мәліметтерінің көбісі және жүйелік мәліметтердін өзі сонда сақталған. Дискідегі мәліметтер файылдық жүйе құрайды, файылдық жүйенің қасиеттері кейде операциялық жүйенің қасиеттеріне тән, яғни оның жылдамдығы сақталатың мәліметтердің максемальді көлемі. Файылдық жүйенің жиі қолдануы оның өз операциялық жүйесінен басқа операциялық жүйеге миграциялануына әкеліп соқтырады. Мысалы: FAT файылдық жүйесі ең алғашқыда MS- DOS – та пайда болған, кейін OS/2, MS Windows, UNIX-те пайда болды. Енгізу - шығару ішкі жүйесі үшін файылдық жүйені қолдау сол сияқты перифериялық құрылғылардың кең ауқымды спекторын қолдау өте маңызды. Тағы бір маңызды шарттардың бірі енгізу - шығару ішкі жүйесінің архитектурасы өзіне жаңа файылдар жүйесінің типтерін тез қосу мүмкіндігі, кодты көшіру қажеттілігісіз. Әдетте сол үшін операциялық жүйе арнайы программалар қабатымен қамтамассыз етіледі, мысалы: VFS(Virtual File System) қабаты, UNIX- те System V Release 4 коды.

Синхронды және асинхронды операциялық жүйенің құрылғылары

Енгізу - шығару жүйесі операцияны шақырған программалық модульге қатысты орындалуы мүмкін, ол синхронды және асинхронды режимде. Синхронды режимде программалық модуль өз жұмысын енгізу - шығару операциясы толығымен біткенше тоқтата тұрады, ал асинхронды режимде программалық модуль өз жұмысын мультипрограммалық режимде енгізу - шығару операциясымен бірге орындайды.

Енгізу - шығару ішкі жүйесі синхронды және асинхронды енгізу - шығару операциясымен, сұраныстың қажеттілігіне қарай қамтамасыз ету керек. Енгізу - шығару жүйесінде көбінесе синхронды процедура қолданады, себебі ол көп уақыт мерзімін алады. Енгізу  шығару операцияларындағы ішкі шақыруларда асинхронды процедуралар қолданылады.

Енгізу шығару менеджері

Енгізу  шығару ішкі жүйесінде сыртқы құрылғылардың спецификасын қайтарушы және вертикальді ішкі жүйені құрайтың модульдардан басқа уневерсалды модульдер бар. Бұл модульдер енгізу  шығару ішкі жүйесіндегі қалған компоненттер жұмысын біріктіреді және пайдаланушылық процесстер мен операциялық жүйенің басқа ішкі жүйелерінің жұмысын келістіреді. Құрылғыларды басқару функциясы секілді ұйымдастырушы функциялар деңгейлерге бөлініп қабаттар құрайды. Осы қабаттарды кейде енгізу  шығару менеджері деп атайды.

Менеджердің үстіңгі қабаты енгізу  шығарудың жүйелік шақырысы, олар мәліметтерді қабылдап қажетті құрылғының модулімен драйверіне жолдайды және енгізу  шығару операциясының қорытындысын процестерге қайтарады. Осы жолмен бұл қабат енгізу  шығарудағы қолданушылық интерфейсті байланыстыра отырып біздерге сыртқы құрылғыларды басқаруға және ондағы мәліметтермен қолдлануға мүмкіндік береді.

Астыңғы қабат құрылғының бақылаушысымен тікелей жұмыс атқарады. Бұл қабат драйверлерден контроллерлер регистрлермен берілгендер алмасуға сұраныстар қабылдайды. Бұл сұраныстарда енгізу – шығару шинасына тәуелсіз адрестеу және форматтау қолданылады. Сонан соң бұл сұраныстарды аппараттың платформасына байланысты формаға өзгертеді.

Енгізу  шығару менеджерінің негізгі функциясының бірі ішкі жүйенің қалған құрамдастарына сай орта құру, бұл орта олардың қарым  қатынастарын жеңілдетеді. Бұл есепті шешу үшін енгіз – шығару модульдері арасындағы стандартты ішкі интерфейс құру керек. Ол ішкі жүйенің сыртқы интерфейстерін қолдабалы процесстермен толықтырады. Осындай интерфейстің болуы АЖ-нің құрамына жаңа драйверлер мен файылдық жүйелерді қосуда жеңілдік әкеледі.

Тағы бір функциясы енгізу  шығару модульдарымен АЖ -нің ішкі жүйесіндегі басқа модульдардың байланысын ұйымдастыру, мысалы: поцессорды басқару ішкі жүйесі, вертуальді жады және т.б.

Бұған мысал ретінде WINDOWS NT- ғы АЖ- нің енгізу – шығару менеджері және STREAMS ортасы, ол көптеген UNIX – тің АЖ- де кездеседі.

Стандартты ішкі модульаралық интерфейстің болуы енгізу  шығару ішкі жүйесіндегі тұрақтылықты жоғарлатады және кеңейтілуін жақсартады, бірақ жұмыс уақытын тежейді.

Негізгі әдебиет: [1-7]

Қосымша әдебиет: [24-38]