I/O — Input/Output, ya’ni kiritish va chiqarish amallarining qisqartmasi. Kompyuter dasturi protsessor va operativ xotiradan tashqaridagi manba bilan ma’lumot almashganda I/O bajariladi. Klaviaturadan belgi olish, faylni diskdan o‘qish, ekranga tasvir chiqarish va tarmoq orqali paket yuborish I/O amallariga misol bo‘ladi. I/O tezligi ko‘pincha protsessor hisoblashidan ancha past bo‘lgani uchun operatsion tizim uni alohida boshqaradi.
Qurilma va drayver
Dastur apparat qurilmasining registrlariga odatda bevosita murojaat qilmaydi. U operatsion tizim API yoki system call orqali o‘qish va yozish so‘rovini beradi. Kernel so‘rovni tegishli device driverga uzatadi. Drayver qurilma kontrolleri bilan ishlaydi va apparatga xos buyruqlarni bajaradi. Shu qatlamlash bir xil read yoki write amali bilan turli qurilmalardan foydalanish imkonini beradi.
Qurilma amalni tugatganda protsessorga interrupt yuborishi mumkin. Katta ma’lumot bloklarini ko‘chirishda Direct Memory Access (DMA) kontrolleri ma’lumotni qurilma bilan RAM orasida protsessorning har bir baytni ko‘chirishisiz uzatadi. Protsessor faqat amalni boshlaydi va tugash xabarini qabul qiladi.
Bloklovchi va bloklanmaydigan I/O
Bloklovchi I/O da dastur oqimi amal tugaguncha kutadi. Masalan, socketdan ma’lumot kelmagan bo‘lsa read chaqiruvi oqimni uxlatishi mumkin. Bu model sodda, lekin ko‘p ulanishda har bir kutish uchun alohida oqim yaratish katta resurs talab qiladi.
Bloklanmaydigan I/O darhol natija qaytaradi. Ma’lumot tayyor bo‘lmasa, dastur boshqa ishni davom ettiradi. select, poll, epoll, kqueue va completion-based mexanizmlar ko‘p descriptor holatini kuzatishga xizmat qiladi. Asinxron I/O da amal topshiriladi, natija keyin callback, event yoki future orqali olinadi.
Buffer va cache
Buffer tezligi farqli komponentlar orasidagi ma’lumotni vaqtincha saqlaydi. Yozuv bufferga qabul qilinib, qurilmaga keyinroq uzatilishi mumkin. Bu ko‘plab mayda amallarni yirik blokka birlashtiradi. Cache esa avval o‘qilgan ma’lumot nusxasini tezroq qatlamda saqlab, takroriy fizik I/O ni kamaytiradi.
Yozish amali dasturga muvaffaqiyatli qaytgan bo‘lsa ham, ma’lumot hali operatsion tizim cacheida turishi mumkin. Fayl tizimidagi fsync kabi amal ma’lumotni barqaror saqlash qurilmasiga uzatishni talab qiladi. Qurilma, kontroller va fayl tizimi xususiyatlari haqiqiy kafolatga ta’sir qiladi.
Ishlash ko‘rsatkichlari
I/O uchun latency, throughput va IOPS asosiy ko‘rsatkichlardir. Latency bitta amalning bajarilish vaqtini, throughput vaqt birligida uzatilgan ma’lumot hajmini, IOPS esa soniyasiga bajarilgan amallarni bildiradi. Ketma-ket va tasodifiy I/O natijalari ayniqsa disk tizimlarida keskin farq qilishi mumkin.
Memory-mapped I/O
Memory-mapped file mexanizmida faylning bir qismi jarayon virtual xotirasiga bog‘lanadi. Dastur oddiy xotira manzillari bilan ishlaydi, operatsion tizim esa kerakli sahifalarni diskdan olib keladi va o‘zgargan sahifalarni yozadi. Apparatdagi memory-mapped I/O boshqa tushuncha bo‘lib, qurilma registrlarini protsessor manzil maydoniga joylashtiradi. Ikki holatda ham manzil orqali murojaat qilinadi, lekin obyekt va boshqaruv qatlami farq qiladi.
Sahifa xatosi yuz bersa kernel kerakli blokni saqlash qurilmasidan yuklaydi.
Bog‘liq tushunchalar
System call, device driver, interrupt, DMA, buffer, cache, asinxron I/O