Operativsystem - input/output, skydd, virtualisering Mats Björkman 2015-03-12
Lärandemål, I/O n Typer av I/O-enheter n Character, Block & Special n Minnesmappad I/O n Typer av I/O-programmering n Programmerad, interrupt-driven & I/O genom DMA n I/O-abstraktionsskikt Operativsystem, Mats Björkman, MDH 2
Varför I/O? 3
Kontroll av periferienheter En I/O-enhet består typiskt av: 1. En elektronisk del (styrenhet, device controller) 2. En mekanisk del (själva enheten) Disk Disk Printer DVD CPU Memory Disk controller Printer controller DVD controller System bus Operativsystem, Mats Björkman, MDH 4
I/O-enheter I/O enheter kan vara av två olika typer: n n Block devices Character devices Det finns en del enheter (special devices) som är varken eller, exempelvis: n Klocka Operativsystem, Mats Björkman, MDH 5
Block devices n Data till och från block devices hanteras i block som kan adresseras n Hårddisk är typexemplet Operativsystem, Mats Björkman, MDH 6
Character devices n Skickar/tar emot en ström av tecken (characters) n Exempel: Tangentbord, mus, nätverkskort, skrivare n Fungerar inte som permamentlagring Operativsystem, Mats Björkman, MDH 7
Separat eller minnesmappad I/O Alla I/O-styrenheter har en uppsättning register som används för kommunikation med CPU:n. Dessa register kan antingen vara separata (I/O-mappade) eller mappade i minnet (minnesmappade) I/O registers Memory space Memory space I/O registers Separat Minnesmappad Operativsystem, Mats Björkman, MDH 8
Kontrollregister och dataregister n Många I/O-enheter har separata register för kontroll av enheten respektive för att läsa/skriva data från/ till enheten Operativsystem, Mats Björkman, MDH 9
I/O-mappad I/O n Fördel: Många I/O-enheter är inte minne! n Nackdel: Kräver specialinstruktioner för access, ofta inte tillgängligt från högnivåspråk Operativsystem, Mats Björkman, MDH 10
Minnesmappad I/O n Fördel: Kan använda vanliga minnesinstruktioner för access n Kan använda virtuellminnesskyddet för att skydda I/O-enheterna n Nackdel: Behöver sätta minnet till ocachebart för att få rätt beteende Operativsystem, Mats Björkman, MDH 11
I/O-programvara Tre principiella sätt att implementera I/O i programvara: n n n Programmerad I/O (pollning, busy waiting) Interrupt-driven I/O I/O via Direct Memory Access (DMA) SYNCHRONOUS ASYNCHRONOUS Exempel: Fest med gäster Exempel: skriva på skrivare Operativsystem, Mats Björkman, MDH 12
Programmerad I/O copy_from_user(usr_buffer &p, &count); for(i=0;i<count;i++) { while(*printer_status_reg!=ready); *printer_data_register=p[i]; } return_to_user(); Operativsystem, Mats Björkman, MDH 13
Programmerad I/O forts. Fördelar: n Lätt att programmera och förstå Nackdelar: n Använder CPU:n vid väntan på I/O (busy waiting) Operativsystem, Mats Björkman, MDH 14
Interrupt-driven I/O copy_from_user(usr_buffer &p, &count); while(*printer_status_reg!=ready); *printer_data_reg=p[0]; block_and_schedule(); if(count==0) unblock_user(); else { *printer_data_reg=p[i]; count--; i++; } acknowledge_interrupt(); return_from_interrupt(); Operativsystem, Mats Björkman, MDH 15
Interrupt-driven I/O forts. Fördelar: n Programmet kan göra andra saker (eller blockeras) medan man väntar på I/O Nackdelar: n Mer komplext och svårprogrammerat n CPU:n får (alltför) många interrupts Operativsystem, Mats Björkman, MDH 16
I/O genom DMA copy_from_user(usr_buffer &p, &count); setup_dma_controller(); block_and_schedule(); acknowledge_interrupt(); unblock_user(); return_from_interrupt(); Operativsystem, Mats Björkman, MDH 17
Direct Memory Access (DMA) CPU DISK CONTROLLER MEMORY! Registers that! can be read and written by the CPU CPU DISK CONTROLLER DMA CONTROLLER MEMORY SYSTEM BUS! Address: Count: 23 45 43 21 0 SYSTEM BUS Operativsystem, Mats Björkman, MDH 18
I/O genom DMA forts. Fördelar: n CPU:n behöver inte lastas ner av interrupts under överföringen av en lång sekvens data Nackdelar: n Behöver DMA-controllers n Overhead att sätta upp DMA-controllern n Måste hantera cachekonsistens Operativsystem, Mats Björkman, MDH 19
I/O - abstraktionsskikt Vanliga användare vill slippa alltför låg nivå på I/Ohanteringen Vi behöver abstraktioner som ger: n n n n Ett oberoende av enheternas fysiska egenheter Uniform namngivning Felhantering så nära hårdvaran som möjligt Ett synkront utseende på asynkrona enheter Operativsystem, Mats Björkman, MDH 20
I/O abstraktionsskikt forts. Dessa krav kan uppfyllas genom fyra abstraktionsskikt: Användarprogram Enhetsoberoende operativsystemsrutiner Drivrutiner Interrupthanterare H Å R D V A R U P L A T T F O R M Operativsystem, Mats Björkman, MDH 21
Användarprogram Användarprogram Enhetsoberoende operativsystemsrutiner Drivrutiner Interrupthanterare Användarprogram kommer åt I/O-operationer genom systemanrop till biblioteksrutiner, som: n n n write() read() m.m. I/O på användarnivå innehåller också formatering och buffring: n printf(format string, list of expressions) H Å R D V A R U P L A T T F O R M Operativsystem, Mats Björkman, MDH 22
Användarprogram Enhetsoberoende operativsystemsrutiner Enhetsoberoende n Namngivning n Skydd Drivrutiner Interrupthanterare H Å R D V A R U P L A T T F O R M n Buffring n Allokering / Blockering A program that reads a file as input should be able to read a file on a floppy disk, a hard disk or a DVD without having to modify the program for each different device. - Tanenbaum Operativsystem, Mats Björkman, MDH 23
Drivrutiner Användarprogram Enhetsoberoende operativsystemsrutiner Drivrutiner Interrupthanterare En drivrutin: H Å R D V A R U P L A T T F O R M Den del av den I/O-hanterande programvaran som är beroende på den fysiska enheten separeras ofta från de delar som är enhetsoberoende. Den enhetsberoende delen brukar kallas drivrutin eller device driver. n Tolkar högnivåkommandon från övre skikt n Ser till att dessa utförs genom att ge enhetsspecifika kommandon till enheten via dess kontrollregister Drivrutiner exekverar i kernel mode, så de är mycket känsliga för fel Operativsystem, Mats Björkman, MDH 24
Interrupthanterare Användarprogram Enhetsoberoende operativsystemsrutiner Drivrutiner Interrupthanterare H Å R D V A R U P L A T T F O R M Interrupthanteraren tar hand om det praktiska i hanteringen mellan hårdvaruplattformen och drivrutinerna Operativsystem, Mats Björkman, MDH 25
I/O abstraktionsskikt, summering Användarprogram Enhetsoberoende operativsystemsrutiner Drivrutiner Interrupthanterare Gör I/O-anrop, formaterar I/O, buffring Namngivning, skydd, blockering, allokering Styr enheten via register, kontrollerar status Väcker upp drivrutinen när I/O är klar H Å R D V A R U P L A T T F O R M Utför den egentliga I/O-operationen Operativsystem, Mats Björkman, MDH 26
Lärandemålen I/O igen n Typer av I/O-enheter n Character, Block & Special n Minnesmappad I/O n Typer av I/O-programmering n Programmerad, interrupt-driven & I/O genom DMA n I/O-abstraktionsskikt Operativsystem, Mats Björkman, MDH 27
Lärandemål skydd n Skydd i ett operativsystem n Accessmatrisen n Accesskontrolllistor n Capabilities Operativsystem, Mats Björkman, MDH 28
Skydd i ett operativsystem n Vi har tidigare talat om: n Skydd mellan process och OS n Skydd mellan processer n Skydd för filer Operativsystem, Mats Björkman, MDH 29
Skydd i ett operativsystem n Mål för skyddsmekanismer: n Konfidentialitet obehöriga skall inte komma åt data n Dataintegritet obehöriga skall inte kunna manipulera data n Tillgänglighet obehöriga skall inte kunna hindra rättmätiga användare från att använda systemet Operativsystem, Mats Björkman, MDH 30
Modell av OS-skydd Operativsystem, Mats Björkman, MDH 31
Skydd i ett operativsystem n Generellt sett måste OS:et för varje objekt i systemet (exv. process, fil, ) ha en policy för vem som får accessa objektet Operativsystem, Mats Björkman, MDH 32
Accessmatrisen n Accessmatrisen är en abstraktion som innehåller accessrättigheter för alla objekt i systemet Operativsystem, Mats Björkman, MDH 33
Accessmatrisen Operativsystem, Mats Björkman, MDH 34
Accessmatrisen n För domän, tänk bokens exempel från UNIX: n Rättigheter till filer i UNIX sätts utgående från ägarens User-ID och Grupp-ID n Paret User-ID + Grupp-ID utgör en domän, för varje fil finns specat vilka rättigheter en process med en viss User- ID + Grupp-ID har Operativsystem, Mats Björkman, MDH 35
Accessmatrisen n Accessmatrisen blir stor: alla objekt * alla domäner n Väldigt många platser i matrisen blir tomma n Vanligt att spara accessmatrisen på ett mer kompakt sätt Operativsystem, Mats Björkman, MDH 36
Accesskontrolllistor (ACL:er) n Accesskontrollistor (ACL:er) är ett sätt att spara accessmatrisen per objekt Operativsystem, Mats Björkman, MDH 37
Accesskontrolllistor (ACL:er) n Accesskontrollistor (ACL:er) är ett sätt att spara accessmatrisen per objekt Operativsystem, Mats Björkman, MDH 38
Accesskontrolllistor (ACL:er) n En förenklad variant av ACL är precis vad filsystem med accessrättigheter i filattributen har n När ett subjekt (typ process) i systemet vill accessa ett objekt (typ fil), kontrolleras i objektets accesskontrollista ifall accessen skall tillåtas Operativsystem, Mats Björkman, MDH 39
Capabilities n Man kan även skiva matrisen på andra ledden och för varje subjekt ange vilka rättigheter subjektet har n Detta kallas capabilities Operativsystem, Mats Björkman, MDH 40
Capabilities n Man kan även skiva matrisen på andra ledden och för varje subjekt ange vilka rättigheter subjektet har Operativsystem, Mats Björkman, MDH 41
Capabilities n Då hämtas rättighetslistan associerad till subjektet när subjektet vill accessa ett objekt Operativsystem, Mats Björkman, MDH 42
Mer om säkerhet? n Boken 9.5 är en kortintroduktion till kryptografi n Cirka klockan 14 idag i Beta blir det i datakommunikationskursen en lite längre kortintroduktion till kryptografi och säkerhet Operativsystem, Mats Björkman, MDH 43
Lärandemålen skydd igen n Skydd i ett operativsystem n Skyddsmatrisen n Accesskontrolllistor n Capabilities Operativsystem, Mats Björkman, MDH 44
Lärandemål virtualisering n Vad är virtualisering? n Hur åstadkoms virtualisering? Operativsystem, Mats Björkman, MDH 45
Virtualisering n OS handlar mycket om virtualisering: n Att ge processer en illusion om att de är ensamma på maskinen n Att ge processer illusionen av att hårdvaran är enkel och oproblematisk Operativsystem, Mats Björkman, MDH 46
Virtualisering n Detta kan tas ett steg längre: n Operativsystemet kan vara en del av det system som får illusionen av att vara ensam på hårdvaran n Detta är vad man menar idag med OSvirtualisering Operativsystem, Mats Björkman, MDH 47
Virtualisering - historia n Detta gjordes redan för länge sedan: n IBM gjorde detta för sitt System 370, lanserat som VM/370 år 1972 Operativsystem, Mats Björkman, MDH 48
Virtualisering VM/370 Operativsystem, Mats Björkman, MDH 49
VM/370 n Varje virtuell maskin fick illusionen av att vara ensam på hårdvaran n Ett effektivt sätt att åstadkomma multiprogrammering i något som ursprungligen var ett batchsystem Operativsystem, Mats Björkman, MDH 50
VM/370 n Dessutom kunde olika processer välja olika operativsystem n Populärt var att köra OS/360 för att slippa arbetet med att flytta (portera) gamla program till nya hårdvaruplattformar Operativsystem, Mats Björkman, MDH 51
VM/370 n Modernare varianter (z/vm) är fortfarande i bruk på IBM-system n Används fortfarande för att kunna köra gamla program på ny hårdvara Operativsystem, Mats Björkman, MDH 52
Hypervisors n I modernt språkbruk kallas koden mellan hårdvara och det virtuella operativsystemet ofta hypervisor n Boken delar upp hypervisors i Typ 1 och Typ 2 Operativsystem, Mats Björkman, MDH 53
Hypervisor typ 1 n En hypervisor typ 1 fungerar som IBM:s Virtual Machine Monitor: den ger det virtuella operativsystemet (ofta kallat gästoperativsystemet) tillgång till hårdvaran Operativsystem, Mats Björkman, MDH 54
VM/370 Operativsystem, Mats Björkman, MDH 55
Hypervisor typ 2 n En hypervisor typ 2 använder sig av ett värdoperativsystem i botten n Gästoperativsystemen kör sedan ovanpå värdoperativsystemet Operativsystem, Mats Björkman, MDH 56
x Operativsystem, Mats Björkman, MDH 57
Typ 1 vs Typ 2 n Typ 1 kan innebära mindre overhead, det virtuella operativsystemet kör nästan direkt på den fysiska hårdvaran n Typ 2 innebär enklare delning av hårdvaruresurser såsom I/O-enheter: värdoperativsystemet har drivrutinerna och kan fördela resurserna mellan gästerna Operativsystem, Mats Björkman, MDH 58
Äkta virtualisering vs paravirtualiserng n Äkta virtualisering innebär att gästoperativsystemet är det oförändrade operativsystemet som exekverar n Paravirtualisering innebär att gästoperativsystemet modifierats så att det enklare kan köra på värdsystemet Operativsystem, Mats Björkman, MDH 59
Äkta virtualisering vs paravirtualiserng Operativsystem, Mats Björkman, MDH 60
Problem med virtualisering n Virtualisering är överkomligt så länge man kör ett gästoperativsystem över en typ 1- hypervisor n I detta fall är det mest en fråga om att översätta till och från hårdvara som kanske inte stöds (exv. MacOS på PC) Operativsystem, Mats Björkman, MDH 61
Problem med virtualisering n Problemen uppstår när man antingen har mer än ett gästoperativsystem eller en typ 2-hypervisor som kör på ett värdoperativsystem Operativsystem, Mats Björkman, MDH 62
Problem med virtualisering n Problemexempel: En grundläggande uppgift för ett modernt OS är att tillhandahålla virtuellt minne, d.v.s. en mappning från virtuella adresser till fysiskt minne n Vad händer när två (eller flera) OS på samma hårdvara vill sköta det fysiska minnet? Operativsystem, Mats Björkman, MDH 63
Virtualisering - minne n Lösning: Ytterligare en nivå av virtualisering n Det som gäst-os:et uppfattar som fysiskt minne är fortfarande virtuellt n En ytterligare översättning från virtuellt fysiskt minne till fysiskt fysiskt minne sker i hårdvaran Operativsystem, Mats Björkman, MDH 64
Virtualisering - minne Operativsystem, Mats Björkman, MDH 65
Virtualisering mer problem n Samma problem som med minnet gäller för I/O-enheter n Flera operativsystem tror att de är ensamma om I/O-enheterna: hårddisk, tangentbord, display, etc. Operativsystem, Mats Björkman, MDH 66
Virtualisering I/O-problem n Det finns lite olika sätt att lösa dessa problem: n I typ 2-system kan allt kanaliseras via värd-os:et, värd-os:et får fördela hårdvaruresurserna mellan gästerna på liknande sätt som mellan processer inom ett OS Operativsystem, Mats Björkman, MDH 67
Virtualisering I/O-problem n I typ 1-system krävs någon annan form av virtualisering av I/O-resurserna: n Ett sätt kallas I/O-MMU, då sker översättningar mellan fysiska och virtuella resurser, exv. I/O-adresser n Interrupts: mappning sker mellan de fysiska hårdvarusignalerna och de virtuella signaler gäst-os:en mottar Operativsystem, Mats Björkman, MDH 68
Lärandemålen virtualisering igen n Vad är virtualisering? n Hur åstadkoms virtualisering? Operativsystem, Mats Björkman, MDH 69
OS-kursen, sammanfattning n OS:et som abstraktion och resurshanterare n Processer och processhantering n Minne och minneshantering n Baklås n Filsystem n I/O, skydd, virtualisering Operativsystem, Mats Björkman, MDH 70