Styresystemer og tjenester



Relaterede dokumenter
Styresystemer og tjenester

Principper for Samtidighed og Styresystemer

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

Interconnect. Front end interface

onsdag den 1. december 2010 Input/Output

Ydre enheder & De Tre Synsvinkler

Systemkald i Unix/Linux

Styresystemer og tjenester

System Arkitektur og Integration

Input/Output. dopsys

Datamaters arkitektur og programmering

Din brugermanual HP DX5150 MICROTOWER PC

Typisk PC arkitektur. Synkronisering ved aktiv venten

Styresystemer og tjenester

Programmering i C Programmering af microcontroller i C (4 af 4) 12. april 2007

Lageradministration Intel Pentium og Unix/Linux

Vejledning til computeropsætning (F10) HP Compaq Business Desktop dx2000 Microtower

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

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

Programmering i C. Lektion december 2008

uprocessorens hardware

Input/Output: Brugergrænseflader. dopsys

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

Operativsystemer - dopsys

// Definition af porte og funktioner

up/ansi Eksamensspørgsmål

Netværk & elektronik

Wii Software Modificering. Uber Guide

Processer og tråde. dopsys 1

Processer og koordinering

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

1 Indholdsfortegnelse.

Hvad skal du vide for at bygge din egen computer?

Filnavn: main.c

Computerens Anatomi. Af Martin Arnetoft

Kravspecifikation For. Gruppen

Dette korte foredrag er opdelt i 3 dele: 1. ARDUINO i flere versioner, hvad er det? 2. DEMO-video 3. Din fremtidige Oscillator, SI5351A 4.

Vejledning til Computeropsætning (F10) HP Compaq Business Desktops-modellerne d220 og d230

1 Operativsystemer oversigt

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

Fra programmering til mikroprocessor

NC_8_ Quick Guide v1.0. CJ1W-NC_8_ Position Control via EtherCAT. Quick Guide

Instruktioner i installation og afinstallation af Windows PostScript- og PCLprinterdrivere

Det Teknisk-Naturvidenskabelige Fakultet Aalborg Universitet

Sorting on the SRC 6 Reconfigurable Computer

Filsystemer: Anvendelse. dopsys

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi C Opgave: Brev til Sigurd Lære: John Austin Side 1 af 13 Dato:

INGENIØRHØJSKOLEN I ÅRHUS Elektro- og IKT-afdelingen. I3PRG3 + I3DTM3 + I3ISY1-3. semester

Hurtig Start Guide. Wireless NVR System Connection Reolink

Din brugermanual HP COMPAQ EVO D500 ULTRA-SLIM DESKTOP

Delta Elektronik A/S - AKD

Filsystemer: Implementation. dopsys

Quick-guide til harddiskoptager

IAI Quick Start Guide

BRUGERVEJLEDNING FLTA

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

Projekt rapport. for. Zigbee kommunikation

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi Opgave: Brev til Sigurd Lære: John Austin Side 1 af 8 Dato:

Modbus data modellen er opbygget af fire primære data typer. I nedenstående skema er en kort oversigt over disse.

Implementation af Koordinering. dopsys 1

Intro til AVR. Mads Pedersen, OZ6HR

COMPUTER ANATOMI klasse 23. FEBRUAR 2015 HTX - ROSKILDE

Cipherlab CPT8x00 med Ethernet Cradle

Programmering i C. Lektion september 2009

Mini DVB-T USB stik S6

XVR optager med 8 kanaler (1080N) Varenr

Principper for Samtidighed og Styresystemer

Analyse og design af Indlejrede Systemer. v/ Jens Dalsgaard Nielsen Henrik Schiøler Mads Dore alle Afdeling for Proceskontrol

Programmering i C. Lektion oktober 2008

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

AVR MP Ingeniørhøjskolen i Århus Michael Kaalund

Entry serien. H-0410E 4channels, Optagehastighed [NTSC: 120fps / PAL: 100FPS] H-0810E 8channels, Optagehastighed [NTSC: 120fps / PAL: 100FPS]

Projekt - RoboNet Del Journal.

Dell Adapter - USB 3.0 til HDMI/VGA/Ethernet/USB 2.0

NC_71 Quick Guide v1.0. CJ1W-NC_71 Mechatrolink-II Position Control Unit. Quick Guide

Andreas Nordbek & Kristoffer Skude Jensen. DMX Styring Side 1 af 15

Digital Video Recorder Brugermanual

Wahlberg Surtitle Display

ATI REMOTE WONDER Installerings-guide

Wii Software Modificering. Uber Guide

Trust PCI Ethernet Combi Brugsanvisning

Deling i Windows. Netteknik 1

ECE 551: Digital System * Design & Synthesis Lecture Set 5

Robonet Profibus Generel opsætning

\ \ Computerens Anatomi / /

Speciale. Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende Java Optimized Processor (JOP)

TRUST 100MB SPEEDSHARE USB ADAPTER

Arduino Programmering

Netværksalgoritmer 1

Computerens Anatomi Af Mathias og Mark

const int disponibel_10= 10; const int disponibel_11= 11; const int disponibel_12= 12; const int blinkled = 13; // pin 13 er LED på NANO

Ydeevne og kapacitet. Indholdsfortegnelse

Det Digitale Niveau. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet

Westermo GDW-11 GSM Modem forbindelse til CXxxxx

Arduino kursus lektion 3:

Klasser og Objekter i Python. Uge 46 Learning Python: kap 15-16,

Operativsystemer - dopsys. Erik Ernst

Processer og koordinering. dopsys 1

MM4. Algoritmiske grundprincipper. Lister, stakke og køer. Hash-tabeller og Træer. Sortering. Søgning.

Start af nyt schematic projekt i Quartus II

Transkript:

Styresystemer og tjenester Indhold: 1. Introduktion til styresystemer. 2. Processer og tråde. 3. Synkroniseringsmetoder og InterProcesCommunikation. 4. Memory management. 5. I/O og devicedrivere. 6. Filsystemer. 7. Distribuerede systemer. 8. Sikkerhed. 9. Per P. Madsen Styresystemer og tjenester 1

I/O device og hastigheder. Per P. Madsen Styresystemer og tjenester 2

I/O Struktur Operativsystem Software DeviceDriver: Disk-driver, keyboard-driver,... Elektronik Tilsluttet udstyr Controler: DiskControler, Grafikcontroler, UART,... Hardware Disk, Mus, Keyboard, Monitor, Netværk,... Per P. Madsen Styresystemer og tjenester 3

I/O Opgavefordeling Devicedriver Opgave: Uniform easy to use interface til brugeren. Buffering, Interrupt håndtering. Error håndtering. Controler Opgave: Overfører mem.baseret byte til og fra udstyr. Tilsluttet udstyr Opgave: Lagre, præsentere, generere, transportere data. Per P. Madsen Styresystemer og tjenester 4

I/O grænseflader. Applikation Devicedriver Uniform easy to use systemkalds baseret interface. Operativsystem DMA, Memory-mapped eller I/O-porte. Kontrol via byte/word-registre. Controler Tilsluttet udstyr Fysiske signaler vha en passende bus. Per P. Madsen Styresystemer og tjenester 5

I/O porte på en PC /proc/ioports 0000-001f : dma1 0020-003f : pic1 0040-005f : timer 0060-006f : keyboard 0080-008f : dma page reg 00a0-00bf : pic2 00c0-00df : dma2 00f0-00ff : fpu 0170-0177 : ide1 01f0-01f7 : ide0 02f8-02ff : serial(set) 0300-031f : NE2000 0376-0376 : ide1 03c0-03df : vga+ 03f6-03f6 : ide0 03f8-03ff : serial(set) 1000-103f : Intel Corporation 82371AB PIIX4 ACPI 1000-1003 : acpi 1004-1005 : acpi 1008-100b : acpi 100c-100f : acpi 1100-110f : Intel Corporation 82371AB PIIX4 IDE 1300-131f : pcnet_cs 1400-141f : Intel Corporation 82371AB PIIX4 ACPI 1800-18ff : PCI CardBus #02 1c00-1cff : PCI CardBus #04 5800-581f : Intel Corporation 82371AB PIIX4 USB d000-dfff : PCI Bus #01 d000-d0ff : ATI Technologies Inc 3D Rage LT Pro AGP-133 Per P. Madsen Styresystemer og tjenester 6

I/O memory på en PC /proc/iomem 00000000-0009fbff : System RAM 0009fc00-0009ffff : reserved 000a0000-000bffff : Video RAM area 000c0000-000c7fff : Video ROM 000f0000-000fffff : System ROM 00100000-03feffff : System RAM 00100000-0022c557 : Kernel code 0022c558-0024455f : Kernel data 20000000-2fffffff : Intel Corporation 440BX/ZX - 82443BX/ZX Host bridge 68000000-68000fff : Texas Instruments PCI1225 68001000-68001fff : Texas Instruments PCI1225 (#2) e0000000-e3ffffff : PCI Bus #01 e4000000-e7ffffff : PCI Bus #01 e4000000-e4ffffff : ATI Technologies Inc 3D Rage LT Pro AGP-133 Per P. Madsen Styresystemer og tjenester 7

Aplikation Simpel character devicedriver Output kald. Operativsystem ISR Controler: UART Systenkald x x x x Control Status RTE Data If NoOfChInBuf = BufSize Wait(OutSem); putbuf(ch); If NoOfChInBuf > 0 Åben for IRQ Data =getbuf(); If NoOfChInBuf < 2/3*BufSize og sender har kaldt Wait() så signal(outsem); If NoOfChInBuf = 0 Luk for IRQ. Per P. Madsen Styresystemer og tjenester 8

FIFO kø: Ringbuffer Int GetBuf(&data) UdPtr a b c NoOfChInBuf= 3 Int PutBuf(data) InPtr Per P. Madsen Styresystemer og tjenester 9

FIFO kø: Ringbuffer #define BufSize 128 char ringbuf[bufsize]; int InPtr=0, UdPtr=0, NoOfChInBuf=0; void enable() {asm("sti");} void disable() {asm("cli");} void PutBuf(char ch) { disable(); ringbuf[inptr]= ch; if (BufSize <= ++InPtr) InPtr= 0; ++ NoOfChInBuf enable(); } char GetBuf() { char ch; disable(); if (NoOfChInBuf > 0) { ch= ringbuf[udptr]; NoOfChInBuf--; if (BufSize <= ++UdPtr) UdPtr= 0; } enable(); return ch; } Per P. Madsen Styresystemer og tjenester 10

I/O software. Per P. Madsen Styresystemer og tjenester 11

Device-Independent. Uniform interface: Device uafhængig. Fordel for både systemudvikler og applikationsudvikler. UNIX/Linux metoden: Fil I/O metoden. En device refereres vha et symbolsknavn. ttys1, lp0, sound. Device systemkaldene: open, read, write, lseek,... Per P. Madsen Styresystemer og tjenester 12

Device-Independent. /dev/mindriver Protections. Major nr: x Minor nr: y /dev/ttys0 Protections. Major nr: 3 Minor nr: 48 /dev/ttys1 Protections. Major nr: 3 Minor nr: 49 fd= open( /dev/mindriver,..); read(fd,..); write(fd,..); Applikation Nr: x Min driver Nr: 3 ttys Operativsystem Per P. Madsen Styresystemer og tjenester 13

Device-Independent. Oprettelse af device fil: mknod /dev/mindevice c 121 0 chmod 666 /dev/mindevice /proc/devices Character devices: 1 mem 2 pty 3 ttyp 4 ttys 6 lp 7 vcs 10 misc 13 input 14 sound 21 sg 180 usb Major nummerene: 60 to 63, 120 to 127, 240 to 253 er reserveret for ekspermintal brug. Per P. Madsen Styresystemer og tjenester 14

I/O software. Per P. Madsen Styresystemer og tjenester 15

Blocking og buffering Synkrone device: Digital I/O port, Realtids Ur,.. Simple divices der kan læses/sættes når man vil. Asynkrone device: RS232, USB, Keyboard, disk,... Kræver: Interrupt håndtering, buffering og blocking/signalning. Fremgangsmåde fra applikationen: Læsning blokere hvis der ikke er data i buffer. (Synkron app.). Signal til Applikationen når der er data. (Asynkron app.) Skrivning blokere hvis devicen ikke kan følge med dvs.buffer fuld. (Synkron app.). Signal til Applikationen når den er klar til at modtage data. (Asynkron app.) Per P. Madsen Styresystemer og tjenester 16

Problem: Fejlhåndtering Device er en kilde til fejl. Datanet fejl, disk læse/skrive fejl, printerfejl,... Strategi: Prøv at håndterer fejlen der hvor den opstår, ellers rapportere op i systemet. Fx. Disk læse fejl: Devicedriveren kan prøve et antal gange. Hvis det ikke hjælper sends en fejlmeddelese til brugeren. Per P. Madsen Styresystemer og tjenester 17

Device driver typer Char device: Strøm af byte. ttys0, lp, usb, consol,... Blok device: Data er organiseret i blokke Diske. Network interface: Strøm af byte eller pakkeopdelt. Kan ikke håndteres alene vha. fil-hald(open,read,write). Per P. Madsen Styresystemer og tjenester 18

} #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <termios.h> #include <stdio.h> main() { int fd, res, stop= 0; struct termios oldtio, newtio; char buf[255]; Eks. på brug af char device driver fd = open("/dev/ttys1", O_RDWR O_NOCTTY ); tcgetattr(fd,&oldtio); /* save current port settings */ bzero(&newtio, sizeof(newtio)); newtio.c_cflag = B38400 CRTSCTS CS8 CLOCAL CREAD; newtio.c_iflag = IGNPAR; newtio.c_oflag = 0; /* set input mode (non-canonical, no echo,...) */ newtio.c_lflag = 0; newtio.c_cc[vtime] = 0; /* inter-character timer unused */ newtio.c_cc[vmin] = 5; /* blocking read until 5 chars received */ tcflush(fd, TCIFLUSH); tcsetattr(fd,tcsanow,&newtio); while (!stop) { res = read(fd,buf,255); /* returns after 5 chars have been input */ } tcsetattr(fd,tcsanow,&oldtio); close(fd); Per P. Madsen Styresystemer og tjenester 19

