77
Енгізу-шығару ҥрдісін басқару
1-әрекет. Орындалып жатқан программадан енгізу-шығару операциясына
сұраныс супервизорға түседі.
1.1-әрекет. Супервизор жүйелік шақыруды қабылданған спецификацияларға
сәйкестігін тексереді және қате болған жағдайда есепке сәйкес хабарлама
жібереді.
2-әрекет. Егер сұраныс дұрыс болса онда есеп енгізу-шығару супервизорына
бағытталады.
2.2-әрекет. Супервизор виртуаль аты арқылы DRT кестесінен құрылғы
кестесінен сәйкес UCB элементін табады. Егер құрылғы бос болмаса, онда
есеп сипаттаушы құрылғыны күтіп тұрған есептер тізіміне орналастырады.
3-әрекет. Егер құрылғы бос болса, онда енгізу-шығару супервизоры UCB–дан
құрылғының типін анықтайды және қажет болса санашықты іске қосады, ол
құрылғыны түсінетін және орындайтын басқару деректерін және кодтарын
ашуға мүмкіндік береді.
4-әрекет. Енгізу-шығаруды басқаратын
программа
дайын болған кезде,
енгізу-шығару супервизоры басқаруды сәйкес драйверіне береді(іске қосу
секциясы).
5-әрекет. Драйвер басқару операциясын инициялизациялайды, тайм-аут
санауышын нӛлдейді және санашыққа орындалуға дайын есепті қою үшін
супервизорға (есеп диспетчеріне) басқаруды қайтарады.
6-әрекет. Жүйе жұмысты кезегімен орындайды, бірақ енгізу-шығару
құрылғысы жіберілген команданы орындап болған соң, үзуге сұраныс
сигналын орнатады және үзу кестесі арқылы басқару жалғастыру секциясына
беріледі. Жаңа команданы алған соң құрылғы оны орындайды және
санашықпен басқаруды қайтадан есеп диспетчеріне қайтарады, ал санашық
ӛзінің жұмысын жалғастырады. Сонымен есептердің параллель ӛңделуі
болады, соның кӛрісінде санашық енгізу-шығару операциларының басқаруын
жүзеге асырады.
Синхронды
және
асинхронды
енгізу-шығару.
Енгізу-шығару
операциясына сұраныс берген есеп берілегн операциялардың аяқталғанын
күту күйіне супервизормен ауыстырылады. Аяқталу секциясынан
операцияның аяқталғаны жайлы супервизор хабарлама алған соң ол есепті
орындалуға дайын күйіне ауыстырады және ол ӛзінің жұмысын
жалғастырады. Бұл жағдай синхронды енгізу-шығаруға сәйкес синхронды
енгізу-шығару кӛп ОЖ стандартты болып табылады. Қолданбалардың
орындалу жылдамдығын ұлғайту үшін қажет болғанда асинхронды енгізу-
шығару қолданылады. Асинхронды енгізу-шығарудың қарапайым варианты,
ол сыртқы құрылғылардың деректерін буферлі шығару. Бұл кезде
қолданбадағы деректер енгізу-шығару құрылғыларына жіберілмейді, ал
арнайы жүйелік буферге жіберіледі. Негізгі логикалы қолданбаға шығару
операциясы бірден орындалған болып саналады, және есеп нақты
78
деректердің құрылғыларға жіберілген үрдісін күтудің қажеті жоқ. Жүйелік
буферден деректерді щығаруды енгізу-шығару супервизоры атқарады.
Енгізу-шығару супервизорының нұсқауы бойынша арнайы жүйелік үрдіс
жүйелік жады аймағында буферге орын бӛледі. Асинхронды деректерді
енгізуді де ұйымдастыруға болады. Бірақ ол үшін тек қана жады аймағында
құрылғылардан оқып деректерді уақытша сақтап, бӛлінген буферді
операцияға сұраныс берген есеппен байланыстыру ғана емес және енгізу-
шығару операциясына сұранысты екі бӛлікке бӛлу(екі сұранысқа).
Бірінші сұраныста деректерді оқу операциясына нұсқау беріледі. Бұл
сұраныста қосымша параметр беріледі - ол есеп сұранысқа жауап алатын
және берілген ерекшеленген буферді идентификациялайтын жүйелік
обьекттің аты. Буфердің атын алып есеп ӛзінің жұмысын жалғастырады.
Деректерді асинхронды енгізу кезінде есеп енгізу-шығару супервизоры
арқылы енгізу-шығару операциясының аяқталуын күту күйіне ӛткізілмейді,
ол орындалу немесе орындалуға дайын күйінде қалады. Бірнеше уақыттан
соң программистпен анықталған қажет код арқылы есеп енгізу-шығару
операциясын аяқтауға екінші сұраныста береді. Бұл жағдайда сол құрылғыға
(оның коды басқа) есеп жүйелік объекттің атын кӛрсетеді және деректерді
оқу операциясы ойдағыдай аяқталған жағдайда ол оларды жүйелік буферден
сол заматында алады. Егер деректер сыртқы құрылғыдан жүйелік буферге
аяғына дейін жазылып үлгірмеген жағдайда, енгізу-шығару супервизоры
есепті енгізу-шығару операциясының аяқталуын күту күйіне ауыстырылады.
Асинхронды енгізу-шығару мультипрограммалық ОЖ қолданылады,
әсіресе егер олар тредтер механизмі арқылы қолданылса.
Енгізу-шығару аппаратурасы біріккен аппаратты санашықтар сияқты
қарастыруға болады. Бұл санашықтарда сыртқы үрдістер орындалады.
Мысалы, сыртқы құрылғыға сыртқы үрдіс біріккен операциялар ретінде
кӛрсетіліп олар мысалы бір символдардың басылуы. Сыртқы үрдістер енгізу-
шығару аппаратурасын қолдана отырып олар бір бірімен әрекеттеседі және
орталық санашықта орындалатын
программалық
үрдістермен әрекеттеседі.
Бұл жерде ең маңыздысы ол сыртқы үрдістің жылдамдылығы
ішкі
үрдістердің орындалуынан айырмашылығы бар. Ішкі және сыртқы үрдістер
ӛздерінің жұмысы дұрыс орындалуы үшін олар синхрондалу қажет. Сыртқы
және ішкі үрдістердің жылдамдылықтарының сәйкессіздігін дұрыстау үшін
буферлеу қолданылады. Буферлер арқылы деректер немесе бір үрдістен
адрестелген сыртқы құрылғыға жіберіледі (сыртқы құрылғыларының
деректерін шығару операциясын) немесе сыртқы үрдістен бір программалық
үрдіске (деректерді оқу операциясы).
Негізгі әдебиеттер 2 [129-142], 9[237-248]
Қосымша әдебиеттер 19[184–197], 16 [174-176]
Бақылау сұрақтары