har bir qurilmaga talab qilinadi. Tizimlar ko‘pincha yagona
DMAkontrolleriga ega bo‘ladilar, ya’ni odatda ona plataga
joylashtiriladi. U parallel ravishda k o‘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
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. S o‘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 j o‘natilishi kontrollerda
ko‘rsatilgan (4.3-rasmda 1-qadam). So‘ng kontrollerga o‘zining ichki
buferida diskdagi ma’lumotlarni hisoblash buyru g‘ini jo‘natadi va
nazorat summasini tekshiradi. DMA ma’lumotlari kontrollerda paydo
bo‘lgandan so‘ng ishlashni boshlashi mumkin bo‘ladi.
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 b o‘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 k o‘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 b o‘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‘ridanto‘g‘ri kirish
operatsiyasi boshlanmagunga qadar shina ichki buferi
mavjud bo‘lishi zarur emas. Natijada diskli qurilma soddaroq b o‘ladi,
chunki vaqtinchalik parametrlarni xotiraga to‘g‘ridan-to‘g‘ri kirishi
qiyin bo‘lmaydi.
Do'stlaringiz bilan baham: