1 / 18

Input/Output - II

CS423UG Operating Systems. Input/Output - II. Indranil Gupta Lecture 19 Oct 7, 2005. Content. I/O software Principles Implementations Issues. Review. I/O basic concepts Interrupts DMA Memory Mapped I/O. I/O Software: Principles. Device independence

Download Presentation

Input/Output - II

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. CS423UG Operating Systems Input/Output - II Indranil Gupta Lecture 19 Oct 7, 2005

  2. Content I/O software • Principles • Implementations • Issues CS 423UG - Operating Systems, Indranil Gupta

  3. Review • I/O basic concepts • Interrupts • DMA • Memory Mapped I/O CS 423UG - Operating Systems, Indranil Gupta

  4. I/O Software: Principles • Device independence • Possible to write programs that can access variety of I/O devices without having to specify the device in advance. • Read page from either floppy or hard disk without modifying the program • Uniform naming • The name of a file or a device should simply be a string or an integer and not dependent on the device in any way • Example: In Unix all files and devices are addressed the same way by a path name (e.g., /dev/* etc.). • Synchronous (blocking) vs asynchronous (interrupt-driven) transfers • Example: most devices are asynchronous. User programs are typically written assuming I/O operations are synchronous. Hence, it is up to OS to make asynchronous operations look like synchronous to the user programs. CS 423UG - Operating Systems, Indranil Gupta

  5. I/O Software Principles (cont.) • Buffering • Data stored temporarily before use • Data might need to be buffered because it might not be time yet for it to be processed • Example: Device Controller buffers stream of data until an entire block has been read in. Network packets come in off the network, and need to be buffered for protocol processing. • Shared vs. Dedicated devices • Shared  monitor, disk. Dedicated  keyboard, tape. • Shared  either low performance or complex. Dedicated  either deadlock-risky or complex. CS 423UG - Operating Systems, Indranil Gupta

  6. Programmed I/O • Three ways to perform I/O: • Interrupt-driven IO • I/O using DMA • Programmed IO: • Every I/O operation is programmed and controlled. • Example: printing a file from user program to the printer means that data is first copied to the kernel, then the OS enters a tight loop outputting the characters one at a time (to control port). • Essential aspect of programmed I/O is that the CPU continuously polls the device to see if it is ready to accept another character. It uses polling (or busy waiting) behavior on the status port. • CPU cannot do anything else in the meantime. CS 423UG - Operating Systems, Indranil Gupta

  7. Host-Controller Interface: Polling • Controller and CPU have producer-consumer relationship… • Controller indicates through busy bit (status bit) if it is busy to work or not • CPU signals its wishes via command-ready bit (command register) CS 423UG - Operating Systems, Indranil Gupta

  8. Tradeoffs • Interrupt-driven I/O: • Pro: saves CPU from busy waiting • Con: triggering and handling interrupt adds overhead • Programmed I/O: • Pro: requires no interrupt or DMA support • Con: wastes CPU time • I/O using DMA: • Pro: relieves CPU from I/O operation • Con: DMA processor slower than CPU, extra overhead for interrupts CS 423UG - Operating Systems, Indranil Gupta

  9. I/O Software Layers of the I/O system and the main functions of each layer (typical) CS 423UG - Operating Systems, Indranil Gupta

  10. Device Drivers • Device-specific code to control an I/O device, is usually written by device's manufacturer (vendor) • Each controller has some device registers used to give it commands. The number of device registers and the nature of commands vary from device to device (e.g., mouse driver accepts information from the mouse about how far it has moved, disk driver has to know about sectors, tracks, heads, etc). • A device driver is usually part of the OS kernel • Compiled with the OS • Dynamically loaded into the OS during execution • Each device driver handles • one device type (e.g., mouse) • one class of closely related devices (e.g., SCSI disk driver to handle multiple disks of different sizes and different speeds.) • Categories: • Block devices, Character devices, … CS 423UG - Operating Systems, Indranil Gupta

  11. Functions of a Device Driver • Accept abstract read and write requests from the device-independent layer above • Initialize the device • Manage power requirements and log events • Check input parameters for validity • Translate valid input from abstract to concrete terms • e.g., convert linear block number into the head, track, sector and cylinder number for disk access • Check the device to see if it’s free • Control the device by issuing a sequence of commands - the driver determines what commands will be issued CS 423UG - Operating Systems, Indranil Gupta

  12. Device Driver Protocol • After driver knows which commands to issue, it starts to write them into controller's device registers • After writing each command, it checks to see if the controller accepted the command and is prepared to accept the next one. • After commands have been issued, either (a) the device driver waits for the device to interrupt it back; or (b) the device doesn't wait because the command finished without any delay. CS 423UG - Operating Systems, Indranil Gupta

  13. Device-Independent I/O Software Layer • Functions : • Uniform interfacing for device drivers • Buffering • Error reporting • Allocating and releasing dedicated devices • Providing a device-independent block size CS 423UG - Operating Systems, Indranil Gupta

  14. Device-Independent I/O Software Layer • Interrupts are facts of life, but should be hidden away, so that as little of the OS as possible knows about them. • The best way to hide interrupts is to have the driver starting an I/O operation block until I/O has completed and the interrupt occurs. • When interrupt happens, the interrupt handler handles the interrupt. • Once the handling of interrupt is done, the interrupt handler unblocks the device driver that started it. • This model works if drivers are structured as kernel processes with their own states, stacks and program counters. CS 423UG - Operating Systems, Indranil Gupta

  15. Uniform Interfacing for Device Drivers • Goal: how to make all I/O devices and drivers look similar • Problem: each driver wants to have a different interface with the OS (which is a lot of programming effort) • Solution: Not all devices are absolutely identical, but usually there are only small number of device types. • Example: block and character devices • The device-independent software takes care of mapping symbolic device names (e.g., /dev/kbd or /dev/dsk0) onto the proper driver. CS 423UG - Operating Systems, Indranil Gupta

  16. Buffering • Buffer is a memory area that stores data while they are transferred between two devices or between a device and an application. • Reasons for buffering: • Cope with speed mismatch between the producer and consumer of a data stream - use double buffering • Adapt between devices that have different data-transfer sizes • Support of copy semantics for application I/O - application writes to an application buffer and the OS copies it to the kernel buffer and then writes it to the disk • Unbuffered input strategy is inefficient, as the user process must be started up with every incoming character. • Caching • Cache is region of fast memory that holds copies of data and it allows for more efficient access. • Difference? CS 423UG - Operating Systems, Indranil Gupta

  17. Buffering Issues • Pros: • Unbuffered input strategy is inefficient, as the user process must be started up with every incoming character. • Buffering in user space (e.g., transfer of file from disk to memory) • If the buffer is paged out, where should the character be put? One solution would be to pin the pages into the real memory, but this could degrade performance if many processes start to pin pages in memory. • Buffering in kernel followed by copying to user space: • Far more efficient than the previous methods, but again the problem occurs if the kernel buffer becomes full and the user buffer page is paged out. Also, double copying. • Double buffering in the kernel • While one kernel buffer takes incoming data, the other buffer is copied to the user space. • Note: if data gets buffered too many times, performance suffers. CS 423UG - Operating Systems, Indranil Gupta

  18. Reminders • Reading so far: Sections 5.0-5.3 • Reading for next week: Section 5.5. • Midterm next Monday, in class (10.00 am – 10.50 am). CLOSED BOOK, CLOSED NOTES. • Syllabus: everything until Lecture 12 (Deadlocks – II), HWs 1-3, Chapters 1-3. • Please arrive here on time! CS 423UG - Operating Systems, Indranil Gupta

More Related