Outline • Device Management – Device Drivers – I/O Strategies – Polling vs. interrupt-driven I/O • • • • Device Manager Design Buffering Optimizing Access for Rotating Devices Device Management in Linux Announcements • We are going to have a quiz at the end of the class on Sept. 18, 2003 – It will be a closed book and closed notes quiz – It will cover • System calls and how to use them • Lecture notes up to Today (Sept. 16) • Related materials in the book • Tomorrow’s recitation session is optional – You are not required to come – I will mainly answer questions related to Lab 1 5/29/2016 COP4610 2 Review: Device Drivers • The part of OS that implements device management is called collectively as device manager, which includes device drivers and device driver infrastructure – Device drivers can be complex – However, the drivers for different devices implement a similar interface so that a higherlevel component has a uniform interface for different devices 5/29/2016 COP4610 3 Device Management Organization Application Process System Interface File Manager Device-Independent Device-Dependent Hardware Interface Command Status Data Device Controller 5/29/2016 COP4610 4 Review: Direct I/O vs. Direct-Memory Access 5/29/2016 COP4610 5 Review: I/O Strategies – cont. • Direct I/O or DMA for data transferring • Polling or interrupt-driven • I/O strategies – Direct I/O with polling – DMA I/O with polling • Not supported in general – Direct I/O with interrupts – DMA I/O with interrupts 5/29/2016 COP4610 6 Review: Direct I/O with Polling read(device, …); 1 System Interface Data read function 5 write function 2 3 4 Hardware Interface Command Status Data Device Controller 5/29/2016 COP4610 7 Device Controllers – cont. ... busy Command done Error code Status ... busy done 0 0 idle 0 1 finished 1 0 working 1 1 (undefined) Data 0 Data 1 Logic Data n-1 5/29/2016 COP4610 8 Review: Interrupt-Driven I/O read(device, …); 1 9 8b Data System Interface Device Status Table read driver 2 4 7 Device Handler write driver 6 3 Interrupt Handler 8a 5 Hardware Interface Command Status Data Device Controller 5/29/2016 COP4610 9 Review: Interrupt Handling • At the end of each instruction cycle, we check if an interrupt has occurred 5/29/2016 COP4610 10 Interrupt-Driven Direct-Memory Access – cont. 5/29/2016 COP4610 11 Interrupt-Driven Versus Polling • In general, an interrupt-driven system will have a higher CPU utilization than a pollingbased system – The CPU time on polling by one process may be utilized by another process to perform computation 5/29/2016 COP4610 12 Comparison of Polling and Interrupt-Driven I/O Performance • Polling is normally superior from the viewpoint of a single process – Because overhand of polling is less • Interrupt-driven I/O approach gives better overall system performance 5/29/2016 COP4610 13 I/O-CPU Overlap Through interrupt-driven I/O 5/29/2016 COP4610 14 I/O-CPU Overlap – cont. • Sequential operation and overlapped operation 5/29/2016 COP4610 15 I/O-CPU Overlap – cont. - I/O-CPU overlap through overlapped operation and polling 5/29/2016 COP4610 16 I/O-bound and Compute-bound Processes • I/O-bound process – A process’s overall execution time is dominated by the time to perform I/O operations • Compute-bound process – A process’s time on I/O is small compared to the amount of time spent using the CPU • Many processes have I/O-bound and compute-bound phases 5/29/2016 COP4610 17 Phases of a Process Compute-bound Time I/O-bound 5/29/2016 COP4610 18 Device Manager Design • Device drivers – Application programming interface • Coordination among application processes, drivers, and device controllers • Performance optimization 5/29/2016 COP4610 19 BSD UNIX Driver Functions 5/29/2016 COP4610 20 The Kernel Interface 5/29/2016 COP4610 21 Device-Independent Function Call funci(…) Trap Table 5/29/2016 dev_func_i(devID, …) { // Processing common to all devices … switch(devID) { case dev0: dev0_func_i(…); break; case dev1: dev1_func_i(…); break; … case devM: devM_func_i(…); break; }; // Processing common to all devices … } COP4610 22 Re-configurable Device Drivers System call interface open(){…} read(){…} Entry Points for Device j etc. Other Kernel services Driver for Device j 5/29/2016 COP4610 23 Handling Interrupts Device driver J int read(…) { // Prepare for I/O save_state(J); out dev# // Done (no return) } Device status table J Device interrupt handler J void dev_handler(…) { get_state(J); //Cleanup after op signal(dev[j]); return_from_sys_call(); } Interrupt Handler Device Controller 5/29/2016 COP4610 24 Handling Interrupts – cont. Device driver J Device interrupt handler J int read(…) { … out dev# // Return after interrupt wait(dev[J}); return_from_sys_call(); } void dev_handler(…) { //Cleanup after op signal(dev[j]); } Interrupt Handler Device Controller 5/29/2016 COP4610 25 CPU-device Interactions 5/29/2016 COP4610 26 Buffering • Buffering – A technique to keep slower I/O devices busy during times when a process is not requiring I/O operations – Input buffering – Output buffering 5/29/2016 COP4610 27 The Pure Cycle Water Company Customer Office Water Company Returning the Empties Water Producer Water Consumers Delivering Water 5/29/2016 COP4610 28 Buffering – cont. 5/29/2016 COP4610 29 Double Buffering 5/29/2016 COP4610 30 Multiple Buffers - Producer-consumer problem 5/29/2016 COP4610 31 Spooling • A spool is a buffer that holds output for a device that cannot accept interleaved data streams – Printer is an example 5/29/2016 COP4610 32 Device Characteristics • Character devices vs. block devices • Communication devices • Sequentially accessed storage devices • Randomly accessed storage devices 5/29/2016 COP4610 33 Communication Devices Bus Generic Controller Communications Controller Local Device Cabling connecting the controller to the device Device •Printer •Modem •Network 5/29/2016 COP4610 34 Randomly Accessed Devices 5/29/2016 COP4610 35 Optimizing Access to Rotating Devices • Access time has three major components – Seek time – the time for the disk arm to move the heads to the cylinder containing the desired sector – Rotational latency – the additional time waiting for the disk to rotate the desired sector to the disk head – Transfer Time - time to copy bits from disk surface to memory 5/29/2016 COP4610 36 Optimizing Seek Time • Multiprogramming on I/O-bound programs => set of processes waiting for disk • Seek time dominates access time => minimize seek time across the set • Tracks 0:99; Head at track 75, requests for 23, 87, 36, 93, 66 5/29/2016 COP4610 37 Optimizing Access to Rotating Devices -First-Come-First-Served (75), 66, 87, 93, 36, 23 52+ 64 + 51 + 57 + 27 = 251 steps 5/29/2016 COP4610 38 Optimizing Access to Rotating Devices – cont. -Shortest-Seek-First-First - SSTF: (75), 66, 87, 93, 36, 23 –11 + 21 + 6 + 57 + 13 = 107 steps 5/29/2016 COP4610 39 Optimizing Access to Rotating Devices – cont. -Scan/Look - Scan: (75), 87, 93, 99, 66, 36, 23 –12 + 6 + 6 + 33 + 30 + 13 = 100 steps - Look: (75), 87, 93, 66, 36, 23 –12 + 6 + 27 + 30 + 13 = 87 steps 5/29/2016 COP4610 40 Optimizing Access to Rotating Devices – cont. - Circular Scan/ Circular Look • Circular Scan: (75), 87, 93, 99, 23, 36, 66 –12 + 6 + 6 + home + 23 + 13 + 30 = 90 + home • Circular Look: (75), 87, 93, 23, 36, 66 –12 + 6 + home + 23 + 13 + 30 = 84 + home 5/29/2016 COP4610 41 Serial Port CPU Memory Serial Device • Printer • Terminal • Modem • Mouse • etc. 5/29/2016 COP4610 42 Serial Port Device Driver API Device Driver Software on the CPU • Set UART parms •read/write ops •Interrupt hander UART API •parity •bits per byte •etc. 5/29/2016 COP4610 Bus Interface Serial Device (UART) RS-232 Interface • 9-pin connector • 4-wires • bit transmit/receive • ... 43 Adding a Modem CPU Memory Serial Device Modem • Dialing & connecting • Convert analog voice to/from digital • Convert bytes to/from bit streams • Transmit/receive protocol Phone Switched Telephone Network 5/29/2016 COP4610 44 Serial Communication Device Driver •Set UART parms •read/write ops •Interrupt hander Driver-Modem Protocol • Dialing & connecting • Convert analog voice to/from digital • Convert bytes to/from bit streams • Transmit/receive protocol 5/29/2016 COP4610 Serial Device RS-232 Modem 45 Exploiting the Phone Network Logical Communication CPU Memory CPU Comm Device Comm Device Modem Modem Phone Phone Memory Switched Telephone Network 5/29/2016 COP4610 46 Device Management in Linux • While it builds on the same basic principles, it is more complex and with more details – There are a lot of device drivers included and you can also develop your own device drivers for specific purpose devices • Linux divides into char-oriented devices and block oriented devices – fs/blk_dev.c – fs/char_dev.c 5/29/2016 COP4610 47 Summary • Device Management Organization • I/O Strategies • Device is the bottleneck for I/O-bound processes – Overlap between I/O and CPU will increase the system’s throughput rate • Buffering • Access Optimization for Disks 5/29/2016 COP4610 48