Disklar periferik qurilmalarining alohida turi hisoblanadi, chunki aynan ularda ham foydalanuvchi, ham tizim ma’lumotlarining aksariyat qismi saqlanadi. Disklardagi ma’lumotlar fayl tizimlarda joylashtiriladi, va fayl tizimi xususiyatlari asosan OT o‘zining xususiyatlari bilan aniqlanadi. Fayl tizimining ommalash-ganligi ko‘pincha uni “o‘zining” operatsion tizimidan boshqa operatsion tizimlarga ko‘chirilishiga olib keladi, masalan FAT fayl tizimi boshida MS-DOS da, keiynchalik esa OS/2, MS Windows tizimlarida va Unix
tizimining ko‘p variantlarida qo‘llanilgan. Shuning uchun kiritish/chiqarish kichik tizimiga bir nechta ommaviy fayl tizimlarini qo‘llab-quvvatlash xuddi periferik qurilmalarining keng spektrini qo‘llab-quvavvatlashdek muhim. Kiritish/chiqarish kichik tizimi arixitekturasini uning tarkibiga osongina, kodlarni qayta yozishga zarurat bo‘lmasdan, yangi fayl tizimlarni kiritish imkoniyati ham muhim hisoblanadi. Odatda operatsion tizimda mazkur vazifani yechishga javob beruvchi dasturiy ta’minotining maxsus qatlami bo‘ladi, masalan, Unix operatsion tizimi versiyalarida VFS (Virtual File System) kodi asosida System V Release 4 qatlami.
Kiritish/chiqarishmenejeri
Kiritish/chiqarish kichik tizimida tashqi qurilmalarning xususiyatlari va vertikal kichik tizimlarni tashkil etuvchi modullar bilan bir qatorda universal turdagi modullar ham mavjud. Bu modullar kiritish/chiqarish kichik tizimining barcha boshqa komponentlarining o‘zaro ishlashini va foydalanuvchi jarayonlari hamda OT ning boshqa kichik tizimlari bilan o‘zaro munosabatlarini tashkil etadi. Xuddi qurilmalarni boshqarish funksiyalariga o‘xshab, bu tashkillashtiruvchi funksiyalar barcha darajalar bo‘yicha taqsimlanadi va kiritish/chiqarish menejeri nomli qobiqni tashkil etadi. Kiritish/chiqarish menejerning vazifalari to‘rtta interfeysni qo‘llab- quvvatlashdan iborat:
Kiritish/chiqarish kichik tizimning qismlari bilan ichki interfeys.
Menejerning yuqori qatlamini foydalanuvchi jarayonlardan tizimli ko‘rinishda keladigan kiritish/chiqarishga so‘rovlarni qabul qiladigan va ularni ma’lum qurilmalarga javob beruvchi modul va drayverlarga qayta manzillaydigan hamda kiritish/chiqarish amallarining natijalarani jarayonlarga qaytaradigan OT ning modullari tashkil etadi. Shunday qilib bu qatlam kiritish/chiqarish foydalanuvchi interfeysni qo‘llab-quvvatlaydi va amaliyotchi dasturchilarga tashqi qurilmalar hamda ularda joylashgan ma’lumotlar bilan ishlashda maksimal qulayliklar yaratadi. Menejerning pastki qatlami drayverlarni kompyuterni apparat platformasining xususiyatlaridan
(kiritish/chiqarish shinalari, uzilishlar tizimi va boshqalar) ekranlashtirish yo‘li bilan tashqi qurilmalar kontrollerlari bilan bevosita o‘zaro harakatni amalga oshiradi. Bu qatlam kiritish/chiqarish shinalarning manzillari va formatidan mustaqil ravishda ma’lum umumiylashtirilgan shaklda drayverlardan kontrollerlar registrlari bilan ma’lumotlar almashinuviga so‘rovlar qabul qiladi, va keyin bu so‘rovlarni apparatli platformaga bog‘liq formatga aylantiradi. Avval ko‘rib chiqilgan to‘htatishlar dispetcheri kiritish/chiqarish menejerning tarkibiga kirishi mumkin yoki yadroning alohida moduli shaklida bo‘lishi mumkin. Oxirgi vaziyatda kiritish/chiqarish menejeri to‘xtatishlar dispetcheri uchun dispetcherga so‘rov manbai to‘g‘risida umumlashtirilgan axborotlarni uzatib, uzilish so‘rovlarini boshlang‘ich ishlovini bajaradi. Menejerning yana bir funksiyasi – bu kiritish/chiqarish kichik tizimi modullarini OT ning jarayonlarni boshqarish, virtual xotira va boshqa kichik tizimlari singari boshqa kichik tizimlari modullari bilan o‘zaro harakatini tashkillashtirish. Kiritish/chiqarish menejerning muhim funksiyasi kiritish/chiqarish kichik tizimni qismlarining o‘zaro harakati uchun ma’lum qulay muhitni yaratishdan iborat. Buning uchun kiritish/chiqarish menejeriga kiritish/chiqarish modullari o‘zaro harakatini ma’lum standart ichki interfeysini qo‘llab-quvvatlash kiritiladi, hamda menejerga drayverlar ishlashida eng ko‘p foydalaniladigan funksiyalarni bajarish yuklatiladi. Bu funksiyalar drayver ayrim tez-tez uchraydigan amallarni bajarilishini chaqirish imkoniyatini beradigan tizimli protseduralar ko‘rinishda shakllantiriladi. Misollar tariqasida kontroller registrlari bilan almashinuvi amallari, kiritish/chiqarish ma’lumotlarni oraliq saqlash buferlarni olib borish, bir nechta drayverlar ishlashini sinxronlashtirish, ma’lumotlarni foydalanuvchi fazodan tizimning fazosiga nusxalashni keltirish mumkin. Bunday yondashuv yangi drayverlar va faylli tizimlarni ishlab chiqish va ularni OT tarkibiga joylashtirishni sezilarli darajada yengillashtiradi. Kiritish/chiqarish menejeri vazifasini Unix operatsion tizimining ko‘p versiyalarida mavjud bo‘lgan STREAMS muhiti bajaradi. Boshqa misol tariqasida Windows NT oilasi OT larning kiritish/chiqarish menejerini keltirish mumkin. U modullar o‘rtasidagi o‘zaro harakatni kiritish/chiqarish so‘rovlar paketlari (I/O Request Packet, IRP) yordamida tashkillashtiradi. Tizimli chaqiruv protsedurasidan so‘rov olgach
menejer IRP ni shakllantiradi va uni kerakli drayverga uzatadi. So‘ralgan amal bajarilganidan keyin drayver javobni yana bir IRP paketi ko‘rinishida menejerga qaytarida, u esa, o‘z navbatida zarurat bo‘lgan holda shu IRP paketni boshqa drayverga uzatishi mumkin. Menejer drayverlarga o‘zaro bog‘lanishlar (biddings) berishga imkon yaratadi, va o‘zaro aloqalar to‘g‘risidagi axborot asosida IRP paketlarni uzatishni amalga oshiriladi. Shuningdek, Windows NT oilasi OT ning menejeri tizimni to‘xtatmagan holda drayverlarni dinamik yuklash va chiqarishni qo‘llab-quvvatlaydi. Standart ichki modullararo interfeysning mavjudligi kiritish/chiqarish kichik tizimining chidamliligini oshiradi va kengayuvchanligini yaxshilaydi, ammo uning ishlash tezligini biroz sekinlashtirishi mumkin, chunki har bir qatlam va qismlarga bo‘linish boshqaruvni to‘g‘ridan-to‘g‘ri uzatishlar bilan mustahkamlashga nisbatan qo‘shimcha amallarga olib keladi.
Kiritish/chiqarishdasturiyta’minoti
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:
Ba’zida kiritish/chiqarish dasturlari ko‘plab kiritish/chiqarish operatsiyalarida to‘xtalishlardan qochish uchun foydali bo‘ladi. To‘xtalish berkitilgan bo‘lishi kerak. Drayver down protsedura semaforasida, o‘zgaruvchan holat wait protsedurasiga, xabar yoki shunga o‘xshash receive protsedurasida bajarib o‘zini o‘zi bloklashi mumkin.
To‘xtalish sodir bo‘lganda to‘xtalishlarni qayta ishlovchi ishga tushadi. Uni yakunida u drayverni blokirovkadan chiqaradi. Ayrim holatlarda semaforada up protsedurasi orqali amalga oshiriladi. Boshqa holatlarda to‘xtalishlarni qayta ishlovchi holatni o‘zgatirishli signal monitorini chaqiradi. Yoki bloklangan drayverga xabar jo‘natadi. Istalgan holatda ham natija bir xil bo‘ladi - drayver blokdan chiqariladi va ishini davom ettiradi. Bu sxema xususiy holatlarda, stek va hisoblagich buyruqlari olganda drayverlarda juda yaxshi ishlaydi.
Ba’zi bir dasturiy ta’minot qismlari aniq bir qurilma bilan birga ishlash uchun mo‘ljallangan, uning qismi nisbatan qurilmadan mustaqil. Drayver va qurilmadan mustaqil dasturiy ta’minot o‘rtasidagi aniq chegara tizimdan o‘tadi, ba’zi bir funksiyalar qurilmadan mustaqil holda amalga oshirilishi mumkin. Keyingi funksiya odatda qurilmadan mustaqil dasturiy ta’minotni amalga oshiradi:
qurilma drayveri uchun yagona ko‘rinishli interfeyslar;
buferlash;
xatoliklar to‘g‘risida xabar;
ajratilgan qurilmani egallash va ozod etish;
blok hajmiga bog‘liq bo‘lmagan apparat ta’minoti. Qurilmadan mustaqil dasturiy ta’minotning bosh maqsadi –
barcha qurilmalar uchun umumiy kiritish/chiqarish funksiyasini bajarish va foydalanuvchi darajasida dasturlar uchun yagona ko‘rinishli interfeyslarni taqdim etish.
Qurilmadrayveriuchunyagonako‘rinishliinterfeyslar
Operatsion tizimdagi asosiy vazifasi – kiritish/chiqarish va drayver qurilmalarini taqdim etishni nisbatan bir xil shaklga keltirish. Agar disklar, printerlar, monitorlar, klaviaturalar va boshqa qurilmalar har xil interfeysga ega bo‘lib, har biri yangi qurilma kompyuterga ulanganda operatsion tizimdan modifikatsiyasini talab qiladi. 4.13a- rasmda sxema ko‘rinishida holat, ya’ni har bir qurilma drayveri operatsion tizim bilan shaxsiy interfeysiga ega bo‘lgani, 4.13b- rasmda barcha drayverlar bir xil interfeysga ega bo‘lgani tasvirlangan. Standart interfeyslar yangi qurilma drayverlari tizimga kirishi soddalashtirilgan. Standartga rioya qilish drayver muallifi qaysi bir funksiya joriy qilinganligini va yadroda qanday chaqiriq
joylashganligini biladi.
4.13- rasm. a-rasmda drayverlar turli xil interfeysga ega; b-rasmda barcha drayverlar bir xil interfeysga ega
Amaliyotda farqlanadi, biroq ularning soni ko‘p emas, va turli xil turlar o‘rtasida ko‘plab umumiylik mavjud.
Xatto blokli va belgili qurilmalar kamdan kam bir xil funksiyani bajaradi.
Interfeysni bir xillashtirishning muhim omillaridan biri – kiritish/chiqarish qurilmalarini nomlash usuli. Apparatdan mustaqil bo‘lgan dastur drayverlariga tegishli qurilmalariga belgili nomlar berish. Masalan, UNIX va MINIX 3 da qurilma nomi maxsus fayl indeksini ko‘rsatuvchi bir ma’noli /dev/disk0, mos bo‘lgan drayver esa qurilmani bosh raqami bo‘yicha aniqlaniladi.
Buferlash
Buferlash blokli va belgili qurilmalar uchun juda muhim hisoblanadi. Apparat ta’minoti blokli qurilmadan odatda katta bloklarni o‘qish va yozishni talab qiladi. Biroq foydalanuvchi dasturlari uchun bunday chegara yo‘q, ular istalgan hajmda axborotni uzatishga haqli bo‘ladi. Shu sababli agar foydalanuvchi faqat blokning yarmini jo‘natsa, odatda operatsion tizim diskga bu ma’lumotlarni darrov yozmaydi, blokning qolgan qismini jo‘natilishini kutadi. Belgili qurilmalarda foydalanuvchi ularni qabul qilib olish holatidagi qurilmaga nisbatan tezroq ma’lumotlarni jo‘natadi, bunday ko‘rinishda bu yerda buferlash zarur. Ma’lumotlar kelib tushishi bundan mustasno emas, masalan, klaviaturadan oldinga o‘tib ketishi mumkin va bu holat bufersiz bo‘lmaydi.
Xatoliklarto‘g‘risidaxabar
Xatoliklar to‘g‘risidagi xabar kiritish/chiqarish qurilmasi kontekstining hech qayerida sodir bo‘lmaydi. operatsion tizim ularni qayta ishlanishini yuqori darajada kuchaytirishni davom ettirishi kerak. Ko‘plab xatolar aniq bir qurilma uchun xususiyatli bo‘ladi va drayverda qayta ishlanishi kerak, chunki uni to‘g‘irlashni faqat u biladi (masalan, harakatlarni takrorlash, xatoliklarni rad etish yoki tizimni rad etish).
O‘ziga xos xatoliklar – disk blokiga kirishga ruhsat bermaydi yoki buzadi. Disk drayveri va agar yuqorida turuvchi dasturga axborot berishni uddalay olmasa, bir necha marotaba takroran o‘qishga harakat qilinadi. Bu vaqtda xatolikni qayta ishlash apparatdan mustaqil holda bo‘ladi. Agar xatolik foydalanuvchi dasturini o‘qish joyida bo‘lsa, chaqiriqlarni bajaruvchi dastur ma’lumotlarini jo‘natish yetarli bo‘ladi. Agar tizim tuzilishini muhim qismlarini o‘qish imkoniyati bo‘lmasa, xatolik to‘g‘risida axborotni tizimga uzatadi va o‘z ishini yakunlaydi.
Ayrim qurilmalar masalan, CD-RW uzatgich vaqtning har bir onida jarayonni to‘liq egallanishini nazarda tutadi. Operatsion tizim bunday qurilma bilan foydalanish so‘rovini ko‘rib chiqishi va ularni so‘ralayotgan qurilmaga kirishga bog‘liq bo‘lgan so‘rovni bajarilishini qabul qilishi yoki rad javobini berishi kerak. Bunday so‘rovlarni qayta ishlash sodda usuli maxsus fayllar bilan o‘zaro bog‘lanish bo‘yicha open chaqiriq tizimini joriy qilish bilan yakunlanadi. Agar qurilmaga kirishga ruhsat bo‘lmasa, open chaqirig‘i muvaffaqiyatsiz yakunlanadi. Close chaqiriq tizimiga murojaat etilib qurilma bo‘shatiladi.
Blokhajmigabog‘liqbo‘lmaganapparatta’minoti
Turli xil disklarda turli hajmli sektorlar bo‘lishi mumkin. Qurilmadan mustaqil dasturiy ta’minot yuqori pog‘onadan bu faktlarni yashirishi kerak va yagona ko‘rinishli hajmli blok sifatida taqdim etishi kerak, masalan, bitta mantiqiy asosda bir nechta fizik segmentlarni birlashtirilishi. Shu sababli nisbatan yuqori pog‘ona fizik sektor hajmiga bog‘liq bo‘lmagan bitta mantiqiy blok hajmida faqat mavhum qurilmaga ega bo‘ladi.
Ayrim belgili qurilmalar o‘zining baytli ma’lumotlarini taqdim etadilar (masalan, modemlar), unda boshqalar uni kattaroq miqdorda ajratadilar (tarmoq interfeyslari). Bular shuningdek yashirilishi bilan farq qilishi mumkin.
Kiritish/chiqarish qurilmasini katta bir qismi operatsion tizimga tegishli bo‘lsa uning oz qismi kutubxona, foydalanuvchi dasturlarini komponovkalash yoki hatto yadroda ishlaydigan butun bir dasturni o‘z ichiga oladi. Chaqiriq tizimlari kiritish/chiqarish chaqiriq tizimlarini o‘z ichiga oladi. Odatda kutubxona protseduralaridan iborat bo‘ladi.
Masalan: count = write (fdf buffer, nbytes);
Agar C – dastur bunday chaqiriqni o‘z ichiga olsa, kutubxona write protsedurasi dasturlar bilan butun bir ko‘rinishga keltiriladi, bunday ko‘rinishda dastur bajarilish vaqtida xotiraga yuklanadigan ikkilik kodni ko‘rsatadi. Bunday kutubxonali protseduralar to‘plami shubhasiz kiritish/chiqarish qurilmasini qismi bo‘ladi. Kutubxona protseduralari kamdan kam holatlarda kiritish/chiqarish operatsiyalari shaklida bajariladi. Masalan, print f C-protsedurasi matn qatori kirishida qabul qilinadi va bir nechta qo‘llash imkoniyati bo‘lgan undan ASCII-qatorlarini yaratadi, shundan so‘ng bevosita chiqarish uchun write chaqiriq tizimini ishlatadi. Ba’zi foydalanuvchi muhiti kiritish/chiqarish dasturiy ta’minoti kutubxonali protseduradan iborat bo‘ladi. Boshqa bir muhim toifa – bu spuling tizimi. Spuling (buferlash) o‘zida ko‘p topshiriqli tizimlarda ajratilgan qurilmalar bilan ishlash yo‘llarini taqdim etadi. Spulingdan foydalanadigan qurilmaning o‘ziga xosligi printer bo‘ladi. Printerda har bir foydalanuvchiga maxsus belgili fayl ochishga ruhsat beradi. Biroq jarayon uni ochishda joriy bir necha soatda printerga murojaat etmaydi bu vaqtda hech bir jarayon hech narsani chop eta olmaydi. Bu bilan birga domen deb ataladigan maxsus jarayon va spuling katalogi deb ataladigan maxsus katalogni yaratadi. Faylni chop etish uchun dastlab jarayon spuling katalogida joylashgan, chop etish uchun mo‘ljallangan maxsus faylni yaratadi. Bu faylni maxsus fayl printeriga foydalanishga ruhsat berilgan yagona jarayonni domen chop etadi. Bunday ko‘rinishda, muammo qandaydir jarayon printerni uzoq vaqt davomida egallab tursa foydalanuvchining to‘g‘ridan-to‘g‘ri kirishidan maxsus fayllarni himoyalashni hal qilish bo‘ladi. Spuling
faqat printer uchun foydalanilmaydi. Masalan, domen tarkibiga kiradigan elektron pochta dasturiy ta’minotida. Jo‘natilishi kerak bo‘lgan xat spuling katoligada joylashadi. So‘ng domen elektron pochtani ochib ko‘radi, uni qayerga jo‘natish kerakligini aniqlaydi va jo‘natadi. Vaqtning istalgan momentida kirishga ruhsat olinmaganlikni olish ehtimolligi mavjud bo‘ladi, bu holatda domen spuling katalogida xatni qoldiradi va keyinroq takroran uzatishga harakat qilish to‘g‘risida axborotni qayd etib qo‘yadi. Demon shuningdek, kechikish to‘g‘risidagi xabarni jo‘natishi mumkin, agar xat joriy bir necha soatda yoki kunda jo‘natilmasa – xatni jo‘natish imkoniyati yo‘qligi to‘g‘risida axborotni jo‘natadi.
Masalan, foydalanuvchi dasturi operatsion tizimda ishga tushirilgan chaqiriqlarni qayta ishlash uchun fayldagi blokni o‘qishga harakat qiladi. Qurilmadan mustaqil dasturiy ta’minot bu blokni keshdan qidiradi. Agar talab qilinayotgan blok bo‘lsa, u apparaturaga murojaat qilish va diskdan bu blokni qabul qilish uchun qurilma drayverini chaqiradi. Jarayon diskni o‘qish operatsiyalari yakunlangunga qadar bloklanadi.
Disk operatsiyani yakunlaganda, apparat uziladi. To‘xtalishlarni qayta ishlash nima sodir bo‘lganligini aniqlash uchun ishga tushadi, unda qaysi mexanizm e’tibor talab etilayotganligi aniqlaniladi. So‘ng u mexanizm holati to‘g‘risida axborotni oladi va kiritish/chiqarish so‘rovini qayta ishlashni yakunlash uchun “vaqtinchalik to‘xtab turgan” jarayonni faollashtiradi, va foydalanuvchi rejimi ishlashni davom ettirishga topshiriladi.
O‘zarobirgalikdabloklash
Kompyuter tizimlarida vaqtning har bir onida faqat bitta jarayonda foydalanish mumkin bo‘lgan resurlar mavjud. Misol sifatida printerlarni magnitli lenta tarqatgichlar va tizimning ichki jadval elementlarini keltirish mumkin. Printerga bir vaqtning o‘zida ma’lumot uzatadigan ikkita jarayon mavjud, belgilar to‘plamini chop etishga berish mantiqsiz. Bitta va shu fayl tizimi jadval elementidan foydalanadigan ikkita jarayon mavjud bo‘lishi fayl tuzilishini barbod bo‘lishiga olib keladi. Shu sababli barcha operatsion tizimlar dasturi va apparat resurslariga ohirgi chora sifatida vaqtinchalik kirishni jarayonlarga taqdim etishi mumkin.
Amaliy jarayon ko‘pincha bir emas bir necha resurslarga kira olishi zarur. Faraz qilamiz, masalan ikkala jarayonning har biri kompakt – diskdan hujjat nusxasini yozib olishni istashi mumkin. A jarayon skanerdan foydalanishga ruhsat so‘raydi va uni oladi. B jarayon boshqa dastur bilan dasturlanganligi sababli dastlab kompakt diskga yozish uchun qurilmaga murojaat qiladi. So‘ng A jarayon kompakt diskga yozish uchun qurilmaga murojaat qiladi, lekin bu qurilma B jarayon bilan band qilinganligi sababli so‘rovga rad javobi beriladi. Afsuski, kompakt – diskga yozish uchun qurilmani ozod qilishda B skanerdan so‘raydi. Jarayonlar bloklanganligini ko‘rsatadi. Bunday holat o‘zaro birgalikda bloklash yoki berklik deyiladi.
Resurslar
Tizim jarayon qurilma, fayl va boshqalarga kirish qoidalarini taqdim etganda o‘zaro birgalikda bloklashni ko‘rishimiz mumkin. O‘zaro birgalikda bloklash to‘g‘risida umumiy bir xulosaga kelib obyektga kirishni resurs deb atashimiz mumkin. Resurs qurilma (masalan, magnitli tasmali tarqatgich) yoki axborot bir qismi (ma’lumotlar omborida berkitilgan yozuv) bo‘lishi mumkin. Kompyuterda murojaat qilish mumkin bo‘lgan turli hajmli resurslar mavjud. Bundan tashqari tizimda biron bir resursning bir nechta nusxalarini ko‘rishimiz mumkin. Agar tizimda bir xil deb ataladigan bir nechta o‘zaro almashadigan resurs nusxalarini bor, unda resurslarga murojaat qilishga javob nusxalardan kirishga ruhsat etilgan istalgan birini taqdim etishi mumkin. Resurs – vaqtning istalgan onida faqat bitta jarayondan foydalanish qoidasi.
Resurslar ikki xil bo‘ladi: yuklanadigan va yuklanmaydigan. Yuklanadigan resurs jarayonning egasidan olish zararsiz. Bunday resurslarga xotirani kiritish mumkin. Masalan, foydalanuvchi xotirasi 64 Mbayt li tizimga bitta printer va har biri nimanidir chop etishni istayotgan 64 Kbaytli ikkita jarayon bor. A jarayon so‘raydi va printerni oladi, so‘ng chop etish uchun ma’lumotlarni hisoblashni boshlaydi. Yana hisoblashni tugamasdan, o‘zining kvant vaqtini oshiradi va o‘rin almashtirish maydonida diskga yuklaydi.
Shundan so‘ng Bjarayon ishlaydi va bekordan bekorga printerga murojaat qilishga harakat qiladi. Natijada berklikli vaziyatga tushib qolinadi, A jarayon printerni egallab olganligi sababli, B jarayon xotirani band qiladi va ulardan hech biri resursiz o‘z ishini davom
ettira olmaydi. B jarayonni xotiraga yuklash ta’qiqlanmagan, uni o‘rin almashtirish maydonida xotiraga o‘tkaziladi va A jarayonni xotiradan diskga yuklanadi. Shundan so‘ng A jarayon hisoblashni yakunlashi, chop etishni bajarishi va so‘ng printerni bo‘shatishi mumkin. O‘zaro birgalikda bloklanish sodir bo‘lmaydi.
Yuklanmaydigan resurs – hisoblash natijasida yo‘q qilib bo‘lmaydigan joriy egasidan olib bo‘lmaydigan resurs. Agar kompakt – diskga yozish vaqtida yozish uchun qurilmadan jarayonni to‘satdan tortib olsa va uni boshqa jarayonga uzatsa, unda kompakt – disk ishdan chiqish natijasini olamiz. Kompakt diskni yozish uchun qurilma vaqtinchalik resurs ixtiyoriy vaqtda yuklanmaydi.
O‘zaro birgalikda bloklash yuklanmaydigan resurs hisoblanadi. Berklikli holatda, ya’ni resurs ko‘rinishiga qarama-qarshi bo‘lganda, odatda bir jarayondan boshqasiga resurslarni taqsimlashga ruhsat beradi. Shu sababli biz e’tiborimizni yuklanmaydigan resurslarga qaratamiz.
Resursdan foydalanish uchun zarur hodisalar ketma-ketligi mavhum ko‘rinishi quyidagi shaklda tasvirlanadi:
Agar resurs ruhsat etilmagan bo‘lsa, uning jarayoni so‘rovni kutadi. Ba’zi operatsion tizimlarda avtomatik bloklaydigan jarayon resursiga murojaat muvaffaqiyatsiz bo‘lsa va shundan so‘ng qayta yangilansa resurs kirishga ruhsat etilgan bo‘lib qoladi. Boshqa tizimlarda resurs so‘rovi va rad etishda xatolik kodiga murojaat etilsa, unda chaqiriluvchi jarayon biroz kutib turishi va harakatni takroran bajarishi mumkin.
O‘zarobirgalikdabloklanishshartlari
Quyida o‘zaro bir-birini bloklashning 4 ta sharti keltirilgan:.