Байланысты: 1 Негізгі ымдар мен аны тамалар Операциялы ж йе (ОЖ) (4)
2. Енгізу-шығару ағындары. Енгізу-шығаруды қорғау тәсілдері. Жадқа тікелей қол жеткізу. Жүйенің енгізу-шығаруды жадқа бейнелеуінің бар-жоғына қарамастан, орталық процессорға деректермен алмасу үшін құрылғылар контроллерлерін адрестеу қажет. Процессор контроллерден деректерді байт бойынша сұрауы мүмкін, бірақ егер құрылғыдан үлкен блоктарды алу қажет болса (мысалы, дисктен оқу барысыныда), уақыттың айтарлықтай бөлігі босқа кетеді. Осы себептен жадпен өзара әрекет ету үшін жадқа тікелей қол жеткізу (Direct Memory Access, DMA) деп аталатын басқа әдісті қолданады. Операциялық жүйе DMA-ны жадқа тікелеу қол жеткізу контроллері (DMA-контроллері) бар болған жағдайда ғана пайдалана алады. Көптеген компьютерлер осындай контроллермен жабдықталған. Кейде DMA-контроллерді басқа контроллерлерге қояды (мысалы, дискілік), бірақ бұл жағдайда ол әрбір құрылғыға қажет болады. Көбінесе жүйелерді әдетте аналық платада орналасатын жалғыз DMA-контроллермен жабдықтайды. Ол көптеген енгізу-шығару құрылғыларында деректер алмасуды басқарады және көбіне параллель түрде. DMA-контроллер қайда орналасса да ол процессордан тәуелсіз жүйелік шинаға қол жеткізе алады. (8.2-сурет). DMA-контроллердің оқу және жазу үшін процессорға қол жетерлік бірнеше регистрлері бар: адрес регистрі, байттар есептегіші және бірқатар басқару регистрлері. Соңғысы енгізу-шығарудың пайдаланылатын портын, деректермен алмасу бағытын (оқу немесе жазу), алмасу бірлігін (байт немесе сөз) және бір циклде берілетін байттар санын анықтайды.
Сурет 8.2 – DMA-контроллерлерінің жұмысы
DMA функциялау принципін түсіндіру үшін бірінші жадқа тікелей қол жеткізу жоқ кезде дисктен оқу қалай іске асатынын анықтап алайық. Алғашында контроллер бит бойынша контроллердің ішкі буферіне жеткенге дейінгі блокты (бір немесе бірнеше секторды) оқиды. Ары қарай бақылау суммасы есептеледі және қателер тексеріледі. Содан кейін үзілу генерацияланады. Операциялық жүйе іске қосылып тұрған уақытта ол контроллер буферінен жіберілген блокты оқи алады. оқу байт немесе сөз бойынша циклдық түрде іске асырылады. Байтты (сөзді) оқып болғаннан кейін ол негізгі жадқа сақталады, жад адресі инкременттеледі, қалған элементтер есептегіші декременттеледі. Есептегіш мәні нөлге тең болғанда цикл тоқтайды.
Жадқа тікелей қол жеткізу сипатталған процедураны өзгертеді. Алғашында процессор DMA-контроллерінің регистрлеріне контроллерге нені және қайда жіберуді көрсететін мәндерді жаза отырып, DMA-контроллерді бағдарламалайды (8.2-сурет). Содан кейін контроллерге деректерді дисктен өзінің ішкі буферіне оқу және бақылау суммасын тексеру командасы жіберіледі. Контроллер буферінде дұрыс деректер пайда болғаннан кейін DMA жұмысқа кірісе беруіне болады.
DMA-контроллер дискілік контроллерге шина арқылы оқуға сұраныс жібере отырып деректерді тасымалдауды бастайды (2-қадам). Бұл сұраныс әдеттегі оқуға сұраныс сияқты болады, сондықтан диск контроллері оның орталық процессордан немесе DMA-контроллерден түскенін білмейді. Әдетте, жад адресі адрестік шинада болады, сәйкесінше диск контроллері әрдайым өзінің ішкі буферіндегі келесі сөзді қайда жіберетінін біледі. Жадқа жазу шинаның тағы бір стандартты циклы болып табылады (3-қадам). Ажзба аяқталса, диск контроллері шина арқылы DMA-контроллерге растау сигналын жібереді (4-қадам). Содан кейін DMA-контроллер жадтың пайдаланылып отырған адресін инкременттейді және байттар есептегішінің мәнін декременттейді. Содан кейін есептегіш мәні нөлге тең болғанша 2-4 қадамдар қайталанады. Көшіру циклі аяқталғаннан кейін DMA-контроллер процессор үзілуін инициализациялайды. Операциялық жүйеге блокты дисктен жадқа көшірудің қажеті жоқ. Ол бұл сәтте сол жерде болады.