Principper for Samtidighed og Styresystemer



Relaterede dokumenter
Styresystemer og tjenester

Interconnect. Front end interface

Principper for Samtidighed og Styresystemer

Styresystemer og tjenester

1 Operativsystemer oversigt

onsdag den 1. december 2010 Input/Output

Input/Output: Disk & Clock. dopsys

Systemkald DM Obligatoriske opgave. Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/ Afleveret af: Jacob Christiansen,

Opslagsbog om computer. Af Erik Veidorf og Mike T. Krogh.

Computerens Anatomi. Af Martin Arnetoft

Filsystemer: Implementation. dopsys

Ydre enheder & De Tre Synsvinkler

Typisk PC arkitektur. Synkronisering ved aktiv venten

Operativsystemer - dopsys

Planen for idag. Kontrol af ydre enheder. Systemarkitektur. Synkronisering ved aktiv venten. Multiprogrammering[1]: Ydre enheder og multiprogrammer

Input/Output. dopsys

Computerens anatomi. Computeren består af mange forskellige dele, i denne opgave vil vi forklare lidt om de vigtigste af dem.

Design Systemkald. User-mode Linux, The Linux kernel/

\ \ Computerens Anatomi / /

Sider og segmenter. dopsys 1

Lageradministration Intel Pentium og Unix/Linux

Sider og segmenter. dopsys 1

Filsystemer. dopsys. fredag den 26. november 2010

Lageret er hierarkisk fokus nu: disk

Til dig som vil have et indblik i computeren

Systemkald i Unix/Linux

Implementation af Koordinering. dopsys 1

Computerens Anatomi. Kom/IT C - Computer Anatomi - Daniel og Fie - 3/ Planlægning af kommunikationsvalg og medieprodukt.

Planen for idag. Datalogi 1F Forår Hvad er en proces? Livscyklus for en proces. Hvad består en proces af?

Algorithms & Architectures II

Routing tables Processer Tråde Hukommelse. Operativsystemer og netværk Lektion 5. I/O Linux Debian Webserver

Lærebog. Datalogi 1F Forår Hvad sker hvornår? Kursusbøger. Planen for idag. Hvad er et operativsystem

- så er livet lidt lettere!

Søren Guldbrand Pedersen Diverse noter til PC & Net Side 2 af 8. TYPE - viser fil eller program på skærmen.

1. Forklar sammenhængen mellem sektor, spor (track) og cylinder.

Lærer nye styresystemer Installerer programmer som kun kan bruges i ældre versioner

Velkommen til IT for let øvede

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Indhold

Westermo GDW-11 GSM Modem forbindelse til CXxxxx

ESP30076 임베디드시스템프로그래밍 (Embedded System Programming)

I 2 C BUSSEN KØRER MED ARDUINO IND I FORÅRET

Processer og tråde. dopsys 1

Scope start stop Space bar kan også bruges. Start/Stop

Bundkort Beskrivelse

DM14-1. Obligatorisk opgave F.06. System Call. Jacob Aae Mikkelsen Ingen andre gruppe medlemmer. 6. marts 2005

Operativsystemer - dopsys. Erik Ernst

Indhold. Download driver Find version af Windows Hent drivers til Windows Udpak driver... 6

Computer Literacy. En stationær bordmodel. En Bærbar Notebook, Labtop, Slæbbar, Blærebar mm.

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Indhold

Filsystemer: Anvendelse. dopsys

Computerens Anatomi Af Mathias og Mark

COMPUTER ANATOMI klasse 23. FEBRUAR 2015 HTX - ROSKILDE

AstroComp en idé Version 0.2 (foreløbig)

System Arkitektur og Integration

Kom godt igang med Inventar registrering

Datamaters arkitektur og programmering

Kravspecifikation For. Gruppen

OPTAC overførselsenhed Brugermanual

3. Computerens opbygning.

Servicedesk JAST/december 2015

- så er livet lidt lettere!

Deling i Windows. - via NetBIOS eller Hjemmegruppe! Netteknik 1

Styresystemer og tjenester

Computerens Anatomi KOM/IT

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0

Udbud af IT-udstyr i Helsingør Kommune

Processer og koordinering

Backup og gendannelse

Din brugermanual HP DX5150 MICROTOWER PC

Hvad skal du vide for at bygge din egen computer?

Den lille It Ordbog. Indholdsfortegnelse. Hardware... 3 Motherboard Bundkort Bus typer... 4 ATA IDE - EIDE... 4

Contents. ESXi installation og basisk konfiguration

Tillykke med din nye Føniks computer!

Input/Output: Brugergrænseflader. dopsys

Installér din Officepakke 2013

DGMF Kursus i Digitalcentralen. Rev. 19 / Poul Erik Christiansen. DiMAX 1200Z Digitalcentral

Trust PCI Ethernet Combi Brugsanvisning

Optimering af dit trådløse net

Lageradministration Paging og segmentering

MANUAL SKIOLD GØR EN FORSKEL DISTRIWIN SERVICE INSTALLATION

Vidar Jon Bauge. Notater til Teknik. Datamatikeruddannelsen efterår 2005 Side 1 af 54

News. Gør det lettere... Sound Switcher. Wireless Battery-free Mouse. USB 2.0 Hub & 14in1 CardReader. Wireless Multimedia Link

Installation af Office Windows 8/10

Nyheder i MagiCAD til AutoCAD Generelle nyheder VIGTIGT!

Styresystemer og tjenester

Brugervejledning for Nicolet neeg version 5.X

Hurtig Start Guide 1

BRUGERVEJLEDNING MPCC

Wii Software Modificering. Uber Guide

Formfaktor: Mini-DTX 20cm (7,87 inches) x 17cm (6,69 inches)

Eksamens spørgsmål i Teknologi (Digital) 3. Semester (i)

Oversigt. Operativsystemer [5]: Filsystemer. Hvad er en fil? Hvor er en fil? Strukturen af en fil. Beskrivelse af en fil

TRUST 100MB SPEEDSHARE USB ADAPTER

Installation af Office Windows 7

IP & GPRS IP (+ GPRS) transceivere

Til dig som vil have et indblik i computeren

Drev Brugervejledning

Projektoplæg - AMU kursus Netteknik - Server - Videregående

Bevægelses analyse med SkillSpector. Version 1.0 Sidste opdatering: 14/

WiseCam. Driftsmanual. Hanger. Styreboks. Håndtag Stop Kontol lampe Run. Kamera

Transkript:

Principper for Samtidighed og Styresystemer Kursusgang 12: Device drivere mt@cs.aau.dk Ph.D.-studerende Distribuerede og Indlejrede Systemer Institut for Datalogi Aalborg Universitet 17. maj 2010

Intro Grænseflader Kategorier Interrupts Eksempler Overblik Hvad er en device driver? Overblik over kursusgangen Hvad er en device driver? Grænseflader Kategorier af device drivere i Linux Interrupts Eksempler Diskdriver Virtual File System i Linux Fokus: Monolitisk kerne og i høj grad Linux 2

Intro Grænseflader Kategorier Interrupts Eksempler Overblik Hvad er en device driver? Hvad er en device driver? Software der lader højniveau-software interagere med hardware Styresystemets grænseflade til hardware Fysiske enheder Diskenheder, f.eks. harddiske og DVD-drev Tastatur Grafikkort Netkort Busser, f.eks. PCI, USB og Firewire Virtuelle enheder Filsystemer Pseudo-devices til netværk, f.eks. loopback og bonding/trunk 3

Intro Grænseflader Kategorier Interrupts Eksempler Overblik Hvad er en device driver? Hvad er en device driver? Enten fast del af kernen eller et modul, der kan indsættes og fjernes Hardware tilsluttes og frakobles Kører i kernel mode Effektivitet Adgang til hardware Ingen programbiblioteker, heller ikke C/C++ standard library Ingen garanti om kontekst Ingen hukommelsesbeskyttelse Skal håndtere låsning korrekt (mange faldgrupper) Skal kunne køre på en multiprocessor-maskine Fejl er alvorlige Generelt eneste mulighed for at køre brugerkode i kernel mode 4

Intro Grænseflader Kategorier Interrupts Eksempler Overblik Hvad er en device driver? Placering af koden Ligger i shared kernel area/space Øverste 1 GiB 1 i Linux, øverste 2 GiB i Windows (Figur 8.2 fra English) 1 Gibibyte, dvs. 2 30 byte, http://www.iec.ch/zone/si/si_bytes.htm 5

Intro Grænseflader Kategorier Interrupts Eksempler Overblik Hvad er en device driver? Sprog og stil Drivere skrives typisk i C eller C++ Lavniveau højniveau-sprog Linux-drivere skrives i C Windows giver mulighed for både C og C++ Drivere skrives typisk i en objekt-orienteret stil OO i C: Strukturer med funktionspointere Tænk: Implementation af et driver-interface 6

Intro Grænseflader Kategorier Interrupts Eksempler Overblik K mod US K mod D D mod K Eksempel Grænseflader 7

Intro Grænseflader Kategorier Interrupts Eksempler Overblik K mod US K mod D D mod K Eksempel Kernens grænseflade mod user space Systemkald Hvis man vil lave fundamentale ændringer Kræver tildeling af et systemkaldsnummer Frarådes pga. kobling med systembiblioteket sys call table ikke længere eksporteret Device filer i /dev Character og block devices Major og minor nummer Problemer med tildeling af major nummer devfs (kernel space), udev (user space daemon), devtmpfs 2 Proc-filsystemet i /proc Driveren registrerer filer i proc-filsystemet 2 http://lwn.net/articles/330985/ http://lxr.linux.no/linux+*/drivers/base/devtmpfs.c 8

Intro Grænseflader Kategorier Interrupts Eksempler Overblik K mod US K mod D D mod K Eksempel Kernens grænseflade mod user space 9

Intro Grænseflader Kategorier Interrupts Eksempler Overblik K mod US K mod D D mod K Eksempel Kernens grænseflade mod user space 10

Intro Grænseflader Kategorier Interrupts Eksempler Overblik K mod US K mod D D mod K Eksempel Kernens grænseflade mod driveren Eksempler: Registrering, linux/init.h og linux/fs.h module init(initfn) module exit(exitfn) int register chrdev(unsigned int major, const char *name, const struct file operations *fops) void unregister chrdev(unsigned int major, const char *name) Beskeder til kerneloggen, linux/kernel.h int printk(const char *fmt,...) Hukommelsesallokering, linux/malloc.h void *kmalloc(size t size, int priority) void kfree(void * ptr) På Windows: Windows Driver Model (WDM) Standardiseret interface drivere på tværs af Windows versioner 11

Intro Grænseflader Kategorier Interrupts Eksempler Overblik K mod US K mod D D mod K Eksempel Driverens grænseflade mod kernen Callback til registrerede funktioner Eksempler: Initialisering og oprydning initfn i module init(initfn) exitfn i module exit(exitfn) Filoperationer (struct file operations) int open(struct inode *inode, struct file *file) int release(struct inode *inode, struct file *file) ssize t read(struct file *file, char *buffer, size t length, loff t *offset) ssize t write(struct file *file, const char *buffer, size t length, loff t *offset)... 12

Intro Grænseflader Kategorier Interrupts Eksempler Overblik K mod US K mod D D mod K Eksempel Driverens grænseflade mod kernen (Figur 8.1 fra English) 13

Intro Grænseflader Kategorier Interrupts Eksempler Overblik K mod US K mod D D mod K Eksempel Eksempel: Hello World! 14

Intro Grænseflader Kategorier Interrupts Eksempler Overblik K mod US K mod D D mod K Eksempel Eksempel: Hello World! 15

Intro Grænseflader Kategorier Interrupts Eksempler Character Block Net Eksempel Kategorier af devices i Linux Character devices Block devices Network devices 16

Intro Grænseflader Kategorier Interrupts Eksempler Character Block Net Eksempel Character devices Strøm af tegn Tastatur, mus, konsol/terminal, serielle porte, lydkort,... /dev/null, /dev/zero, /dev/random Grænseflade Filoperationer llseek, read, write, readdir, ioctl, mmap, open, flush, release,... Registreres af modulet register chrdev unregister chrdev Major nummer vælger driver (f.eks. terminaldriveren tty 3 ) Minor nummer vælger enhed (f.eks. terminalen tty42) 3 http://lxr.linux.no/linux+*/drivers/char/tty_io.c 17

Intro Grænseflader Kategorier Interrupts Eksempler Character Block Net Eksempel Block devices Data overføres i et antal blokke af fast størrelse Kø af requests, hvor driveren vælger behandlingsrækkefølgen Mulighed for I/O schedulering Formateres oftest med et filsystem Major og minor nummer ligesom et character device Eksempel: Driveren sd 4 og disken sda 5 Samme grænseflade som et character device Filoperationer register blkdev, unregister blkdev 4 http://lxr.linux.no/linux+*/drivers/scsi/sd.c 5 Prøv ls -l /dev/sd* og dmesg grep sda i en terminal. 18

Intro Grænseflader Kategorier Interrupts Eksempler Character Block Net Eksempel Network devices Næsten som block devices, men skal behandles separat Registrering af init/exit med module_{init,exit}(fn) Ved initialisering: pci_register_driver(&driver) driver er en struct pci_driver name, id_table, probe, remove,... int probe(struct pci_dev *pdev, const struct pci_device_id *id) Opsætning af I/O porte og Direct Memory Access (DMA) Initialisering af pdev Initialisering af private strukturer... meget mere! 19

