Gebruiker afschermen van de hardware



Vergelijkbare documenten
Computerarchitectuur en netwerken. Operating System structuur. Files

De MySQL C API. Variabelen in C Functies in C Pointers in C

Belangrijkste ideeën/concepten uit OS, incl. proces

Inleiding Practicum Operating Systems

ICT Infrastructuren: Processen en Threads. 18 november 2013 David N. Jansen

Werkomgeving. Android Studio. Android - werkomgeving 1/6

Hoofdstuk 3: Processen: Beschrijving en Besturing. Wat is een proces? Waarom processen? Wat moet het OS ervoor doen? Is het OS zelf een proces?

Mobile Devices, Applications and Data

High Availability & Disaster Recovery

USB SERIËLE OMZETTER

operating system beveiliging

in Operating System Concepten

in Operating System Concepten Doel van een Operating System Interrupts 3-Lagen model spooling (Simultaneous Peripheral Operation On Line)

Erik Poll Martijn Warnier.

Seriële bluetooth verbinding ATmega128

Tim Mallezie Architectuur van besturingssystemen: Vraag A2.

The Linux Cowloop Device Driver

5.1 Channel USB headset. USB 5.1 surround headset

Deel 8: stappenmotoren en interrupts

We beginnen met een strikvraag: Welk van de volgende zijn bestanden?

Android Development CCSS2011

Windows Basics. yvan vander sanden. 22 februari 2015

Centrale begrippen hoofdstuk 3. Waarom multiprogramming? Vandaag. processen proces state: running, ready, blocked,... Vragen??

Data Acquisitie in een modern jasje. Wordt het de tablet of toch iets anders?

Computerarchitectuur en Netwerken. Computerarchitectuur

Machinevirtualisatie. Raphael kena Poss Universiteit van Amsterdam. Besturingsystemen

Het besturingssysteem of operating system, vaak afgekort tot OS is verantwoordelijk voor de communicatie van de software met de hardware.

Zelftest Informatica-terminologie

Ictivity Een vreemde eend in de bijt

slides2.pdf April 12,

VMware ThinApp. Application Virtualization Platform that enables complex software to be delivered as self-contained EXE files

Inleiding Practicum Operating Systems

18 Embedded systemen 1

Super GRUB2 Disk Super GRUB2 Disk

Virtueel Geheugen en demand paging (1)

Taakklasse 3 ALAa installeren en onderhouden systemen Corné Tintel G GMB13B Medewerker beheer ICT

Technische data. Versie dec

Linux voor S/390 (IBM z-series)

Memory Management. Virtual Memory. Eisen Memory Management. Verdelen geheugen over meerdere processen

Inhoud. Geschiedenis / evolutie van OpenEmbedded en Yocto Overzicht van de architectuur en concepten Persoonlijke ervaring

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni, 2010

1 "log-file": "/var/log/pilight.log" 2 "log-file": "c:/pilight/pilight.log"

Hoofdstuk 7. Computerarchitectuur

EE1400: Programmeren in C BSc. EE, 1e jaar, , 3e college

100 % flexibiliteit en optimalisatie met Flexible Machine Control

Programmeren in Java 3

Computerarchitectuur en netwerken Toets 1 4 okt

Interactief, real time security management

ROBOMIND EV3 EXPORT HANDLEIDING VOOR WINDOWS COMPUTERS

CONTAINERIZATION OF APPLICATIONS WITH MICROSOFT AZURE PAAS SERVICES

Module I - Informatica

Grafisch programmeren met GTK

Cloud & Licenties. Welkom bij BSA The Live Sessions De Live Session start binnen enkele minuten. Dank voor uw geduld.

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

Hoofdstuk 19. Embedded systemen

Korte uitleg: Mounten van filesystemen door de desktopgebruiker

Tentamen Computersystemen

Technische Specificaties nieuwe Unix Applikaties

Gebruiksaanwijzing installeren software en drivers voor Xstream flex alarmontvanger

Accelerometer project 2010 Microcontroller printje op basis van de NXP-LPC2368

Introductie in C++ Jan van Rijn. September 2013

ICARUS Illumina E653BK on Windows 8 (upgraded) how to install USB drivers

