11-I/O Systems

11.1 Basic Issues in Device Management 11.2 A Hierarchical Model 11.3 I/O Devices 11.4 Device Drivers Memory-Mapped vs Explicit Device Interfaces Programmed I/O with Polling Programmed I/O with Interrupts Direct Memory Access (DMA) 11.5 Device Management Buffering and caching Error Handling Disk Scheduling
展开查看详情

1.Operating Systems 1 11. I/O Systems 11.1 Basic Issues in Device Management 11.2 A Hierarchical Model 11.3 I/O Devices 11.4 Device Drivers Memory-Mapped vs Explicit Device Interfaces Programmed I/O with Polling Programmed I/O with Interrupts Direct Memory Access (DMA) 11.5 Device Management Buffering and caching Error Handling Disk Scheduling

2.Operating Systems 2 Basic Issues I/O devices: Communication devices Input only (keyboard, mouse, joystick, light pen) Output only (printer, visual display, voice synthesizers…) Input/output (network card…) Storage devices Input/output (disk, tape, writeable optical disks…) Input only (CD-ROM…)

3.Operating Systems 3 Basic Issues Every device type/model is different input/output/both, block/char oriented, speed, errors, … Main tasks of I/O system : Present logical (abstract) view of devices Hide details of hardware interface Hide error handling Facilitate efficient use Overlap CPU and I/O Support sharing of devices Protection when device is shared (disk) Scheduling when exclusive access needed (printer)

4.Hierarchical Model of the I/O System Operating Systems 4

5.Operating Systems 5 Hierarchical Model of the I/O System I/O system interface: Abstract interface to the I/O system I/O system can be divided into two layers: Device-Independent I/O Software: Data buffering, data caching, device scheduling, device naming, … Device drivers: Incorporate specific knowledge of devices they access Supplied by device manufacturer New driver must be installed when new device is added to system Software-hardware interface: Each I/O device is accessed through a special hardware device called a device controller , by reading and writing registers provided by the controller These registers constitute the software/hardware interface

6.I/O System Interface Operating Systems 6

7.Operating Systems 7 I/O System Interface Block-Oriented Device Interface d irect access contiguous blocks usually fixed block size Operations : Open : verify device is ready, prepare it for access Read : Copy a block into main memory Write : Copy a portion of main memory to a block Close : Release the device Note: these are lower level than those of the FS Used by File System and Virtual Memory System Applications typically go through the File System

8.Operating Systems 8 I/O System Interface Stream-Oriented Device Interface character-oriented sequential access Operations : Open : reserve exclusive access Get : return next character of input stream Put : append character to output stream Close : release exclusive access Note : these too are different from those of the FS but some systems try to present a uniform view of files and devices

9.Operating Systems 9 I/O System Interface Network Interface k ey abstraction : socket endpoints of a “line” between two processes once established, use protocol to communicate Connection-less protocols s end messages, called datagrams Operations: send , receive (to/from sockets) Connection-based protocols e stablish a connection called virtual circuit Operations : connect , accept , read , write

10.I/O Devices Operating Systems 10

11.Operating Systems 11 I/O Devices – Output Display monitors c haracter or graphics oriented Different data rates : 25 x 80 characters vs 800 x 600 pixels (1B allows 256 colors) Refresh 30-60 times/s for video Printers (ink jet, laser) Interface write to controller buffer wait for completion handle errors

12.Operating Systems 12 I/O Devices – Input Keyboards m ost common : “ QWERTY ” Pointing devices Mouse Trackball Joystick Scanners Interface device generates interrupt when data is ready read data from controller buffer low data rates, not time-critical

13.Operating Systems 13 I/O Devices – Storage Disks Surface , tracks/surface, sectors/track, bytes/sector All sectors numbered sequentially 0..(n-1) (device controller provides mapping)

14.Operating Systems 14 I/O Devices – Storage Track skew Account for seek-to-next-track to minimize rotational delay

15.Operating Systems 15 I/O Devices – Storage Double-sided or multiple surfaces Tracks with same diameter = cylinder Sectors are numbered within cylinder consecutively to minimize seek time

