1 / 28

Styresystemer og tjenester

Styresystemer og tjenester. Indhold: Introduktion til styresystemer. Processer og tråde. Synkroniseringsmetoder og InterProcesCommunikation. Memory management. I/O og devicedrivere. Filsystemer. Distribuerede systemer. Sikkerhed. I/O device og hastigheder. I/O Struktur. Operativsystem.

quilla
Download Presentation

Styresystemer og tjenester

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Styresystemer og tjenester Indhold: • Introduktion til styresystemer. • Processer og tråde. • Synkroniseringsmetoder ogInterProcesCommunikation. • Memorymanagement. • I/O og devicedrivere. • Filsystemer. • Distribuerede systemer. • Sikkerhed. Styresystemer og tjenester

  2. I/O device og hastigheder. Styresystemer og tjenester

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

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

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

  6. 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 Styresystemer og tjenester

  7. 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 Styresystemer og tjenester

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

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

  10. 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; } Styresystemer og tjenester

  11. I/O software. Styresystemer og tjenester

  12. 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, ..... Styresystemer og tjenester

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

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

  15. I/O software. Styresystemer og tjenester

  16. 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.) Styresystemer og tjenester

  17. 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. Styresystemer og tjenester

  18. 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). Styresystemer og tjenester

  19. Eks. på brug af char device driver #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];        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);       } Styresystemer og tjenester

  20. 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 Styresystemer og tjenester

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

  22. 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); } Styresystemer og tjenester

  23. 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; } Styresystemer og tjenester

  24. 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; } Styresystemer og tjenester

  25. Hjemmelavet devicedriver Styresystemer og tjenester

  26. 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); Styresystemer og tjenester

  27. DMA devicedriver Styresystemer og tjenester

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

More Related