Functionele beschrijving: scannen naar Exact Globe.

De TRUST 2 PORT USB 2.0 PCI CARD werkt niet op MAC.

Oefening 1: hardware block devices (zoals harde schijven) herkennen

Tentamen Programmeren in C (EE1400)

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Printen met de NAS-server (PO50696)

Beleef het nieuwe Klantverwijssysteem

Datastructuren: stapels, rijen en binaire bomen

Open source VoIP Networks

Rent+ Pre-requirements

Debugging in embedded en native systemen met GDB

Linux Assembly Uitwerkingen van de vragen en opdrachten

Linux. Linux lezing 13 april 2005 Marcel Nijenhof Note: De slechste vragen zijn niet gestelde vragen

Secure Application Roles

Programmeren van de Raspberry Pi.

VMware View 4.5 een overview. Eline Klooster Technical Trainer

Programmeren in C++ Efficiënte zoekfunctie in een boek

TRUST 5 PORT USB 2.0 UPGRADE KIT & HUB

Transcriptie:

Device driver 1

Gebruiker afschermen van de hardware Prog1 Prog2 System calls/ API Operating Systeem Device drivers Hardware 2

Introductie Een device driver is een computer programma dat direct communiceert met een resource. Voorbeelden zijn: printerdriver, filedriver, displaydriver,. Is de vertaalslag tussen het operating systeem en de applicaties die gebruik maken van de devices. Een device driver werkt in de kernelmode. 3

Waarom werken met device drivers. Het maken van een apparaat zoals verwacht is een lastige taak. => Fouten in hardware wordt door de software (driver) gecorrigeerd. In plaats van elke keer het programma te veranderen biedt het o.s. de mogelijkheid om op eenvoudige wijze een andere device te benaderen. Het toevoegen van drivers onder het operatingsysteem biedt de bescherming en veiligheid die nodig is voor het aansturen door malafide gebruikers. Device drivers zijn in principe gelinkte libraries 4

Interfacing device drivers A: zonder een standaard interface B: met een standaard interface 5

File abstractie Wat doe je met een device? Lezen en schrijven Alleen lezen of alleen schrijven Voorbeelden: USB device, CD ROM, LED display Wat doe je met een file? Open, close, read, write,.. File is een uitstekende abstracte device. 6

Voorbeeld int fd; char cbuf; fd=open( /dev/tty, O_RDONLY,0); read(fd, &cbuf, 1); close(fd); 7

Device crw-rw-rw- 1 root root brw-rw ---- 1 root disk brw-rw ---- 1 root disk brw-rw ---- 1 root disk 1, 3 2009-12-06 13:28 null 8, 0 2009-12-06 13:28 sda 8, 1 2009-12-06 13:28 sda1 8, 2 2009-12-06 13:28 sda2 l Nummers voor last modification zijn de major en minor devicenummers van een bepaald device. l Major nummers identificeren de drivers die overeenkomen met de device. b.v. sda, sda1 en sda2 hebben dezelfde device l Minor nummers worden gebruikt door de kernel om precies te bepalen naar welke apparaat verwezen wordt. u b.v. een onderscheid maken tussen verschillende partities op een harddisk /dev/sda, / dev/sda1, / dev/sda2 hebben allemaal dezelfde major, maar verschillende minor nummers. u Wordt intern gebruikt voor indexering 8

Device type l Een Character Devices Toegankelijk via een stroom van bytes( zoals in een file) Vb: usb, modem,.. l Een Block Devices Via een systeem buffer die functioneert als een data-cache. Voorbeeld Harddisk controllers l Een network Devices 9

User programma & Kernel Interface System Call Interface VFS Socket File Systems Buffer Cache Network Protocol Block Device Driver Character Device Driver Network Device Driver Hardware 10

Device driver interface 11

Device driver interface 12

Kernel Modules Versus Applicaties Kernel modules zijn event-driven User-level applicaties kunnen functies aanroepen die niet gedefinieerd zijn. Gebruik maken van externe library's Kernel module kan alleen gelinkt worden met kernel functies b.v: printk is de versie van printf wordt binnen de kernel gedefinieerd. Gebruik in de kernel module dus geen user-level library's zoals stdio.h Vergeet na disabelen van de interrupts deze niet te enabelen 13

