Presentation on theme: "OSes: 12. IOSys 1 Operating Systems v Objectives –discuss how an OS manages and controls I/O operations and I/O devices Certificate Program in Software."— Presentation transcript:
OSes: 12. IOSys 1 Operating Systems v Objectives –discuss how an OS manages and controls I/O operations and I/O devices Certificate Program in Software Development CSE-TC and CSIM, AIT September--November, 2003 12. I/O Systems (Ch. 12, S&G)
OSes: 12. IOSys 3 1. Issues v I/O is the main job in most computers –processing is secondary v An OS must deal with a wide variety of I/O devices with different properties: –mouse, hard disk, CD-ROM, joystick, keyboard, etc. continued
OSes: 12. IOSys 4 v Increase the standardization of the I/O software and hardware interfaces. v Support many types of devices. v Performance. v One solution: –device driver modules with standard interfaces Principal Design Aims
OSes: 12. IOSys 5 2. I/O Hardware v Some terminology: –port: a device’s connection point to the main processor (computer) –bus: a connection line allowing several devices to access the processor –controller: a chip or circuit board in the device that manages interaction between the device and processor
OSes: 12. IOSys 6 2.1. Typical PC Bus Structure Fig. 12.1, p.399 disk monitor graphics controller SCSI controller processor bridge/memory controller cache memory disk IDE disk controller disk expansion bus interfacekeyboard parallel portserial port PCI Bus Expansion Bus SCSI bus
OSes: 12. IOSys 7 2.2. Controller Features v Runs microcode for specific tasks –e.g. a hard disk controller may do bad-sector avoidance, buffering v Use registers for holding data, control signals –the processor communicates with the controller by reading/writing to these registers v Registers may be visible to a processor as I/O port addresses.
OSes: 12. IOSys 8 2.3. Some PC I/O Port Addresses v I/O Address Range (Hex)Device 000-00FDMA controller 040-043timer 320-32Fhard disk controller 378-37Fparallel port 3D0-3DFgraphics controller 3F0-3F7floppy drive controller :: Fig. 12.2, p.400
OSes: 12. IOSys 9 2.4. Registers I/O Port v Typically, an I/O port address is made up of 4 registers. v One register is usually 1- 4 bytes v Different bits/bytes of a register are used for manipulating different parts of the device.
OSes: 12. IOSys 10 v status: read by a processor (host) to see if a device is ready to execute a command, or has finished a command, etc. v control/command: written by a processor (host) to tell the device to start/change its settings, etc. v data-in: read by a procesor (host) v data-out: written by a processor (host) Register Names
OSes: 12. IOSys 11 2.5. Handshaking v Handshaking is one possible protocol between a host (processor) and a controller. v Example: the host writes a byte to the device: –1. The host repeatedly reads the busy bit of the device’s status register until is it clear/false u busy-waiting (polling) continued
OSes: 12. IOSys 12 –2. The host sets the write bit of the device’s command register and writes a byte into the data-out register. –3. The host sets the ready bit of the command register. –4. When the device’s controller notices the ready bit, it sets the busy bit of its status register. continued
OSes: 12. IOSys 13 –5. The controller sees the write bit of its command register. It then reads the byte from the data-out register, and does the I/O. –6. The controller clears the command ready bit, and clears the status busy bit.
OSes: 12. IOSys 14 Polling a Device v Polling often requires only 3 CPU instructions: –read the status register –use a logical-and operation to extract the busy bit –branch (goto) is not zero continued
OSes: 12. IOSys 15 v Polling becomes inefficient if done too often. v An alternative is to have the device interrupt the host (CPU) when it is free.
OSes: 12. IOSys 16 2.6. Interrupt Driven I/O Cycle Fig. 12.3, p.403 device driver initiates I/O CPU checks for interrupts between instructions CPU receives interrupt, transfers control to interrupt handler interrupt handler: processes data, returns CPU resumes interruped task CPU initiates I/O input ready, or output complete, or error generate interrupt signal I/O Controller 1 2 3 4 5 6 7
OSes: 12. IOSys 17 More Sophistication v Defer interrupt handling during critical processing. v Use more efficient ways of finding the right interrupt handler. v Multi-level interrupts. v Multiple interrupt request lines: –nonmaskable and maskable lines
OSes: 12. IOSys 18 Interrupt Vector Table v An interrupt vector table is used to map an interrupt to a routine –done by treating the interrupt number as an offset in the table –called an interrupt vector v Each entry in the table may be a list (chain) of handlers –allows overloading of the interrupt number
OSes: 12. IOSys 19 Part of a Pentium Vector Table v Vector NumberDescription 0Divide error 3Breakpoint 5Bound range error 7Device not available 12Stack fault 13General protection 14Page fault 19-31Intel reserved 32-255Maskable interrupts Fig. 12.4, p.404
OSes: 12. IOSys 20 Threads and Interrupts v A threaded kernel is useful for implementing multiple interrupt priorities. v The Solaris thread scheduler allows low priority interrupt handlers (threads) to be pre-empted by high priority interrupt handlers (threads).
OSes: 12. IOSys 21 2.7. Direct Memory Access (DMA) v When the host’s CPU does device handshaking, it is called Programmed I/O (PIO) –a waste of CPU resources v Instead, offload the work to a DMA controller –the CPU sends the I/O command to the DMA, then goes on with other work continued
OSes: 12. IOSys 22 v Higher CPU performance since: –less kernel communication –less context switching Advantages
OSes: 12. IOSys 23 DMA Diagram Fig. 12.5, p.407 disk CPU cache CPU/memory bus DMA controller memory buffer IDE disk controller PCI Bus
OSes: 12. IOSys 24 Cycle Stealing v Cycle stealing occurs when the DMA controller uses the CPU memory bus –the CPU is prevented from accessing memory –this can slow down the CPU’s computation
OSes: 12. IOSys 25 Direct Virtual Memory Access (DVMA) v In DVMA, data is transferred between two memory-mapped devices (i.e. from controller to controller) without requiring main memory –no cycle stealing required
OSes: 12. IOSys 26 3. Application I/O Interfaces v OSes treat I/O devices in a standard way using: –abstraction, encapulation, software layering v The user/programmer sees a standardized set of I/O functions. v Differences are hidden inside kernel modules called device drivers.
OSes: 12. IOSys 28 Advantages v Simplifies OS developer’s work. v Benefits hardware manufacturers v But… –different OSes have different ‘standard’ device driver interfaces.
OSes: 12. IOSys 29 3.1. Characteristics of I/O Devices v AspectVariationExample disk-transfer mode characterterminal blockdisk access methodsequentialmodem randomCD-ROM transfer schedulesynchronoustape asynchronouskeyboard sharingdedicatedtape sharablekeyboard : Fig. 12.7, p.410 continued
OSes: 12. IOSys 30 v AspectVariationExample device speedlatency seek time transfer rate delay between ops I/O directionread-onlyCD-ROM write-onlygraphics ctrller read-writedisk
OSes: 12. IOSys 31 3.2. Character and Block Devices v Character device: –transfer byte by byte v Block device: –treat blocks of bytes as the transfer unit v Standard file-system interface: –read(), write(), seek(), etc v Memory mapping: –useful for executing kernel modules/services
OSes: 12. IOSys 32 3.3. Network Devices v Distinguished due to differences in addressing and performance (reliablility, data sequencing, speed). v Standard interface: –sockets, message packets, streams –select() for monitoring collections of sockets continued
OSes: 12. IOSys 33 v Other UNIX (inter-process) communication features: –half-duplex pipes –full-duplex FIFOs (queues) –message queues
OSes: 12. IOSys 34 3.4. Clocks and Timers v Basic uses: –get the current time/the elapsed time –set a timer to trigger an operation at time T (e.g. time-slice a process) v Timers have coarse resolution (20-60 ticks/sec), which limits the precision of triggers –a CPU can execute ~100M instructions/sec
OSes: 12. IOSys 35 3.5. Blocking & Nonblocking I/O v Blocking (synchronous) I/O –the application is suspended until the I/O is completed –easy to understand/implement v Nonblocking (asynchronous) I/O –the application does not wait continued
OSes: 12. IOSys 36 v Some software requires nonblocking I/O –most games software has to be able to receive user input from the keyboard at any time while updating the screen continuously
OSes: 12. IOSys 37 Implementing Nonblocking I/O v Threads –place the blocking I/O in one thread, and let the other behaviour execute in other threads v Use nonblocking I/O system calls –they return immediately with whatever was available –e.g. select() called with a time-out of 0 continued
OSes: 12. IOSys 38 v Use asynchronous I/O system calls –they return immediately, but the completed I/O result is ‘available’ some time later –the result can be made ‘available’ in different ways: u a special variable u raising a signal (software interrupt) u calling a callback function (e.g. used in Java’s event model)
OSes: 12. IOSys 39 4. Kernel I/O Subsystems v These are features built on top of the hardware and device-driver infrastructure, including: –I/O scheduling –buffering –caching –spooling
OSes: 12. IOSys 40 4.1. I/O Scheduling v Scheduling (re-ordering) is carried out to: –improve overall system performance –share device access fairly –reduce average waiting time
OSes: 12. IOSys 41 Scheduling Example v Three jobs want to read from a hard disk. The read arm is currently near the beginning of the disk. –job 1: requests a block at the end of the disk –job 2: requests a block near the start –job 3: requests a block in the middle v New schedule: jobs 2, 3, 1
OSes: 12. IOSys 42 4.2. Buffering v A buffer is a memory area that stores data while it is being transferred between two devices, or between a device and a process.
OSes: 12. IOSys 43 Three Uses for Buffering v Cope with speed mismatches –e.g. between a modem and hard disk –double buffering may be used v Cope with different data-transfer sizes –e.g. packet transfer over a network v Support copy semantics for application I/O –e.g. so write() data cannot be changed
OSes: 12. IOSys 44 Double Buffering Illustrated VUW cs305 Slow producer Fast consumer buffer hard disk
OSes: 12. IOSys 45 Slow producer Fast consumer buffer hard disk
OSes: 12. IOSys 46 Slow producer Fast consumer buffer hard disk
OSes: 12. IOSys 47 4.3. Caching v A cache is a region of ‘fast memory’ that holds copies of data: –used to speed-up reuse and updates –e.g. recently read instructions copied from the hard disk v Cache and buffer difference: –a buffer may hold the only copy of a data item
OSes: 12. IOSys 48 4.4. Spooling v A spool is a buffer (or buffers) used to hold output for a device while the device is processing the current job. v The device can only process one job at once –e.g. a printer, tape reader v Spool management is often done by a dedicated system daemon (process)
OSes: 12. IOSys 50 4.5. UNIX I/O Kernel Data Structures Fig. 12.9, p.419 file-system record inode pointer pointers to functions: read(), write(), select(),... network record socket d.s. pointer pointers to functions: read(), write(), select(),... file descriptor process open-file table user process system open-file table active inode table network info table kernel
OSes: 12. IOSys 51 v A variety of I/O components are controlled/monitored through the open file table. v Details are hidden from the user by standard abstractions: –e.g. read() works with files and network sockets
OSes: 12. IOSys 52 5. From I/O Requests to Hardware v How does the OS convert an I/O request into hardware commands? v Consider how UNIX reads from a file on disk.
OSes: 12. IOSys 53 Lifecycle of an I/O Request Fig. 12.10, p.422 Request I/O can satisfy already? Send request to device driver. Block process. system call I/O completed Transfer data to process user process yes no kernel I/O subsystem return from call kernel I/O subsystem continued time
OSes: 12. IOSys 54 Carry out request. Send commands to controller. Block. Determine when I/O completed. Tell I/O subsystem. device controller commands Monitor device. Interrupt when I/O completed Receive interrupt. Store data in dd buffer. Signal dd. I/O completed. Generate interrupt. device driver interrupt handler keyboard device controller time
OSes: 12. IOSys 55 Filename to Disk Controller v A UNIX path name has no clear separation of the device portion: /home/fidji/ad/public_html/index.html UNIX stores a mount table (in /etc/mnttab ) of device name to pathname details: /dev/dsk/c1t1d0s0 /home/fidji … /dev/dsk/c1t2d0s0 /home/hawai … /dev/dsk/c1t4d0s0 /home/corse … continued
OSes: 12. IOSys 56 The name (e.g. /dev/dsk/c1t1d0s0 ) is looked up in the file-system, and UNIX finds: – device numbers v The major device number identifies the device driver type (e.g. character/block transfer). continued
OSes: 12. IOSys 57 v The minor device number can be used to index into a device table to find the device controller’s I/O port address or its memory mapped address.
OSes: 12. IOSys 58 Stream Modules v UNIX System V allows pipelines of driver code to be assembled dynamically for an application. module 1 module 2 module N hardware Application stream head driver end
OSes: 12. IOSys 59 6. Performance v I/O is a major factor in system performance: –it uses the CPU heavily to execute device drivers, schedule processes –cycle stealing –costs of interrupt processing –network traffic
OSes: 12. IOSys 60 Network Comms. Fig. 12.11, p.425 char typed interrupt generated interrupt handled device driver kernel user process kernel device driver network adapter interrupt generated interrupt handled system call completes context switch state saved hard ware state saved context switch network context switch Sending System
OSes: 12. IOSys 61 networ k packet receive d network adapter interrupt generated device driver kernel network daemon kernel network subdaemon context switch state saved hard ware network context switch Receiving System
OSes: 12. IOSys 62 Ways to Improve I/O Efficiency v Reduce the number of context switches. v Reduce the number of data copys to/from memory. v Reduce the number of interrupts. continued
OSes: 12. IOSys 63 v Offload I/O work to other processors. v Move more processing into hardware. v Balance the performance of CPU, memory, bus, and the I/O.
OSes: 12. IOSys 64 Efficiency Examples v The telnet daemon in Solaris runs inside a kernel thread: –that eliminates context switching between the daemon and the kernel v Front-end processors –e.g. terminal concentrators continued
OSes: 12. IOSys 65 v DMA controllers v I/O channels –an I/O channel is a dedicated CPU for offloading I/O work from the main CPU
OSes: 12. IOSys 66 Where to put I/O Functionality? Fig. 12.12, p.426 application code kernel code device driver code device controller code (hardware) device code (hardware) I/O functionality implemented using: increased development time increased efficiency increased development cost increased flexibility increased hiding from user