Kiritish/chiqarish dasturiy ta’minotini ishlab chiqish konsepsiyasi qurilmadan mustaqilligi bilan ma’lum. Bu konsepsiya aniq bir qurilmani ko‘rsatmasdan turib istalgan kiritish/chiqarish qurilmasiga kirishga ruhsat olish yo‘llari yozilgan dastur imkoniyatlarini bildiradi. Kiruvchi fayldagi ma’lumotlarni o‘quvchi dastur disket, qattiq disk yoki kompakt-diskdagi fayllar bilan bir xil ishlay olishi kerak. Aynan nimaga dasturda hech qanday o‘zgarishlarsiz, masalan, quyidagiga o‘xshash buyruqlarni bajarish uchun kerak
sort output
Bu buyruq kiritish qurilmalari sifati - yumshoq disk, IDEdisk, SCSIdisk yoki klaviaturalar bilan ishlay olishi kerak. Chiqarish qurilmasi sifatida xam ekran, diskdagi istalgan fayl yoki printer bilan bir xil ishlay olishi kerak. Asosiy muammo operatsion tizim yechishi kerak bo‘lgan ushbu qurilmalar bilan bog‘lanishlarning farqli ekanligidadir. Fayl nomi yoki qurilma sodda matn qatoridan yoki butun qiymat va fizik qurilmaga bog‘liq bo‘lmagan ko‘rinishga ega bo‘lishi kerak.
Kiritish/chiqarish qurilmasining boshqa bir muhim jihatlari xatolarni qayta ishlashida. Xatolar apparaturaga yaqin ko‘rinishda qayta ishlanishi mumkin. Agar kontroller o‘qish jarayonida xatolikni
aniqlasa, u bu xatoni o‘zi o‘zgartirish imkoniyatlari asosida xarakat qilib ko‘rishi kerak. Agar buni bajarishga uni kuchi yetmasa, u holda qurilma drayverda qayta ishlanishi kerak. Ko‘pincha xatolar vaqtinchalik bo‘lishi mumkin. Masalan, o‘quvchi moslamadagi changni chiqishi tufayli xato o‘qishi. Bunday xatolar blokni takroran o‘qish jarayonida sodir bo‘lmaydi. Faqat agar past pog‘onada muammo paydo bo‘lsa bu haqda yuqori pog‘onaga axborot beradi. Ko‘p holatlarda xatodan so‘ng qayta tiklangandan yuqori pog‘ona uchun aniq bo‘lgan past pog‘onada qilish afzal ko‘riladi, unda mavjud uzilishlar haqida yuqori pog‘ona xabardor bo‘lmasligi ham mumkin bo‘ladi.
Yana bir kalit so‘z - ma’lumotlarni uzatish usuli: asinxronga (to‘xtalishlarni boshqarish) teskari sinxronli (bloklovchi). Fizik pog‘onada kiritish/chiqarish ko‘plab operatsiyalari asinxronli (markaziy protsessor ma’lumotlar uzatishni boshlaydi va to‘xtalish bo‘lmagunga qadar unga e’tibor bermaydi) bo‘ladi. Foydalanuvchi dasturlarini kiritish/chiqarish operatsiyalarini qo‘llaydigan (chaqiriq tizimiga murojaat qilingandan so‘ng receive dasturi buferda ma’lumotlar paydo bo‘lmagunga qadar avtomatik to‘xtatadi) dasturni yozish sezilarli darajada oson. Kiritish/chiqarish operatsiyasi uchun asinxronli, foydalanuvchi dasturi uchun esa operatsion tizimda ishlaydigan bloklovchi bo‘ladi.
Kiritish/chiqarish dasturiy ta’minoti haqida gapirganda buferlashgae’tibor berish kerak bo‘ladi. Ma’lumotlar ko‘pincha qurilmadan kelib tushadi, u oxirgi nuqtasiga darrov saqlashning imkoniyati yo‘q. Masalan, paket tarmoq orqali kelganda, operatsion tizim bu paket nimaga kerakligini o‘rganib chiqmaguncha uni qayerga joylashtirishni bilmaydi. Bundan tashqari, real vaqtda ishlaydigan boshqa ko‘plab qurilmalar uchun ma’lumotlarni kelib tushish muddatini ko‘rsatuvchi parametrlar muhim hisoblaniladi (masalan, raqamli ovozni qayta tiklovchi qurilmalar), shu sababli qabul qilib olingan ma’lumotlar buferni to‘ldirish tezligiga bog‘liq bo‘lmagan, ovoz chiqaruvchi buferdan chiqarib olishda tezlik uchun avvaldan chiquvchi buferda joylashtiriladi. Buferlashda sezilarli miqdorda ma’lumotlarni ko‘chirishi nazarda tutiladi. Ko‘pincha kiritish/chiqarish operatsiyasini samarodoligini pasaytiruvchi omil sifatida ko‘riladi.
Bu tushuncha so‘ngida ajratish qurilmasi va qismlarga bo‘lish qurilmalari bo‘ladi. Diskga o‘xshash ba’zi kiritish/chiqarish qurilmalari ko‘p sonli foydalanuvchilar bilan bir vaqtda ishlay olishi mumkin. Shu sababli bir nechta foydalanuvchilar bitta diskda bitta faylni ochganda muammo paydo bo‘lmasligi kerak. Magnit tasmali tarqatgich kabi boshqa qurilmalar ushbu qurilmada u yakunlanmagunga qadar bir foydalanuvchilik bo‘ladi. Agar bir vaqtning o‘zida ikki va undan ortiq foydalanuvchilar bitta tasmaga aralash bloklarni yozishsa, yaxshi narsa olinmaydi. Ajratilgan (monopol foydalaniladigan) qurilmasi birgalikda bloklash kabi muammolarni keltirib chiqaradi. Operatsion tizim qismlarga ajratish va ajratilgan qurilmalarini boshqarish va turli xil muammolarni mustaqil yecha olishi kerak.
Bu muammolarni hal qilish uchun kiritish/chiqarish dasturiy ta’minotini to‘rtta pog‘onaga ajratiladi: