Rivojlantirish vazirligi muhammad al-xorazmiy nomidagi toshkеnt axborot tеxnologiyalari univеrsitеti


Uzilishga asoslangan kirish/chiqish


Download 90.86 Kb.
bet4/8
Sana24.12.2022
Hajmi90.86 Kb.
#1063054
1   2   3   4   5   6   7   8

Uzilishga asoslangan kirish/chiqish


Uzilishga asoslangan kirish yoki chiqish kiritish yoki chiqishni amalga oshirishning yana bir usuli hisoblanadi. Belgilarni buferlamaydigan, lekin kelganda har bir belgini chop etadigan printerda chop etishda.
Agar printer sekundiga 100 ta belgi chop eta olsa, har bir belgi chop etish uchun 10 ms ni oladi. Bu shuni anglatadiki, har bir belgi printerning maʼlumotlar registriga yozilgandan soʻng markaziy protsessor bloki 10 ms sekund davomida boʻsh rejimda oʻtirib, ishlamay qoladi. keyingi belgini chiqarishga ruxsat beriladi.
Bu 10 msek. kontekstni almashtirish va boshqa jarayonni bajarish uchun ko'proq vaqt sarflanadi, bu esa behuda ketadi.
Uzilishlar printerni o'qishni kutish vaqtida markaziy protsessorga biror narsa qilish yoki boshqa jarayonni bajarish imkonini berish uchun ishlatiladi.
Satrni chop etish uchun kompyuter tizimi chaqiruvi amalga oshirilganda, bufer yadro maydoniga ko'chiriladi va birinchi belgi belgini qabul qilishga tayyor bo'lishi bilanoq printerga ko'chiriladi. Endi, o'sha paytda, markaziy protsessor (CPU) rejalashtiruvchini chaqiradi va keyin boshqa jarayon ishga tushiriladi. Va, bu holda, printerda kerakli satrni chop etish uchun chaqirilgan jarayon butun satr chop etilgunga qadar to'xtatiladi.
Quyida berilgan kod tizim chaqiruvida bajarilgan ishlarni ko'rsatadi.
foydalanuvchidan_kopyalash(bufer, p, hisoblash);
enable_interrupts();
while(*printer_status_reg != READY);
*printer_data_register = p[0];
rejalashtiruvchi ();
Endi, printer belgini chop etganda va satrdan keyingi belgini qabul qilishga tayyor bo'lganda, u uzilish hosil qiladi.
Bu erda uzilish joriy jarayonni to'xtatadi va uning holatini saqlaydi. Shundan so'ng printerni uzib qo'yishga xizmat ko'rsatish protsedurasi bajariladi. Printerda satrni chop etish jarayonini ko'rsatadigan kod:
agar (hisoblash == 0)
{
unblock_user();
}
boshqa
{
*printer_data_register = p[i];
hisoblash --;
i++;
}
acknowledge_interrupt();
return_from_interrupt();
Endi, agar kerakli satrdan chop etish uchun hech qanday belgilar qolmasa, uzilish ishlovchisi foydalanuvchini blokdan chiqarish uchun harakat qiladi. Aks holda, u satrdan keyingi qolgan belgini chiqaradi, uzilishlarni tan oladi va uzilish oldidan ishlayotgan jarayonga qaytadi, u to‘xtagan joydan davom etadi.
Uzilishga asoslangan kirish va chiqishning katta kamchiligi shundaki, uzilish satrning har bir belgisida sodir bo'ladi. Va siz bilganingizdek, uzilish vaqt talab etadi, shuning uchun bu usul markaziy protsessor (CPU) vaqtini behuda sarflaydi. Shuning uchun bu muammoni hal qilish DMA dan foydalanishdir. Keyingi bo'limda DMA (Direct Memory Access) yordamida kiritish va chiqarish haqida bilib olamiz.

Download 90.86 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling