Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdVictor Smit Laatst gewijzigd meer dan 10 jaar geleden
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)
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.