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