520 likes | 531 Vues
This announcement discusses signal handling in Unix, device management, device drivers, I/O strategies, and the difference between polling and interrupt-driven I/O.
E N D
Outline • Announcements • Computer Architecture – continued • Signal handling in Unix • Device Management • Device Drivers • I/O Strategies • Polling vs. interrupt-driven I/O
Announcements • We are going to have a quiz at the end of the class on Sept. 18, 2003 • Which is a week from today • It will be a closed book and closed notes quiz • It will cover • System calls and how to use them • Lecture notes up to next Tuesday (Sept. 16) • Related materials in the book COP4610
Announcements – cont. • Next week’s recitation session (Sep. 17) will be optional • I will use that mainly to answer questions related to the first programming assignment • By today we should have covered everything you need to know in order to implement the assignment • You are not required to attend as I will not cover new materials • I will be in LOV 301 as we normally meet for recitation COP4610
Announcements – cont. • Comments regarding the first programming assignment • You can use simple-shell.cc as a starting point or the code in the textbook • You can use the code segments from examples I distributed • Please note that you are not allowed to copy other’s work • Comments on Homework #1 COP4610
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 higher-level component has a uniform interface for different devices COP4610
… write(…); … Device Interface Terminal Driver Printer Driver Disk Driver Terminal Controller Printer Controller Disk Controller Device Driver Interface COP4610
Application Process System Interface File Manager Device-Independent Device-Dependent Hardware Interface Command Status Data Device Controller Device Management Organization COP4610
I/O Strategies • Direct I/O • The CPU is responsible for determining when the I/O operation has completed and then for transferring the data between the primary memory and the device controller data registers • Polling or interrupt-driven I/O • This seems not effective for devices with large transfers, such as a disk drive • Direct Memory Access (DMA) COP4610
Direct-Memory Access • Direct memory access controllers • Can read/write data directly from/to primary memory addresses with no CPU intervention after the driver has started the I/O operation COP4610
Direct-Memory Access – cont. COP4610
Direct-Memory Access – cont. COP4610
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 COP4610
read(device, …); 1 Data System Interface read function 5 write function 2 3 4 Hardware Interface Command Status Data Device Controller Direct I/O with Polling COP4610
busy done 0 0 idle 0 1 finished 1 0 working 1 1 (undefined) . . . busy done Error code . . . Command Status Data 0 Data 1 Logic Data n-1 Device Controllers – cont. COP4610
… // Start the device … While(busy == 1) wait(); // Device I/O complete … done = 0; Software busy done Hardware … while((busy == 0) && (done == 1)) wait(); // Do the I/O operation busy = 1; … Polling I/O COP4610
read(device, …); 9 1 8b Data System Interface Device Status Table 4 7 Device Handler read driver 2 write driver 6 3 8a Interrupt Handler Hardware Interface 5 Command Status Data Device Controller Interrupt-Driven I/O COP4610
Interrupt-Driven Versus Polling • In general, an interrupt-driven system will have a higher CPU utilization than a polling-based system • The CPU time on polling by one process may be utilized by another process to perform computation COP4610
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 COP4610
I/O-CPU Overlap Through interrupt-driven I/O COP4610
I/O-CPU Overlap – cont. • Sequential operation and overlapped operation COP4610
I/O-CPU Overlap – cont. - I/O-CPU overlap through overlapped operation and polling COP4610
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 COP4610
Compute-bound Time I/O-bound Phases of a Process COP4610
Device Manager Design • Device drivers • Application programming interface • Coordination among application processes, drivers, and device controllers • Performance optimization COP4610
BSD UNIX Driver Functions COP4610
The Kernel Interface COP4610
funci(…) 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 … } Trap Table Device-Independent Function Call COP4610
System call interface open(){…} read(){…} Entry Points for Device j etc. Other Kernel services Driver for Device j Re-configurable Device Drivers COP4610
Handling Interrupts Device driver J Device interrupt handler J Device status table int read(…) { // Prepare for I/O save_state(J); out dev# // Done (no return) } void dev_handler(…) { get_state(J); //Cleanup after op signal(dev[j]); return_from_sys_call(); } J Interrupt Handler Device Controller COP4610
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 COP4610
CPU-device Interactions COP4610
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 COP4610
Buffering • Buffering • A technique to keep slower I/O devices busy during times when a process is not requiring I/O operations COP4610
The Pure Cycle Water Company Customer Office Water Company Returning the Empties Water Producer Water Consumers Delivering Water COP4610
Buffering – cont. COP4610
Double Buffering COP4610
Multiple Buffers - Producer-consumer problem COP4610
Spooling • A spool is a buffer that holds output for a device that cannot accept interleaved data streams • Printer is an example COP4610
Bus Generic Controller Communications Controller Local Device Cabling connecting the controller to the device Device • Printer • Modem • Network Communication Devices COP4610
Randomly Accessed Devices COP4610
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 COP4610
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 COP4610
Optimizing Access to Rotating Devices • First-Come-First-Served (75), 66, 87, 93, 36, 23 • 52+ 64 + 51 + 57 + 27 = 251 steps COP4610
Optimizing Access to Rotating Devices – cont. • Shortest-Seek-First-First • - SSTF: (75), 66, 87, 93, 36, 23 • 11 + 21 + 6 + 57 + 13 = 107 steps COP4610
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 COP4610
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 COP4610
Serial Port CPU Memory Serial Device • Printer • Terminal • Modem • Mouse • etc. COP4610
Device Driver API • Device Driver • Set UART parms • read/write ops • Interrupt hander Software on the CPU Bus Interface • UART API • parity • bits per byte • etc. Serial Device (UART) • RS-232 Interface • 9-pin connector • 4-wires • bit transmit/receive • ... Serial Port COP4610
CPU • Dialing & connecting • Convert analog voice to/from digital • Convert bytes to/from bit streams • Transmit/receive protocol Memory Serial Device Modem Phone Switched Telephone Network Adding a Modem COP4610
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 Serial Device RS-232 Modem Serial Communication COP4610