User Space Versus Kernel-Space Een kernel module run in kernel-space, waar applicatie run in user- space Een applicatie kan zich verplaatsen van user-space naar kernel-space b.v. het aanroepen van een system-call Driver code moet re-entrant zijn. Een functie heet re-entrant als hij op ieder willekeurig punt onderbroken kan worden en een nieuwe kopie opgestart zonder elkaar in de weg te zitten. 14

Voorbeeld van niet re-entrant code int global_variable = 1; int f() { global_variable = global_variable + 2; return g_var; } Het reultaat is bij multiple threads aanroep van f() onvoorspelbaar. int g() { return f() + 2; } g() roept een non-reentrant functie f() aan. 15

Voorbeeld van niet re-entrant code int f(int i) { return i + 2; } int g(int i) { return f(i) + 2; } 16

Driver User mode <==> Kernel mode 17

Read en Write Methoden in linux l Read en write kopieeren van en naar applicatie code. l prototypes ssize_t read(struct file *filp, char user *buff, size_t count, loff_t *offp); ssize_t write(struct file *filp, const char user *buff, size_t count, loff_t *offp); filp: File pointer count:grootte van de user buffer buff: Pointer naar de user buffer Offp: offset binnen de file sss 18

Read en Write Methoden in linux l Wees voorzichtig bij het omgaan met user / kernel data transfers User buffer pointers kunnen illegaal zijn Er kan een page-fault veroorzaakt worden (data is alleen virtueel aanwezig, dus niet in RAM). Pointers kunnen malvious zijn. l Er zijn speciale functies die veilige data transfare verzorgt tussen de user en de kernel ruimte. unsigned long copy_to_user(void user *to, const void *from, unsigned long count); unsigned long copy_from_user(void *to, const void user *from, unsigned long count); sss 19

Read en Write Methoden in linux 20

Algemene systemen versus embedded systemen Application process Application process Operating System: dev/xyz Device driver Device driver Physical Device hardware Physical Device hardware 21

Gebruiker afschermen van de hardware Prog1 Prog2 System calls/ API Operating Systeem Device drivers Hardware 22

Aanroep van de driver FILE *fp = fopen(lcd_name, "w ); open() close() read() write() dev flags Device tabel fprintf(fp, "test"); 23

Hoe te werk gaan 1: Creëer de device-header file die de registers beschrijft (dit is de interface file) 2: Implementeer de driver functionaliteit 3: Test de driver (m.b.v. de main) 4: Integreer de driver.

device driver voor de HAL (NIOS II) Devices Character- mode devices Timer devices File subsystems Ethernet devices DMA devices Flash memory devices

Driverfuncties tabel

Aanroep van de driver alt_dev FILE *fp = fopen(lcd_name, "w ); alt_fd open() close() read() write() dev flags Device tabel int alt_dev_reg( alt_dev* dev );

Driverfuncties tabel int { } schrijf( alt_fd*,const chr*,int )

NIOS II Software developer s Handbook Hoofdstuk 7

The High Level Picture A lot of research effort in the OS community has gone into performance, rather than reliability. The result: operating system crashes are still a huge problem today 5% of Windows systems crash every day Device drivers are the biggest cause of crashes Drivers cause 85% of Windows XP crashes Drivers in Linux are 7 times buggier than the kernel Dept. of Computer Science & Engineering University of Washington 30

Why Do Drivers Fail? Complex and hard to write Must handle asynchronous events interrupts Must obey kernel programming rules Locking, synchronization Difficult to test and debug timing-related bugs Non-reproducible failures Often written by inexperienced programmers Code often not available to OS vendors Dept. of Computer Science & Engineering University of Washington 31

OS Today Application Application Kernel Driver Dept. of Computer Science & Engineering University of Washington 32

Our Goal: OS With Reliability Application Application Kernel Driver Dept. of Computer Science & Engineering University of Washington 33

Recovery Works Number of failures 100 80 60 40 20 Sound Net Storage Driver Failures Application Failures 0 Mp3 Player Audio Recorder Remote Copy Sniffer Compiler Database Dept. of Computer Science & Engineering University of Washington 34