Ներածում և արտածում

Հաշվարկման մեջ ներածում-արտածումը կամ կրճատ Ն-Ա-ը ինֆորմացիան գործարկող համակարգի (ինչպիսին համակարգիչն է) և արտաքին աշխարհի միջև հաղորդակցությունն է։ Ներածումը այն կանչերը կամ ինֆորմացիան են, որը ստացվում է համակարգի կողմից, իսկ արտածումը` այն կանչերն ու ինֆորմացիան, որ ուղարկվում են համակարգից։ Տերմինները կարող են օգտագործվել նաև որպես գործողության մաս` կատարել ներածման-արտածման գործողություն։
Ն-Ա սարքերը մարդու կամ այլ համակարգի կողմից օգտագործվող սարքախմբի մասեր են, որոնց միջոցով հաղորդակցվում են համակարգչի հետ։ Օրինակ` ստեղնաշարի համակարգչային մկնիկը համակարգչի համար մուտքային սարք է, իսկ մոնիտորները և տպիչները արտածման սարքեր են։ Համակարգիչների հետ հաղորդակցվելու այնպիսի սարքերը, ինչպիսիք են մոդեմները և ցանցային քարտերը, սովորաբար կատարում են թե' ներածման, թե' արտածման գործողություններ։
Իսկ թե սարքը նկարագրվում է որպես ներածման կամ արտածման սարք, կախված է առանձին դեպքերից։ Մկնիկը և ստեղնաշարը հասկանում են օգտագործողի ֆիզիկական շարժումները և փոխակերպում են դրանք ներածական կանչերի, որոնք համակարգիչը կարող է հասկանալ. այս սարքերից արտածումը համակարգչի ներածումն է։ Նույն ձևով` տպիչները և էկրանը վերցնում են կանչերը, որոնք համակարգիչը արտածում է որպես ներածում և փոխակերպում են դրանք այնպիսի ներկայացման, որ օգտագործող մարդիկ կարողանան հասկանալ։ Օգտագործող մարդկանց տեսանկյունից այս ներկայացումները կարդալը կամ տեսնելը ներածում ստանալն է։ Համակարգիչների եւ մարդկանց` այս տեսակի կապը ուսումնասիրվում է մարդ-համակարգիչ փոխազդեցության ոլորտում։
Համակարգչի կառուցվածքում CPU-ի և հիմնական հիշողության համադրությունը, որտեղ CPU-ն կարող է անմիջական կարդալ կամ գրել` օգտագործելով անհատական կառույցներ, համարվում է համակարգչի ուղեղը։ CPU/հիշողություն կոմբինացիայում ինֆորմացիայի ցանկացած ուղղությամբ տեղափոխությունը, ինչպես սկավառակի կրիչից ինֆորմացիա կարդալը, համարվում է Ն-Ա ։ CPU- ն և նրա օժանդակ սխեմաները կարող են տրամադրել հիշողությամբ քարտեզագրված Ն-Ա- ը, որն օգտագործվում է ցածր մակարդակի համակարգչային ծրագրավորման մեջ (ինչպիսիք են սարքավարների իրականացումը) կամ կարող են ապահովել Ն-Ա ալիքների հասանելիությունը։ Ն-Ա ալգորիթմը նախատեսված է, որ օգտագործի տիրույթը և արդյունավետ գործի ինֆորմացիան երկրորդային պահեստավորման սարքերի հետ փոխանակելիս, ինչպիսին է սկավառակի կրիչը։