Intro Grænseflader Kategorier Interrupts Eksempler Character Block Net Eksempel Eksempel: /dev/zero 20

Intro Grænseflader Kategorier Interrupts Eksempler ISR Top Half og Bottom Half Interrupts Tydeligt hvordan processer og kernen får hardware til at arbejde Men hvad så den anden vej? Hvis computeren f.eks. modtager en netværkspakke? Polling Interrupts Normen er interrupt-baseret I/O med prioriteter Computeren har en Programmable Interrupt Controller (PIC) Sørger for at Interrupt Service Routines (ISRs) kaldes 21

Intro Grænseflader Kategorier Interrupts Eksempler ISR Top Half og Bottom Half Interrupt Service Routines (ISRs) Eksempel: 1 Data ankommer til en serielport fra et modem 2 Serielport-hardwaren genererer et interrupt 3 Serielport-driverens ISR bliver kørt og skal sørge for at 1 gemme dataen i en buffer et sted og 2 fortælle serielport-hardwaren, at den skal slukke for interrupt-signalet Udføres i speciel interrupt-kontekst Interrupts uforudsigelige Afbrudte proces ikke nødvendigvis den I/O-initierende proces Ingen antagelser om adresserum Hastigheden er afgørende Interrupts med lavere prioritet er midlertidigt deaktiverede Risiko for tab af data Responstid 22

Intro Grænseflader Kategorier Interrupts Eksempler ISR Top Half og Bottom Half Top Half og Bottom Half Ikke helt fast terminologi vi ser på Linux-verdenen Top Half ISR Foretager kun essentielle ting Schedulerer Bottom Half Bottom Half To typer 1 Kræver proceskontekst 2 Kræver ikke procekontekst Type 1 kaldes Asynchronous Procedure Call (APC) på Windows og skal tilføjes en processpecifik scheduler kø Type 2 kaldes Deferred Procedure Call (DPC) på Windows Bottom Half udføres af scheduleren Må blokere 23

Intro Grænseflader Kategorier Interrupts Eksempler ISR Top Half og Bottom Half Bottom Half eksekvering (Figur 8.6 fra English) 24

Intro Grænseflader Kategorier Interrupts Eksempler Diskdriver Virtual File System i Linux Eksempler Diskdriver Virtual File System i Linux 25

Intro Grænseflader Kategorier Interrupts Eksempler Diskdriver Virtual File System i Linux Diskdriver Mål Så hurtig datagennemstrømning som muligt Fairness Midler til at nå målene Caching af tilgåede diskblokke Brug af fri hukommelse Forsinket skrivning (lazy writing) Valg af hurtig og fair I/O scheduleringsalgoritme Observation: En gammeldags, ikke-ssd harddisk skal bevæge hoveder (søgetid) og plader (latenstid) 26

Intro Grænseflader Kategorier Interrupts Eksempler Diskdriver Virtual File System i Linux I/O schedulering First Come, First Served (FCFS) Fair men dårlig ydelse Closest block first God ydelse men ikke fair Elevatoralgoritmen (SCAN) Skifter kun retning når alle requests i nuværende retning er håndteret Nogenlunde fair, nogenlunde ydelse Cylindre i midten serviceres dobbelt så ofte som inderste/yderste cylindre Den cirkulære elevatoralgoritme (C-SCAN) Skifter ikke retning (springer tilbage) Ens ydelse for alle cylindre 27

Intro Grænseflader Kategorier Interrupts Eksempler Diskdriver Virtual File System i Linux I/O schedulering (Figur 8.13 fra English) Request-følge: 5, 23, 16, 27, 63, 28 15 + 18 + 7 + 11 + 36 + 35 = 122 3 + 4 + 1 + 12 + 11 + 58 = 89 3 + 4 + 1 + 35 + 47 + 11 = 101 28

Intro Grænseflader Kategorier Interrupts Eksempler Diskdriver Virtual File System i Linux Virtual File System i Linux 29

Intro Grænseflader Kategorier Interrupts Eksempler Diskdriver Virtual File System i Linux Virtual File System i Linux open("/mnt/cdrom/dir/foo",...) 30

Intro Grænseflader Kategorier Interrupts Eksempler Opsummering Device drivere indkapsler device-specifik kode Device drivere kan være (og er typisk) moduler Registrering af callback funktioner Interruptbehandling er delt i to I/O schedulering er et trade-off mellem ydelse og fairness Virtual File System i Linux Kilden English : John English, Introduction to Operating Systems, Palgrave Macmillan, 2004. 31