I linguaggi di alto livello spesso espongono l'astrazione I / O basata sul flusso al programmatore, dove i flussi bloccanti o non bloccanti offrono select
/ read
/ write
operazioni. (AFAIK, l'I / O basato sul messaggio sembra di solito un'astrazione di livello ancora superiore costruita sopra i flussi.)
Ma a livello basso, la comunicazione tra CPU e dispositivi hardware utilizza interrupt, I / O programmati (polled) o DMA.
Come possono tutti mappare bene nella stessa astrazione di I / O del flusso che (per quanto posso dire) nasconde completamente la differenza tra questi modelli di basso livello molto diversi? Esistono casi in cui uno sviluppatore di alto livello che utilizza l'astrazione di I / O del flusso dovrebbe effettivamente preoccuparsi della differenza tra I / O gestito da interrupt e programmato?