16.Operating Systems 16 I/O Devices – Storage Optical disks CD-ROM, CD-R (WORM), CD-RW Originally designed for music Data stored as continuous spiral , subdivided into sectors Higher storage capacity : 0.66 GB/surface Constant linear speed (200-530 rpm ), high data rate

17.Operating Systems 17 I/O Devices – Storage Critical issue: data transfer rates of disks Sustained rate : continuous data delivery Peek rate : transfer once read/write head is in place d epends on rotation speed and data density Example : 7200 rpm, 100 sectors/track, 512 bytes/sector. What is the peak transfer rate? 7200 rpm : 60,000/7200=8.3 ms /rev 8.3/100 = 0.083 ms /sector 512 bytes transferred in 0.083 ms : ~6.17 MB/s What is the Sustained rate?–Depends on file organization

18.Operating Systems 18 I/O Devices -- Exercise Example: single-sided floppy 80 tracks 18 sectors/track 512 B/sector average seek time: 30 ms seek time between adjacent tracks: 3 ms rotational speed: 360 rpm A sequentially organized file of 12 blocks spread randomly over all tracks clustered , such that the blocks are spread randomly over 2 neighboring tracks . stored in consecutive sectors on one track How long will it take to read the entire file in each case?

19.Hierarchical Model of the I/O System Operating Systems 19

20.Operating Systems 20 Device Drivers a ccept command from application get/put character read/write block send/receive packet i nteract with device controller (hardware) to carry out command driver-controller interface : set of registers

21.Operating Systems 21 Device Drivers: Interface to Controller How does driver read/write registers? Explicit: special I/O instruction : io_store cpu_reg , dev_no , dev_reg Memory-mapped: CPU instruction : store cpu_reg , n ( n is memory address )

22.Operating Systems 22 Programmed I/O with Polling Who moves the data ? How does driver know when device is ready ? CPU is responsible for m oving every character to/from controller buffer d etecting when I/O operation completed Protocol to input a character/block:

23.Operating Systems 23 Programmed I/O with Polling Driver operation to input sequence of characters or blocks: i = 0; do { write_reg ( opcode , read); while ( busy_flag == true) {…??...}; //waiting mm_in_area [i] = data_buffer ; increment i; compute; } while (…)

24.Operating Systems 24 Programmed I/O with Polling Driver operation to output sequence of characters or blocks: i = 0; do { compute; data_buffer = mm_out_area [i]; increment i; write_reg ( opcode , write); while ( busy_flag == true) {…??...}; } while ( data_available )

25.Operating Systems 25 Programmed I/O with Polling What to do while waiting ? Idle (busy wait) Some other computation (what?) How frequently to poll? Give up CPU Device may remain unused for a long time Data may be lost

26.Operating Systems 26 Programmed I/O with Interrupts CPU is responsible for moving data , but Interrupt signal informs CPU when I/O operation completes Protocol to input a character/block:

27.Operating Systems 27 Programmed I/O with Interrupts Compare Polling with Interrupts : i = 0; do { write_reg ( opcode , read);  while ( busy_flag == true) {…}; //active wait mm_in_area [i ] = data_buffer ; increment i; compute ; } while (…) i = 0; do { write_reg ( opcode , read );  block to wait for interrupt; mm_in_area [i ] = data_buffer ; increment i; compute ; } while (…)

28.Operating Systems 28 Programmed I/O with Interrupts Example: Keyboard driver do { block to wait for interrupt; mm_in_area [ i ] = data_buffer ; increment i ; compute( mm_in_area []); } while ( data_buffer != ENTER) Note : there is no write_reg command, pressing a key generates interrupt compute depends on type of input: raw/cooked E.g. trying to type “text” but with typos raw : t e s t ← BS x → cooked: t e x t

29.Operating Systems 29 Programmed I/O with Interrupts I/O with interrupts: more complicated, involves OS Example : sequence of reads More overhead (OS) but better device utilization