Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Per P. MadsenStyresystemer og tjenester1 Indhold: 1.Introduktion til styresystemer. 2.Processer og tråde. 3.Synkroniseringsmetoder og InterProcesCommunikation.

Lignende præsentationer


Præsentationer af emnet: "Per P. MadsenStyresystemer og tjenester1 Indhold: 1.Introduktion til styresystemer. 2.Processer og tråde. 3.Synkroniseringsmetoder og InterProcesCommunikation."— Præsentationens transcript:

1 Per P. MadsenStyresystemer og tjenester1 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.

2 Per P. MadsenStyresystemer og tjenester2 I/O device og hastigheder.

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

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

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

6 Per P. MadsenStyresystemer og tjenester6 I/O porte på en PC 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 /proc/ioports

7 Per P. MadsenStyresystemer og tjenester7 I/O memory på en PC 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 /proc/iomem

8 Per P. MadsenStyresystemer og tjenester8 Simpel character devicedriver x x x Controler: UART Status Data Control Systenkald Aplikation Operativsystem Output kald. ISR RTE 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. x

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

10 Per P. MadsenStyresystemer og tjenester10 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; }

11 Per P. MadsenStyresystemer og tjenester11 I/O software.

12 Per P. MadsenStyresystemer og tjenester12 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,.....

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

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

15 Per P. MadsenStyresystemer og tjenester15 I/O software.

16 Per P. MadsenStyresystemer og tjenester16 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.)

17 Per P. MadsenStyresystemer og tjenester17 Fejlhåndtering Problem: 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.

18 Per P. MadsenStyresystemer og tjenester18 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).

19 Per P. MadsenStyresystemer og tjenester19 Eks. på brug af char device driver #include #include #include #include #include main() { int fd, res, stop= 0; struct termios oldtio, newtio; char buf[255]; 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); }

20 Per P. MadsenStyresystemer og tjenester20 Loadable kernemoduler. #include module_init(device1_init); module_exit(device1_exit); make -C /usr/src/linux M='pwd' modules mod1.ko insmod mod1.ko APP OPS rmmod mod1

21 Per P. MadsenStyresystemer og tjenester21 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

22 Per P. MadsenStyresystemer og tjenester22 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); }

23 Per P. MadsenStyresystemer og tjenester23 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; }

24 Per P. MadsenStyresystemer og tjenester24 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; }

25 Per P. MadsenStyresystemer og tjenester25 Hjemmelavet devicedriver

26 Per P. MadsenStyresystemer og tjenester26 Hjemmelavet devicedriver #include 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);

27 Per P. MadsenStyresystemer og tjenester27 DMA devicedriver

28 Per P. MadsenStyresystemer og tjenester28 DMA A typical direct memory-access controller interface


Download ppt "Per P. MadsenStyresystemer og tjenester1 Indhold: 1.Introduktion til styresystemer. 2.Processer og tråde. 3.Synkroniseringsmetoder og InterProcesCommunikation."

Lignende præsentationer


Annoncer fra Google