3-rasm. Kiritish-chiqarish paytida protsessor uzilishining vaqtinchalik diagrramasi.
3-rasmda protsessor va kiritish-chiqarish qurilmalari holatlarini o'zgartirish momenti ko'rsatilgan: kiritish-chiqarish so'rovi bo’yicha uzilish, ushbu uzilishni qayta ishlash va xotiradan ma'lumotlarni qurilma buferiga uzatish, kontroller va drayverni chaqirish, almashinuv va kontroller uzlishini tugatish, hisoblashni davom ettirish.
Kiritish-chiqarish rejimining ikkita ko’rinishi mavjud – sinxron va asinxron. Sinxron kiritish-chiqarish – bu kiritish-chiqarish amali to’liq yakunlanmaguncha, uning bajarilishini ta’minlovchi dasturni kutish holatiga olib keladi. Qurilma darajasida olib qaraganda – I/O buyrug’i protsessorni keyingi uzilishgacha kutish (idle) holatiga o’tkazadi. Bu sinxron rejimda har bir lahzada kiritish-chiqarishga bittadan ko’p bo’lmagan so’rov amalga oshiriladi, bir vaqtda kiritish-chiqarish mavjud emas. Sinxron chiqarish barcha dasturchilarga tanish bo’lgan println(x) ko’rinishdagi operatorlar orqali amalga oshiriladi. Ularni dasturlarda ishlatganda sinxron I/O ning samarasiz versiyasidan foydalanayotganimiz haqida o'ylamaymiz. Ammo, hozirgi kungacha aksariyat dasturchilarning xayolida ketma-ket chiqarish bo'lib, ular o'zlarining dasturlarini sof ketma-ketlik deb o'ylashlari va hech qanday parallellashtirish ehtimoli haqida umuman o'ylamaydilar. Dasturni testlash vaqtida agar chiquvchi ma’lumot katta bo’lmasa, bu usul juda qulay hisoblanadi.
Asinxron kiritish-chiqarish – kiritish chiqarishning asosiy dasturiy bajarilishi bilan parallel bajariladi. Asinxron kiritish-chiqarish boshlanishi bilan boshqaruv kiritish-chiqarishni kutib turmasdan foydalanuvchi dasturiga qaytariladi. Shunday qilib go’yoki, asinxron kiritish-chiqarish ikkiga bo’linadi: kiritish-chiqarishni boshlash va kiritish chiqarishni tugallash. Ikkinchisi, agar kiritish-chiqarishning natijasi keyingi hisoblashlar uchun zarur bo’lsa, dastur ma’lumot alshinuvining tugallanishini kutadi. Bunday yondoshuv almashinuvchi tatbiq qilishda dasturchilar uchun tushinish qiyinroq bo’ladi va xatolarga yo’l qo’yilishi mumkin (masalan, faqat kiritish-chiqarishni boshlash operatsiyasi qo’llanilib, uning yakunlanishini kutishni chaqrish operatsiyasi unitib qoldirilishi mumkin).
Qurilmalar holati jadvali
Tizim darajasida almashinuv jarayonida quyidagilar sodir bo'ladi. Tizimli chaqiruv (system call) bajariladi– tizimli qismdasturni chaqirish yo’li bilan OT ga so’rov yuboriladi, bunday holatda foydalanuvchi kiritish-chiqarishni kutishi zarur bo’ladi. Operatsion tizim qurilmalarning holat jadvalini saqlaydi, unda har bir qurilmaga uning turi, manzili va holatini o'z ichiga olgan element mos qo’yiladi. Operatsion tizim qurilmaning holatini aniqlash va jadval elementini yanglisha maqsadida qurilmalar jadvalini indekslaydi.
Sinxron (a) va asinxron (b) kiritish-chiqarish arxitekturasi 4-rasmda ko’satilgan.