Оқулық «Федералдық білім беруді дамыту институты»



Pdf көрінісі
бет61/158
Дата01.07.2023
өлшемі3.83 Mb.
#475485
түріОқулық
1   ...   57   58   59   60   61   62   63   64   ...   158
операциялық жуйелер

86 
 
Белсенді процесті қайта қосқан кезде мән мәтіннің ауыстырылуы 
орындалады, сонымен бірге ядро ескі процес мән мәтінін сақтайды 
және басқару беріліп жатқан процестің мән мәтінін қайта қалпына 
келтіреді. 
Аяқталғаннан кейін процес «Зомби» күйіне ауыстырылады, яғни 
процес алып жатқан жады босайды, ал процестер кестесінде процесті 
қайтару коды туралы ақпарат қалады. Процесті толық аяқтау үшін 
аталық-процес wait() атқарымын шақыртуы көмегімен жүзеге асады.
ТЕРМИНАЛ. ҚОРЫТЫНДЫНЫ БУФЕРЛЕУ 
Қалыпты жағдайда кіріс/шығыс жүйелік кітапханасы терминал 
құрылғысына жүйелік шақырту орындаған бойда бірден бермейді 
(мысалы, printf()), жадының арнайы аймағына мәтіннің белгілі бір 
мөлшері жиналуына байланысты береді.
Жадының мұндай аймағы қорытынды буфері деген атау алды, ал 
деректерді оларды құрылғыға жіберу алдында жинау процесі буферлеу 
деп аталады. Әр процеске өзінің кіріс/шығыс буфері бөлінеді. Олардың 
деректері құрылғыға операциялық жүйенің ядросынан команда келіп 
түскен кезде немесе буфер толуы бойынша жіберіліп отырады. Аралық 
буферді пайдалану терминалдың физикалық құрылғысына жүгіну 
мөлшерін өте азайтуға мүмкіндік береді және жалпы онымен жұмысты 
жылдамдатады. Жүйелік кітапхананың буферлеуінің үш түрі бар: 
1) Толық буферлеу — терминалдың физикалық құрылғысына 
деректерді жіберу тек буфер толық толғаннан кейін ғана орындалады
2) Жолма жол буферлеу терминалдың физикалық құрылғысына 
деректерді жіберуді мәтіннің бір жолағын шығарғаннан кейін жүргізеді 
(яғни, жолақтың жылжуымен аяқталатын символдардың тізбегі немесе 
ұзындығы терминалдың еніне тең символдар тізбегі);


87
 
3) Буферлеудің болмауы, осы ретте шығару буферінде алдын ала 
жинақталмай деректер терминалдың физикалық құрылғысына бірден 
жіберіледі.
Бірнеше процестен бір мезетте бірнеше мәтіннің терминалға 
шығарылуы алдында, процестер шығарған мәтіндер әр процестің бөлек 
буферінде жинақталады, ал терминалға деректерді жіберу сәті 
буфердің ішіндегісін құрылғыға тастау туралы команданы ОЖ 
жіберген кезде орындалады. Әртүрлі процестер шығарған деректердің 
бірдей емес ұзындығы және қосулы буферлеу кезінде оларға 
процесорлық уақытты бірдей бөлмеу нәтижесінде, параллель 
орындалатын процестердің шығарылуы емін-еркін араласып кетуі 
ғажап емес. Деректердің қалай араласып кететіні процестер буферінен 
терминал құрылғысына деректерді беру уақытына тәуелді. 
Мысалы, 4.2-суретте уақыт сызығында екі процестің кіріс/шығыс 
буферлер күйінің тізбектей өзгерісі көрсетілген, экранға тізбектей 
шығарылған араб сандарымен 1 ден 9 дейін және А бастап Ғ дейін 
латын әріптері. 
Бұл процестерде әр символды шығару printfQ бөлек операторы 
арқылы жүргізіледі. Суретте қою нұсқармен процес белсенді кезіндегі 
уақыт 
көрсетілген 
(процессорлық 
уақытты 
қолданады), 
әр 
тікбұрыштың биіктігі процес ұзақтығының жалпы уақытын көрсетеді. 
Буферлерде деректердің жинақталуы баяу жүретіндіктен және 
printf() атқарымын бөлек шақыртуы арасында белсенді процестің 
ауысуы орындауы мүмкін болғандықтан, деректер буферлерде біркелкі 
жиналмайды.
Буферді тастау командасын келген кезде экранға шығарылатын 
мәтін көлемі буферде қандай көлем жиналғанына байланысты, ал мәтін 




Достарыңызбен бөлісу:
1   ...   57   58   59   60   61   62   63   64   ...   158




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет