2. Енгізу-шығаруды программалық қамтамасыз етудің прициптері мен есептері. Енгізу-шығарудың программалық қамтамасыз етілуін өңдеудің кілтті концепциясы құрылғыдан тәуелсіздік ретінде белгілі. Бұл концепция, алдын ала нақты құрылғыны көрсетпей-ақ, енгізу-шыгарудың кез-келген құрылғысына қатынауға қабілетті программаларды жазудың мүмкіндігі болып табылады. Бұл құрылғылардың ерекшеліктерімен байланысты барлық мәселелерді операциялық жүйе шешуге тиіс.
Енгізу-шығарудың программалық қамтамасыз етудің басқа маңызды аспектісі қателерді өңдеу болып табылады. Қателер мүмкіндігінше аппаратураға жақын өңделуі керек. Егер контроллер оқуда қате тапса, ол мүмкіндігінше бұл қатені өзі дұрыстауға тырысуы керек. Егер ол мұны істей аламаса, онда бұл қатені қондырғының драйвері, осы блокты тағы бір оқу арқылы өңдеуі керек.
Тағы бір кілтті сұрақ - деректерді тасымалдау әдісі болып саналады: синхронды (тосқауылдағыш) және асинхронды (үзілістермен басқарылатын). Енгізу-шығарудың кептеген операциялары физикалық деңгейде асинхронды болады, яғни орталық процессор деректер тасымалын іске қосады және үзіліс келгенге дейін баска нәрсемен айналысуға аттанады. Енгізу-шығарудың асинхронды болып табылатын операцияларының пайдаланушының программаларында тосқауылдар ретінде көрсетілуімен операциялық жүйе айналысады.
Енгізу-шығаруды программалық қамтамасыз етудің тағы бір аспектісі буферлеу. Құрылғыдан келетін деректер жиі соңында қайда бағытталса,
онда бірден сақталынбай қалады. Мысалы. желі бойынша десте келгенде, операциялық жүйе бұл дестені уақытша қайда сақтау керектігін, оның мазмұнын зерттеместем, оны қайда қоярын білмейді. Нақты уақьттың көптеген құрылғылары үшін деректердің түсу мерзімінің параметрлері маңызды болады (мысалы, дыбыстың санды қайта қалпына келтіру құрылғылары үшін), сондықтан алынған деректер шығу буферіне ертерек орналастырылғаны жөн, себебі қайта қалыптасқан программаның бұл деректерді буферден алу жылдамдығы буфердің толу жылдамдығынан тәуелсіз болуы керек. Осылайша дыбысты қайта бодырмауға болады. Буферлеуде енгізу-шығару операцияларының өнімділігін төмендетудің негізгі факторы болып аналатын белгілі мөлшердегі деректер көшірмесі болады. Жеке кұрылғылар және жалпылама қолданылатын қондырғылар -маңызды түсініктердің бірі. Енгізу-шығарудың, мысалы дискілер сияқты кейбір кұрылғыларымен бір уақытта пайдаланушылардың үлкен саны жұмыс істей алады. Бұл кезде, егер бірнеше пайдаланушылар бір дискіде бір уақытта файлдарды ашқанда, мәселе туындамауы керек. Жеке кұрылғы (дараланып колдаңылатын) түсінігін еңгізу, өзара тосқауылдау сияқты мәселелердің толық спектрінің туындауына әкеледі. Дегенмен, операциялық жүйе, әртүрлі потенциалды мәселелерді болдырмастан, жалпылама қатынау күрылғысында бөлінген жеке құрылғыны да басқара білуі тиіс.