137
kutish holatiga o‘tkazadi. Mazkur usulni kamchiligi – bu
kiritish/chiqarishni boshqarish bilan bog‘liq jarayon vaqtining katta
yo‘qotishlaridir.
2.
To‘xtatishlar
bilan
boshqariladigan
kiritish/chiqarish.
Protsessor kiritish/chiqarish kontrolleriga kerakli buyruqlarni jo‘natadi
va joriy jarayonni
bajarishni davom etadi, agar kiritish/chiqarish
amallar bajarishni kutishda zarurat bo‘lmasa. Aks holda joriy jarayon
kiritish/chiqarish yakunlanganligi to‘g‘risida uzilish signali olingunga
qadar vaqtinchalik to‘xtatiladi, protsessor esa boshqa jarayonni
bajarishga
o‘tkaziladi. To‘xtatishlar mavjudligini protsessor
bajarilayotgan buyruqlarni har bir siklining oxirida tekshiradi. Bunday
kiritish/chiqarish
dasturlanadigan
kiritish/chiqarishga
nisbatan
anchagina samaraliroq, chunki bunda protsessorning behuda bekor
turishi bilan bog‘liq keraksiz kutishga yo‘l qo‘yilmaydi. Lekin bu
holda ham kiritish/chiqarish baribir protsessorning katta miqdorda
vaqtini iste’mol qiladi, chunki xotiradan kiritish/chiqarish moduli
(kontroller)ga uzatiladigan har bir so‘z
yoki teskari amal albatta
protsessor orqali o‘tishi kerak.
3.
Xotiraga
to‘g‘ridan-to‘g‘ri
kirish
(DMA)
kontrolleri
yordamida. Xotirada kiritish/chiqarish qurilmasi tasvirlanishini
qo‘llab-quvvatlashni mustaqil bo‘lishi uchun markaziy protsessorga u
bilan ma’lumotlar almashish uchun kontroller qurilmasini manzillash
kerak bo‘ladi. Protsessor bayt asosida kontrollerdan ma’lumotlarni
so‘rashi mumkin. Agar ma’lumotlarni katta blokli qurilmadan qabul
qilish talab etilsa (masalan, disk), vaqtning katta qismi uni ishga
tushirishga sarflanadi. Ushbu sabab bo‘yicha xotira bilan birga ishlash
uchun
xotiraga to‘gridan-to‘gri kirish
(Direct Memory Access, DMA)
deb ataladigan usul ishlatiladi, ko‘plab kompyuterlar bunday
kontrollerlarga ega (4.3-rasm). Ba’zida DMAkontrollerlar boshqa
kontrollerlarga qo‘yiladi (masalan diskni o‘quvchi kontrollerlar), lekin
har bir qurilmaga talab qilinadi. Tizimlar ko‘pincha
yagona
DMAkontrolleriga ega bo‘ladilar, ya’ni odatda ona plataga
joylashtiriladi. U parallel ravishda ko‘plab kiritish/chiqarish
qurilmalarida ma’lumotlar almashishni boshqaradi.
DMA kontroller o‘qish va yozish uchun protsessorga kirishga
ruhsati bor bir nechta registrlarga ega: manzil registri, baytlarni
hisoblagich va qator boshqaruv registrlari. Kiritish/chiqarish portidan
so‘nggi foydalanadigan bir davrda jo‘natuvchi ma’lumotlar (bayt yoki
138
so‘z) va bayt sonlari almashadi, ma’lumotlar almashishni yo‘naltiradi
(o‘qiydi yoki yozadi).
DMA funksiyasini aniqlashtirib olish uchun dastlab xotiraga
to‘g‘ridan-to‘g‘ri kirish mavjud bo‘lmagan diskli o‘qishni amalga
oshirilishini ko‘rib chiqamiz. Dastlab
kontroller bitdan bitgacha
ketma-ketlikda kontroller ichki buferi ko‘rsatilmagunga qadar blok
(bir yoki bir nechta sektor) deb hisoblaniladi. So‘ng nazorat summasi
hisoblaniladi va mavjud xatolar tekshiriladi. Hisoblash, siklik, baytli
yoki so‘zli ko‘rinishda amalga oshiriladi. Bayt (so‘z) hisoblangandan
so‘ng u asosiy xotirada saqlanadi, xotira manzili ko‘payadi,
hisoblagich qolgan elementlarni dekrementlaydi. Hisoblagich nolga
teng bo‘lganda sikl to‘xtatiladi. Xotiraga to‘g‘ridan-to‘g‘ri kirish
protsedura tavsifini o‘zgartiradi.
4.3-rasm
DMA-kontrolleri ishlashi
Dastlab
protsessor
DMAkontrollerni
dasturlaydi,
uning
registriga yozuvlarni yozadi (qayerga jo‘natilishi kontrollerda
ko‘rsatilgan (4.3-rasmda 1-qadam). So‘ng kontrollerga o‘zining ichki
buferida diskdagi ma’lumotlarni hisoblash buyrug‘ini jo‘natadi va
nazorat summasini tekshiradi. DMA ma’lumotlari kontrollerda paydo
bo‘lgandan so‘ng ishlashni boshlashi mumkin bo‘ladi.
139
DMAkontroller ma’lumotlarni ko‘chirishni boshlaydi, o‘qish
so‘rovini shina bo‘yicha disk kontrolleriga jo‘natadi (2-qadam). Bu
so‘rov o‘qishga odatiy so‘rov bo‘ladi, chunki diskni kontroller
markaziy protsessordan yoki DMAkontrolleridan jo‘natilganligini
bilmaydi. Xotira manzili odatda manzilli shinada joylashgan bo‘ladi,
o‘zining ichki buferidan keyingi so‘zlarni qayerga jo‘natish kerakligi
to‘g‘risida boxabar bo‘ladi. Xotirada yozish shinaning yana bir
standart sikli bo‘ladi. (3-qadam). Yozish tugagandan keyin disk
kontrolleri shina bo‘yicha DMAkontrollerini qo‘llab-quvvatlaydigan
signalni jo‘natadi (4-qadam). So‘ng DMAkontroller xotirada
foydalanilgan manzilni inkrementlaydi va
hisoblagich bayt qiymatini
dekrementlaydi. Shundan so‘ng hisoblagich nolga teng bo‘lgunga
qadar 2-4- qadamlar takrorlanadi. DMAkontrollerida ko‘chirish
(nusxa olish) sikli tugashi bo‘yicha protsessor to‘xtatiladi. Operatsion
tizimga xotiradan diskli blokni ko‘chirish kerak emas. U allaqachon u
yerda joylashgan bo‘ladi. Kontrollerga ichki xotira ikki sabab tufayli
zarur. Birinchisi ichki buferlash hisobiga disk kontrolleri xotiraga
ma’lumotlar jo‘natilish boshlanishigacha nazorat summasini tekshira
olishi mumkin bo‘ladi. Agar qiymatlar mos kelmasa, xatolik
to‘g‘risida signal shakllantiriladi va ma’lumotlarni uzatish amalga
oshirilmaydi.
Ikkinchidan diskni o‘qish operatsiyasi boshlanganda bitlarni
kontroller qabul qilish va qilmasligiga bog‘liq bo‘lmagan holda
doimiy tezlik bilan kelib tushishi boshlanadi. Agar disk kontrolleri bu
ma’lumotlarni xotiraga to‘g‘ridan-to‘g‘ri yozishga harakat qilsa, uni
tizimli shina bo‘yicha amalga oshiradi. Agar navbatdagi so‘zni
uzatishda shina biron bir boshqa qurilma bilan band bo‘lsa disk
kontrolleri kutishiga to‘g‘ri keladi. Agar keyingi so‘z kontroller
kechikishlarni saqlashini amalga oshirishga ulgurishiga nisbatan
diskda avval kelgan bo‘lsa kontroller avvalgi so‘zni yo‘qotadi yoki
uni yana bir bor xotirlaydi (esga oladi). Agar shina intensiv
foydalanilsa kontroller bir nechta so‘zlarni shu zahoti saqlashi kerak
bo‘ladi va ko‘plab xizmat ishlarini bajaradi. Xotiraga to‘g‘ridan-
to‘g‘ri kirish operatsiyasi boshlanmagunga qadar shina ichki buferi
mavjud bo‘lishi zarur emas. Natijada diskli qurilma soddaroq bo‘ladi,
chunki vaqtinchalik parametrlarni xotiraga to‘g‘ridan-to‘g‘ri kirishi
qiyin bo‘lmaydi.