De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Best8-1 Les 8: Input/Output [Lat: datarum initus exitusque]

Verwante presentaties


Presentatie over: "Best8-1 Les 8: Input/Output [Lat: datarum initus exitusque]"— Transcript van de presentatie:

1 best8-1 Les 8: Input/Output [Lat: datarum initus exitusque]

2 best8-2 I/O hardware Toetsenbord: 10 B/s Muis: 100 B/s Modem: 7 KiB/s Laserprinter: 100 KiB/s Scanner: 400 KiB/s Ethernet: 12.5 MB/s USB 1.0: 1,5MB/s CD-ROM: 6 MB/s FireWire: 50MB/s SCSI: 80MB/s Sun Gigaplane: 20 GB/s

3 best8-3 Kenmerken Input/Output AspectVariatieVoorbeeld TransfergrootteTeken Blok Terminal Disk ToegangsmethodeSequentieel Direct Modem CD-ROM TransferSynchroon Asynchroon Tape Toetsenbord DelenGedeeld Exclusief Toetsenbord Tape Snelheid10 B/s 80 MB/s Toetsenbord Disk IO-richtingRead-only Write-only Read-write CD-ROM Graphics controller Disk Doel IO: uniforme interface voor gebruiker, applicatie, kern

4 best8-4 Overzicht Situering IO-systeem –IO-bibliotheek –IO-subsysteem –Device drivers –Onderbrekingsroutines Schijfbeheer –Opbouw –Schijfplanning –RAID –Opslagsystemen

5 best8-5 Problematiek toetsenbord harde schijfCD-ROMmuis kern Communicatie met randapparaat gebeurt in systeemmode

6 best8-6 Interactie met randapparaten Geprogrammeerde overdracht Onderbrekingen Directe geheugentoegang (DMA)

7 best8-7 Geprogrammeerde I/O copy_from_user(buffer, p, count); for (i=0; i<count; i++) { while (*printer_status != READY) /* wacht */; *printer_data = p[i]; } copy_from_user(buffer, p, count); for (i=0; i<count; i++) { while (*printer_status != READY) /* wacht */; *printer_data = p[i]; }

8 best8-8 Onderbrekingen copy_from_user(buffer, p, count); while (*printer_status != READY) /* wacht */; enable_interrupt(PRINTER); *printer_data = p[0]; i = 1; wait(signaal); copy_from_user(buffer, p, count); while (*printer_status != READY) /* wacht */; enable_interrupt(PRINTER); *printer_data = p[0]; i = 1; wait(signaal); if (i > count) { disable_interrupt(PRINTER); signal(signaal); } else { *printer_data = p[i]; i++; } return_from_interrupt(); if (i > count) { disable_interrupt(PRINTER); signal(signaal); } else { *printer_data = p[i]; i++; } return_from_interrupt(); onderbrekingsroutine

9 best8-9 DMA copy_from_user(buffer, p, count); set_up_DMA (p, count, port); wait(signaal); copy_from_user(buffer, p, count); set_up_DMA (p, count, port); wait(signaal); signal(signaal); return_from_interrupt(); signal(signaal); return_from_interrupt(); onderbrekingsroutine Asynchrone communicatie

10 best8-10 Blokkerende en niet-blokkerende IO blokkerendniet-blokkerendasynchroon

11 best8-11 Overzicht Situering IO-systeem –IO-bibliotheek –IO-subsysteem –Device drivers –Onderbrekingsroutines Schijfbeheer –Opbouw –Schijfplanning –RAID –Opslagsystemen

12 best8-12 Uniforme interface toetsenbordharde schijfCD-ROMmuis kern blokapparatentekenapparaten IO-subsysteem

13 best8-13 kern IO-structuur

14 best8-14 Overzicht I/O Softwarelagen IO-bibliotheek IO-subsysteem Device drivers printf, scanf, >>, << write, read usb_write, usb_read usb_interrupt IO-bibliotheek IO-subsysteem Device drivers Onderbrekingen Hardware

15 best8-15 IO-bibliotheek vs. IO-subsysteem char buffer[N]; int sum = 0; int h = open(“t.t",O_RDONLY); while (sum < 8192*1024) { read(h, buffer, N); sum += N; } close(h); char buffer[N]; int sum = 0; FILE *h = fopen(“t.t","r"); while (sum < 8192*1024) { fread(buffer, 1, N, h); sum += N; } fclose(h); IO-bibliotheekIO-subsysteem

16 best8-16 IO-bibliotheek vs. IO-subsysteem 1 10 100 1000 10000 100000 12345678910111213141516171819200 read (syscall) fread (io-bib) ms log 2 (N)

17 best8-17 Uitvoeringstijd read vs. fread log 2 (N) ns 1 10 100 1000 10000 100000 1000000 10000000 12345678910111213141516171819200 read (syscall) fread (io-bib) Kost syscal overweegt Kopieerkost overweegt 5 μs 70 ns 1,6-2,0 ns/byte

18 best8-18 IO-subsysteem IO Planning Buffering Caches Spooling Foutafhandeling Apparaatbeheer IO-subsysteem read/write

19 best8-19 IO-Planning IO-subsysteem Device driver ?

20 best8-20 Buffering 100 MiB/S10 MiB/S 10 KiB 1 KiB 10 KiB 1MiB/s Snelheidsverschil overbruggen Verschil in blokgrootte overbruggen Kopieersemantiek bewaren

21 best8-21 Caches OmstandigheidUitvoeringstijd Eerste keer249 ms Tweede keer25 ms Na enige tijd140 ms Lezen van 8 MiB in 8 blokken van 1 MiB

22 best8-22 Spooling Device driver IO-subsysteem Printer daemon Proces 1Proces 2

23 best8-23 Foutafhandeling int h = open(“…); if (h == -1) { printf(“%d\n”, errno); printf(“%s\n”, strerror(errno)); perror(“testprogramma”); }./a.out 2 No such file or directory testprogramma: No such file or directory

24 best8-24 Apparaatbeheer Beheer ondeelbare apparaten –Via open() en close() op speciale bestanden. Indien apparaat in gebruik, faalt de open(). –Soms zijn er speciale primitieven die blokkeren indien het apparaat in gebruik is (allocate/deallocate).

25 best8-25 Overzicht I/O Software lagen IO-bibliotheek IO-subsysteem Device drivers printf, scanf, >>, << write, read usb_write, usb_read usb_interrupt IO-bibliotheek IO-subsysteem Device drivers Onderbrekingen Hardware

26 best8-26 Device drivers Blokapparaten Tekenapparaten Netwerkapparaten Andere (klokken, timers,…)

27 best8-27 Blokapparaten Leest/schrijft per blok (typisch 512 bytes) Adresseerbaar, kan elk blok apart benaderen (random access) Operatie: ioctl Vaak gelinkt met een bestandssysteem Vb: schijf Blokken kunnen in het geheugen afgebeeld worden (memory mapped files).

28 best8-28 Tekenapparaten Leest/schrijft stroom van bytes Niet adresseerbaar (sequentiële toegang) Operaties: read, write Soms interactieve editeermogelijkheden Vb: toetsenbord, muis, seriële poort

29 best8-29 Netwerkapparaten Verschillen voldoende van blok- en tekenapparaten om een eigen interface te hebben. Unix en Windows voorzien in een socketinterface –Scheiding tussen protocol en werking van het netwerk –Biedt een select functie aan Vb: sockets, maar ook pipes, FIFOs, streams, queues, mailboxes

30 best8-30 Klokken en Timers Basisfuncties: huidige tijd, verstreken tijd, timer Programmeerbare intervaltimer wordt gebruikt b.v. om een tijdskwantum af te bakenen, om processen te alarmeren op een afgesproken tijdstip, als waakhond, of om te profileren. De aansturing van de timers gebeurt doorgaans via ioctl (bij gebrek aan beter)

31 best8-31 Kloksoftware: tijd bijhouden Tijd sinds 1 januari 1970 (Unix) 1980 (Windows) Synchronisatie  computers over netwerk: NTP (network time protocol) 60 kloktikken/seconde: 32 bit gaat maar voor 2 jaar → meer bits nodig.

32 best8-32 Kloksoftware: alarmeren van processen Huidige tijd 45 560 timerlijst45 60045 65345 800 PCB Timerwaarde 40 softwaretimers

33 best8-33 Windows Device Driver Model IO Request Packet

34 best8-34 Unix Special Files mknod naam c major minor mknod naam b major minor mknod naam p mknod naam c major minor mknod naam b major minor mknod naam p In /dev directory driverrandapparaat

35 best8-35 Device tabel init open close write read ioctl intr strategy 1 2 3 4 5 6 7 8 9 10 11... Device major number

36 best8-36 Voorbeeld #include #define DEVICE ”/dev/ttyp5” main() { int handle = open(DEVICE,O_WRONLY); if (handle != -1) { write(handle, ”Hallo\n”, 6); close(handle); } else fprintf(stderr, ”Cannot open %s\n”,DEVICE); }

37 best8-37 Unix System V Streams

38 best8-38 Prestaties IO is een belangrijke factor in de prestatie van een systeem (zeker voor b.v. databanken en webservers). –De driver moet zo efficiënt mogelijk gecodeerd worden, de aanwezige hardware moet maximaal geëxploiteerd worden (b.v. DMA) –Het aantal contextwisselingen (incl. onderbrekingen) moet tot het minimum beperkt worden –Het kopiëren van data moet zoveel mogelijk beperkt worden

39 best8-39 Overzicht Situering IO-systeem –IO-bibliotheek –IO-subsysteem –Device drivers –Onderbrekingsroutines Schijfbeheer –Opbouw –Schijfplanning –RAID –Opslagsystemen

40 best8-40 Formattering 1.Fysieke formattering: verkaveling van de schijfoppervlakte in sporen en sectoren. 2.Partitioneren: aanbrengen van partities + master boot record. 3.Logische formattering: aanbrengen in een partitie van de boot sector en leeg bestandssysteem preamble dataecc preamble dataeccvrij preamble: synchronisatiepatroon, ID ECC (paar % overhead) Vrij: veiligheidsmarge

41 best8-41 Schijfgeometrie

42 best8-42 Cilinderverschuiving (cylinder skew)

43 best8-43 Indeling: interleaving

44 best8-44 Foutafhandeling: Magnetische fouten Sector slippingSector forwarding

45 best8-45 CD-ROM Muziek: symbolen en frames; 2x foutcorrectie Frame past niet echt bij data (588 bit = 73,5 B) Sector: 98 frames –bevat 2048 data bytes + 3e foutcontrole (ECC) Frame: totale omvang 7203 bytes, zeer veel overhead (251,7%)

46 best8-46 Schijfplanning 98, 183, 37, 122, 14, 124, 65, 67 De kop bevindt zich op spoor 53 Zoektijd Latentie Transfertijd

47 best8-47 First-Come First-Served (FCFS) Totale afgelegde afstand = 640 cilinders.

48 best8-48 Shortest Seek Time First (SSTF) Totale afgelegde afstand = 236 cilinders

49 best8-49 SCAN (busalgoritme) Totale afgelegde afstand 236 cilinders.

50 best8-50 C-SCAN Totale afgelegde afstand 382 cilinders.

51 best8-51 C-LOOK (liftalgoritme) Totale afgelegde afstand 322 cilinders.

52 best8-52 RAID Redundant Array of Independent/Inexpensive Disks Idee: meerdere schijven om de betrouwbaarheid en/of de prestatie te verhogen Transparant, lijkt op gewone enkele schijf Typisch SCSI schijven, nu ook IDE RAID controllers

53 best8-53 Betrouwbaarheid verhogen door redundantie Verlies van 1 schijf is geen ramp indien de informatie van de schijf kan gereconstrueerd worden. Systeem is kwetsbaar indien er tijdens de hersteltijd een tweede fout optreedt

54 best8-54 Prestatie verbeteren door parallellisme Indien informatie over verschillende schijven verspreid ligt, kunnen de verschillende schijven parallel gebruikt worden.

55 best8-55 RAID-0 Striping op sector/blokniveau 0123 4567 891011 Grote transfers: lees/schrijfsnelheid x N (N=4) Kleine transfers ≤ 1 blok: geen verbetering Grote bestanden: 1 schijf kapot: alle bestanden verloren

56 best8-56 RAID-1 mirroring 036 9 147 10 258 11 036 9 147 10 258 11 Leessnelheid x 2, schrijfsnelheid / 1,2 Capaciteit: /2

57 best8-57 RAID-0+1 Striping+mirroring 012 3 456 7 8910 11 012 3 456 7 8910 11 Leessnelheid: x 2N, schrijfsnelheid x N / 1,2 (N=4) Blokken 1-8 kunnen parallel gelezen worden Blokken 1-4 kunnen parallel geschreven worden

58 best8-58 RAID-1+0 Mirroring + striping 02 46 810 1 3 5 7 9 11 0 4 8 3 7 1 5 9 2 6 10

59 best8-59 RAID-2 Striping op bitniveau + ECC 012 3 456 7 8910 11 p0p1p2 p3p4p5 p6p7p8 ECC

60 best8-60 RAID-3 Striping op bitniveau + pariteit 012 3 456 7 8910 11 p0 p1 p2

61 best8-61 RAID-4 Striping op sector/blok-niveau + pariteit 012 3 456 7 8910 11 p0 p1 p2

62 best8-62 RAID-5 Striping op sector/blok-niveau + gedistribueerde pariteit 012 3 456 p1 89p2 10 p0 7 11

63 best8-63 RAID-6 Striping op sector/blok-niveau + 2 pariteitsbits 012 3 456 p1 89p2 p2’ p0 p1’ 10 p0’ 7 11

64 best8-64 Opslagsystemen Schijven kunnen verbonden worden met een computer 1.Via een IO-poort (IDE, SCSI) 2.Via een netwerk 1.NAS: Network attached storage 2.SAN: Storage area network

65 best8-65 Network-Attached Storage (NAS)

66 best8-66 Storage-Area Network (SAN)


Download ppt "Best8-1 Les 8: Input/Output [Lat: datarum initus exitusque]"

Verwante presentaties


Ads door Google