Ingång/utgång

Inom databehandling är input/output ( I/O , i/o eller informellt io eller IO ) kommunikationen mellan ett informationsbehandlingssystem, såsom en dator , och omvärlden , möjligen ett mänskligt eller annat informationsbehandlingssystem. Ingångar är de signaler eller data som tas emot av systemet och utgångar är de signaler eller data som skickas från det. Termen kan också användas som en del av en handling; att "utföra I/O" är att utföra en ingångs- eller utmatningsoperation .

I/O-enheter är de delar av hårdvara som används av en människa (eller annat system) för att kommunicera med en dator. Till exempel är ett tangentbord eller datormus en inmatningsenhet för en dator, medan bildskärmar och skrivare är utdataenheter . Enheter för kommunikation mellan datorer, såsom modem och nätverkskort , utför vanligtvis både inmatnings- och utmatningsoperationer. Varje interaktion med systemet av en interaktör är en ingång och reaktionen som systemet reagerar på kallas utdata.

Beteckningen av en enhet som antingen ingång eller utgång beror på perspektiv. Möss och tangentbord tar fysiska rörelser som den mänskliga användaren matar ut och omvandlar dem till insignaler som en dator kan förstå; utgången från dessa enheter är datorns ingång. På liknande sätt tar skrivare och bildskärmar signaler som datorer matar ut som indata, och de omvandlar dessa signaler till en representation som mänskliga användare kan förstå. Ur den mänskliga användarens perspektiv får processen att läsa eller se dessa representationer output; denna typ av interaktion mellan datorer och människor studeras inom området människa–datorinteraktion . En ytterligare komplikation är att en enhet som traditionellt anses vara en inmatningsenhet, t.ex. kortläsare, tangentbord, kan acceptera kontrollkommandon för att t.ex. välja staplare, visa tangentbordslampor, medan en enhet som traditionellt anses vara en utenhet kan tillhandahålla statusdata, t.ex. , låg toner, slut på papper, pappersstopp.

I datorarkitektur anses kombinationen av CPU och huvudminne , till vilken CPU:n kan läsa eller skriva direkt med hjälp av individuella instruktioner , som hjärnan i en dator. All överföring av information till eller från CPU/minne-kombinationen, till exempel genom att läsa data från en diskenhet , anses vara I/O. CPU:n och dess stödjande kretsar kan tillhandahålla minnesmappad I/O som används i lågnivådatorprogrammering, såsom vid implementering av enhetsdrivrutiner , eller kan ge åtkomst till I/O-kanaler . En I/O-algoritm är en som är utformad för att utnyttja lokalitet och prestera effektivt vid datautbyte med en sekundär lagringsenhet, såsom en diskenhet.

Gränssnitt

Ett I/O-gränssnitt krävs när I/O-enheten drivs av en processor. Vanligtvis kommunicerar en CPU med enheter via en buss . Gränssnittet måste ha den nödvändiga logiken för att tolka enhetsadressen som genereras av processorn. Handskakning bör implementeras av gränssnittet med hjälp av lämpliga kommandon (som UPPTAGEN, READY och WAIT), och processorn kan kommunicera med en I/O-enhet via gränssnittet. Om olika dataformat utbyts måste gränssnittet kunna konvertera seriedata till parallell form och vice versa. Eftersom det skulle vara ett slöseri för en processor att vara ledig medan den väntar på data från en inmatningsanordning måste det finnas möjlighet att generera avbrott och motsvarande typnummer för vidare bearbetning av processorn om så krävs. [ förtydligande behövs ]

En dator som använder minnesmappad I/O får åtkomst till hårdvara genom att läsa och skriva till specifika minnesplatser, med samma instruktioner för assemblerspråk som datorn normalt skulle använda för att komma åt minnet. En alternativ metod är via instruktionsbaserad I/O som kräver att en CPU har specialiserade instruktioner för I/O. Både in- och utenheter har en databehandlingshastighet som kan variera kraftigt. Med vissa enheter som kan utbyta data i mycket höga hastigheter krävs direkt åtkomst till minne (DMA) utan kontinuerlig hjälp av en CPU.

Implementering på högre nivå

Operativsystem och programmeringsfaciliteter på högre nivå använder separata, mer abstrakta I/O-koncept och primitiver . Till exempel tillhandahåller de flesta operativsystem applikationsprogram med konceptet filer . Programmeringsspråken C och C++ , och operativsystem i Unix- familjen, abstraherar traditionellt filer och enheter som strömmar , som kan läsas eller skrivas, eller ibland båda. C -standardbiblioteket tillhandahåller funktioner för att manipulera strömmar för input och output.

I samband med programmeringsspråket ALGOL 68 kallas in- och utmatningsfaciliteterna gemensamt för transput . ALGOL 68- transputbiblioteket känner igen följande standardfiler/enheter: stand in , stand out , stand errors och stand back .

Ett alternativ till speciella primitiva funktioner är I/O-monaden , som tillåter program att bara beskriva I/O, och åtgärderna utförs utanför programmet. Detta är anmärkningsvärt eftersom I/O -funktionerna skulle introducera sidoeffekter för alla programmeringsspråk, men detta gör att rent funktionell programmering är praktisk.

Kanal I/O

Channel I/O kräver användning av instruktioner som är specifikt utformade för att utföra I/O-operationer. I/O-instruktionerna adresserar kanalen eller kanalen och enheten; kanalen kommer asynkront åt all annan erforderlig adresserings- och kontrollinformation. Detta liknar DMA, men mer flexibelt.

Portmappad I/O

Portmappad I/O kräver också användning av speciella I/O-instruktioner. Vanligtvis är en eller flera portar tilldelade enheten, var och en med ett speciellt syfte. Portnumren finns i ett separat adressutrymme från det som används av vanliga instruktioner.

Direkt minnesåtkomst

Direkt minnesåtkomst (DMA) är ett sätt för enheter att överföra stora bitar av data till och från minnet oberoende av CPU.

Se även

externa länkar