Loadable kernemoduler. #include <linux/module.h> module_init(device1_init); module_exit(device1_exit); make -C /usr/src/linux M='pwd' modules APP mod1.ko insmod mod1.ko OPS rmmod mod1 Per P. Madsen Styresystemer og tjenester 20

Hjemmelavet devicedriver 1. Skriv et kernemodul der implementere deviven. Major= register_chrdev(0, MinDriver, &fops); Plus meget mere. 2. Indsæt modul i kernen. insmod MinDriver.ko 3. Lav en devicefil mknod m 664 MinDevice c Major 7 Per P. Madsen Styresystemer og tjenester 21

Hjemmelavet devicedriver static int device1_init(void) { int res; device1_cdev = cdev_alloc( ); device1_cdev->ops = &device1_fops; if (device1_major) { dev = MKDEV(device1_major, device1_minor); res = register_chrdev_region(dev, 1, "device1"); } else { res = alloc_chrdev_region(&dev, device1_minor, 1, "device1"); device1_major = MAJOR(dev); } if (res < 0) { return res;} else printk(kern_info "device1: major number %d\n",device1_major); } cdev_init(device1_cdev, &device1_fops); cdev_add (device1_cdev, dev, 1); printk(kern_info "Inserting device1 module\n"); return 0; static void device1_exit(void) { unregister_chrdev_region(dev, device1_nr_devs); } Per P. Madsen Styresystemer og tjenester 22

Hjemmelavet devicedriver int device1_open( struct inode *inode, struct file *filp); int device1_release(struct inode *inode, struct file *filp); ssize_t device1_read( struct file *filp, char *buf, size_t count, loff_t *f_pos); ssize_t device1_write(struct file *filp,const char *buf,size_t count,loff_t *f_pos); struct file_operations device1_fops = {.read= device1_read,.write= device1_write,.open= device1_open,.release= device1_release }; ssize_t device1_read( struct file *filp, char *buf, size_t count, loff_t *f_pos) { copy_to_user(buf,buffer,count); return count; } ssize_t device1_write(struct file *filp,const char *buf,size_t count,loff_t *f_pos) { copy_from_user(buffer,buf,count); return 1; } Per P. Madsen Styresystemer og tjenester 23

Hjemmelavet devicedriver static int Device_Open = 0; char *buffer; static int device1_open(struct inode *inode, struct file *file) { int minor_num = iminor(inode); } if (Device_Open) return EBUSY; Device_Open++; // Init driver buffer= kmalloc(size * sizeof(char), GFP_KERNEL); return 0; static int device1_release(struct inode *inode, struct file *file) { Device_Open ; kfree(buffer); return 0; } Per P. Madsen Styresystemer og tjenester 24

Hjemmelavet devicedriver Per P. Madsen Styresystemer og tjenester 25

Hjemmelavet devicedriver #include <linux/ioport.h> int check_region(unsigned long start, unsigned long len); struct resource *request_region(unsigned long start, unsigned long len, char *name); void release_region(unsigned long start, unsigned long len); unsigned char inb(unsigned short port); void outb(unsigned char byte, unsigned short port); unsigned short inw(unsigned short port); void outw(unsigned short word, unsigned short port); Per P. Madsen Styresystemer og tjenester 26

DMA devicedriver Per P. Madsen Styresystemer og tjenester 27

DMA A typical direct memory-access controller interface Per P. Madsen Styresystemer og tjenester 28