1.95k likes | 2.2k Views
Input / output. Operativsystemer. Input / output. En datamaskin er gjerne koblet til utstyr som skjerm, tastatur, mus, harddisk, CD/DVD enheter, printer, … En viktig oppgave for et operativsystem er å kommunisere med enheter tilkoblet datamaskinen. Input / output.
E N D
Input / output Operativsystemer
Input / output • En datamaskin er gjerne koblet til utstyr som skjerm, tastatur, mus, harddisk, CD/DVD enheter, printer, … • En viktig oppgave for et operativsystem er å kommunisere med enheter tilkoblet datamaskinen. Operativsystemer
Input / output • Input/output utstyr kan deles i to kategorier etter hvordan det overfører data • Blokk utstyr • Bokstav utstyr Operativsystemer
Input / output • Blokk utstyr (block devices) lagrer data i blokker. • Hardisker, CD-ROM og USB-penner er eksempler på blokk utstyr. Operativsystemer
Input / output • Hver blokk har en adresse. • Vanlig størrelse på en blokk er mellom 512 bytes og 32768 bytes. Operativsystemer
Input / output • Bokstav utstyr (Character Devices) er en annen type input/output utstyr. • Bokstav utstyr sender og mottar data som bokstaver. Operativsystemer
Input / output • Eksempler på bokstav utstyr er tastatur, mus, skrivere og nettverktilkoblinger. • Utstyr som ikke er disker er oftest bokstav utstyr. Operativsystemer
Input / output • Input og output har vært et problem innen operativsystemer. • En årsak er den store forskjellen i hastigheter i et datamaskinsystem. Operativsystemer
Input / output Hastigheter for ulikt utstyr Tastatur 10 bytes / sekund Mus 100 bytes / sekund 72x CD-ROM 11 Mb / sekund SAS disk 129 Mb / sekund USB 3.0 400 MB/ sekund PCI buss 528 MB / sekund Operativsystemer
Input / output • I prosessor og minne behandles data veldig raskt. • Kommunikasjon med perifere enheter går til sammenligning svært langsomt. Operativsystemer
Input / output • Å skrive til skjerm er en langsom prosess. • Å skrive til fil er en langsom prosess. • En bruker som skriver på et tastatur venter ofte flere sekunder før han taster et tegn. Operativsystemer
Input / output • Å vente på input/output enheter er for prosessor dårlig utnyttelse av tiden. • For å unngå venting brukes derfor mekanismer som bufring og direkte tilgang til minne. Operativsystemer
Input / output • Enheter som knyttes til en datamaskin er av mange forskjellige fabrikater. • For eksempel er det mange typer skjermer og skrivere. Operativsystemer
Input / output • Det ville være tungvint hvis programmerere skulle lage kode for hver type skjerm eller skriver som skulle bruke programmet. • For at det ikke skal bli tungvint for programmer å kommunisere med I/O enheter tar operativsystemet seg av dette. Operativsystemer
Input / output • En programmerer kan for eksempel bruke WriteLine() i et program uten å behøve tenke på hva slags type skjerm som er knyttet til datamaskinen. Operativsystemer
Input / output • Operativsystemet tar seg av kommunikasjonen med skjerm, filer, printere og liknende. • Programmere behøver ikke tenke på dette når de lager programmer. • Programmer skal fungere på forskjellige maskiner som har ulikt utstyr tilkoblet. Operativsystemer
Input / output • Operativsystemet tar seg også av feil som kan oppstå ved kommunikasjon med input/output enheter. • Operativsystemet bør kunne • Oppdage feil. • Rette opp feil. Operativsystemer
Input / output • Det er mange feil som kan oppstå ved bruk av input/output enheter. • Operativsystemet bør for eksempel kunne oppdage om et program forsøker å skrive til en fil som er åpnet for lesing. • Operativsystemet bør også kunne gjenkjenne korrupte data. Operativsystemer
Input / output • Iblant lykkes operativsystemet med å rette opp feil som oppstår. • Klarer operativsystemet å rette opp en feil vil det normalt ikke gi beskjed om dette til programmet hvor feilen oppsto. Operativsystemer
Input / output • Kommunikasjon mellom programmer og perifert utstyr blir tatt hånd om av I/O subsystem. • I/O subsystem kalles den del av operativsystemet som tar seg av kommunikasjonen med skjerm, skrivere, filer, osv. Operativsystemer
Input / output • Før et program kan benytte en input/output enhet må det åpnes en forbindelse til den (Stream). • For eksempel skal et program åpne en fil benyttes funksjonskall som open(pathname, flags); Operativsystemer
Input / output • Følgende gir en oversikt over hva som skjer når en fil åpnes • Lete opp katalogen filen er på. • Hvis filen ikke fins, opprette den. • Sjekke rettigheter tilknyttet filen. • Sjekke om filen allerede er åpnet. • Lage datastrukturer som representerer. • Gi brukerprogram en peker til filen. Operativsystemer
Input / output • Når en datastrøm (Stream) er åpnet kan den være åpen så lenge vi ønsker. • Operativsystemet må imidlertid holde rede på datastrømmer som er åpne. • Operativsystemet har derfor en datastruktur for å holde rede på dette. Operativsystemer
Input / output • Før operativsystemet kan åpne en fil må det undersøke hvilken tilgang brukeren har til filen. • Det er mange forskjellige rettigheter som kan være til filer • Skrive, lese, endre, slette, … Operativsystemer
Input / output • Når et program åpner en fil blir dette registrert i en fildeskriptor. • Prosessen og alle tråder tilhørende prosessen har tilgang til denne fildeskriptoren. Operativsystemer
Input / output • Fildeskriptoren er en tabell som holder rede på åpne filer. • Hver gang et program åpner en fil blir det opprettet en ny rad i tabellen som har informasjon om filen som er åpnet. Operativsystemer
Input / output • Når en ny prosess starter blir det automatisk opprettet tre datastrømmer for prosessen. • Standard input // Tastatur • Standard output // Skjerm • Standard error // Skjerm Operativsystemer
Input / output • I forbindelse med filer har systemet to tabeller. • Lokal filtabell • Global filtabell Operativsystemer
Input / output • Systemet har en array med datastrukturer som kalles lokal filtabell. • Den lokale filtabellen innholder data om filen som er gitt med åpningen av filen. • Den lokale filtabellen inneholder data som er relevante for prosessen som har åpnet filen. Operativsystemer
Input / output • Det er også informasjon om åpne filer som ikke er av interesse for prosessen som har åpnet filen. • Slike data lagres i en global filtabell. Operativsystemer
Input / output • Input og output er langsomme prosesser. Dette innebærer at systemet må vente ved input/output. • Hvor lenge systemet må vente varierer. • Fra noen millisekunder for å lagre til disk og opp til flere minutter for å vente på tegn fra tastaturet. Operativsystemer
Input / output • Istedenfor å vente på input/output operasjoner ville det kanskje være bedre for en tråd å gjøre noe annet. • Men dette lar seg i mange tilfeller ikke gjøre. • Har man for eksempel i et program skrevet ReadLine(), kan ikke programmet forsette før det har lest inn dataene. Operativsystemer
Input / output • Ved output går det gjerne noe bedre. • Har vi skrevet WriteLine() i et program kan programmet som oftest fortsette uten å vente til utskriften har skjedd. Operativsystemer
Input / output • Det er to måter for en tråd å forholde seg til input/output. • Blokkering • Ikke blokkering Operativsystemer
Input / output • Ved blokkering vil et program vente med å fortsette inntil en input/output operasjon er utført. • Denne ventingen kan skje ved at tråden sover. Som ved Thread::Sleep(). • Blokkering kalles på engelsk for Synchronous I/O eller Wait I/O. Operativsystemer
Input / output • Ved ikke blokkering fortsetter programmet å kjøre uten å vente på at input/output operasjonen er utført. • Dette kalles på engelsk for Asynchronous I/Oeller Nowait I/O. Operativsystemer
Input / output • Ikke blokkering krever synkronisering i programkoden til programmet. • Synkronisering kan for eksempel skje ved hjelp av en semafor, som får programmet til å vente til det får et signal fra driveren. Operativsystemer
Input / output • Bruk av semafor ved ikke blokkering gir gjerne samme effekt som blokkering. • Men det er mulig at programmet utfører noe programkode før semaforen stopper programmet, for å vente på en input/output operasjon. Operativsystemer
Input / output • Ved output benyttes ofte et buffer. • Skal man for eksempel skrive til en skriver og skriveren er opptatt kan man skrive utskriften til et buffer isteden. • Programmet kan da fortsette og skriveren kan skrive ut innholdet i bufret når den er klar med andre oppgaver. Operativsystemer
Input / output • Fordelen ved å bruke buffer er at det sparer tid. • Straks et program har skrevet til bufret kan det fortsette. • En ulempe med bufring er at det krever plass på en harddisk. Operativsystemer
Input / output • Når en prosess skriver til en fil kan det være nødvendig å lukke tilgang til den for andre prosesser. • Mekanismer som lukker en fil eller en del av en fil kalles på engelsk for Locks. Operativsystemer
Input / output • Vi skal nå se på hvordan operativsystemet kommuniserer med hardware. • Det som skal skje er at signaler fra perifert utstyr som for eksempel tastatur skal overføres til datamaskinens minne. Operativsystemer
Input / output • En måte å ta vare på data fra tastaturet på er å legge det i et register. • Da kan prosessor sjekke registeret ved jevne mellomrom og oppdatere programmer med disse dataene. • Denne metoden kalles Polling. Operativsystemer
Input / output • Å bruke et register til å ta vare på tastatur trykk har den ulempen at lesing og skriving til registeret ikke er synkronisert. • Skrivingen til registeret kan gå fortere enn lesingen eller omvendt. Operativsystemer
Input / output • Et tastetrykk kan bli overskrevet fordi det kommer to trykk etter hverandre før prosessor har lest registeret. • Eller prosessor kan lese inn det samme tastetrykket to ganger fordi det ikke har kommet noe nytt. Operativsystemer
Input / output • For å løse dette problemet brukes to registre • Et register som tar vare på tastetrykket. • Et register som viser status. Det vil si om prosessor har lest registeret eller ikke. Operativsystemer
Input / output • Ved Polling kontrollerer prosessor registrene med jevne mellomrom. • Dette er imidlertid en tungvint metode fordi det er mange registre. • Hver perifer enhet har registre. Operativsystemer
Input / output • Polling metoden er ikke god fordi det mangler synkronisering. • Prosessor kan sjekke på feil tidspunkt. Enten er det ikke noe i registrene eller de er overfylt. Operativsystemer
Input / output • Derfor benyttes avbruddssignaler (Interrupts). • Interrupts gjør at hver perifer enhet kan gi beskjed til prosessor om at nå er det noe nytt i registeret. Operativsystemer
Input / output • Ved å bruke avbruddssignaler kan prosessor holde på med sitt uten å tenke på perifere enheter. • De perifere enhetene gir beskjed til prosessor, når de har data til prosessor. Operativsystemer