== Միջերես ==
Ն-Ա միջերես է պահանջվում, հենց որ Ն-Ա սարքը գործարկվում է պրոցեսորի կողմից։ Սովորաբար CPU-ն հաղորդակցվում է սարքերի հետ կայանի միջոցով։ Միջերեսը պետք է ունենա անհրաժեշտ տրամաբանությունը` պրոցեսորի գործարկած սարքի հասցեն մեկնաբանելու համար։ Հաղորդակցությունը պետք է իրականացվի միջերեսի կողմից համապատասխան հրամանների միջոցով (ինչպես ԶԲԱՂՎԱԾ Է, ՊԱՏՐԱՍՏ Է, ՍՊԱՍՈՒՄ Է), և պրոցեսորը կարող է հաղորդակցվել Ն-Ա սարքի հետ միջերեսի միջոցով։ Եթե ​​տարբեր ձեւաչափերի տվյալներ են փոխանակվում, ապա միջերեսը պետք է կարողանա հաջորդական տվյալները փոխանակել համապատասխան ձևի եւ հակառակը։ Քանի որ պրոցեսորի անգործությունը ժամանակի կորուստ է, քանի դեռ այն սպասում է ներածման սարքերից ինֆորմացիայի մուտքի, պետք է ընդհատումների  մշակման կանոններ լինեն, և համապատասխան տիպի թվերը անհրաժեշտության դեպքում պրոցեսորի կողմից պիտի մշակվեն։
Համակարգիչը, որ օգտագործում է հիշողության քարտեզավորման Ն-Ա, սարքերին դիմում է` կարդալով կամ գրելով հիշողության հատուկ հասցեներ`օգտագործելով ասեմբլերով գրված նույն հրամանները, որոնք սովորաբար օգտագործում է համակարգիչը հիշողությանը դիմելու համար։ Այլընտրանքային մեթոդ է հրամանների վրա հիմնված Ն-Ա-ը, որը պահանջում է` CPU-ն ունենա հատուկ հրամաններ Ն-Ա-ն համար։ Թե' ներածման, թե' արտածման սարքերը ունեն ինֆորմացիա մշակող դասակարգում, որը կարող է մեծապես տարբերվել  : Որոշ սարքերի հետ, որոնք կարող են ինֆորմացիան չափազանց արագ տեղափոխել հիշողության հատուկ հասցե, պահանջվում է, որ գործողությունը կատարեն առանց CPU-ի հաջորդական օգնության։


=== Իրականացումը բարձր մակարդակում ===
Ավելի բարձր մակարդակի օպերացիոն համակարգերը և ծրագրավորան առանձնահատկությունները ունեն առանձին, ավելի աբստրակտ Ն-Ա գաղափարներ և սահմանումներ։ Օրինակ` շատ օպերացիոն համակարգեր ապահովում են հավելվածային ծրագրերին ֆայլերի գաղափարով։ C և C++ ծրագրավորման լեզուները և Unix ընտանիքի օպերացիոն համակարգերը ավանդաբար հոսքերի են վերածում ֆայլերը և սարքերը, որոնցում կարելի է կարդալ, գրել կամ էլ երկուսը միաժամանակ։ C ստանդարտ գրադարանը ապահովում է ներածման և արտածման համար հոսքերին կառավարող ֆունկցիաներ։
ALGOL 68 ծրագրավորման լեզվում ներածում և արտածում գաղափարները ընդհանրական հասկացվում են փոխանցում։ ALGOL 68-ի փոխանցման գրադարանը ճանաչում է հետևյալ ստանդարտ ֆալերը և սարքերը` stand in, stand out, stand errorsևstand back:
Հատուկ պարագույն ֆունկցիաներին այլընտրանք կարող է լինել Ն-Ա մոնադը, որը թույլատրում է խրագրերին պարզապես նկարագրել Ն-Ա-ը, իսկ գործողությունները արվում են ծրագրից դուրս։ Սա նշանակալի է, որովհետև Ն-Ա ֆունկցիաները կարող են կողմնակի ազդեցություն թողնել ցանկացած ծրագրավորման լեվի վրա, իսկ սա թույլ է տալիս` ամբողջովին ֆունկցիոնալ ծրագրավորումը լինի գործածական։


== Ն-Ա ալիք ==
Ն-Ա ալիքը պահանջում է այնպիսի հրահանգների կիրառում, որոնք հատուկ նախագծված են Ն-Ա գործողություններ իրականացնելու համար։ Ն-Ա հրահանգները վերաբերում են ալիքին կամ ալիքին և սարքին միաժամանակ։ Ալիքը միաժամանակ մուտք է գործում բոլոր անհրաժեշտ պահանջվող հասցեներ և վերահսկման տեղեկատվություն։ Սա նման է հիշողությանը անիմջական դիմելուն, բայց ավելի ճկուն է։


== Պորտերում քարտեզագրված Ն-Ա ==
Պորտերում քարտեզագրված Ն-Ա նույնպես պահանջում է հատուկ հրահանգների կիրառում։ Սովորաբար մեկ կամ ավելի պորտեր են կապվում սարքին և յուրաքանչյուրը հատուկ նպատակ ունի։ Պորտային համարները առանձին հասցեական տարածությունում են և օգտագործվում են նորմալ հրահանգներով։


== Հղումներ ==