Operating Systems CMPSC 473

42
Operating Systems CMPSC 473 I/O Management (1) November 30 2010 - Lecture 23 Instructor: Bhuvan Urgaonkar

description

Operating Systems CMPSC 473. I/O Management (1) November 30 2010 - Lecture 23 Instructor: Bhuvan Urgaonkar. Announcements. Project 3 due today Please indicate time to meet TA on sheet Project 4 out and due on Dec 10 You need to study material on content addressable storage - PowerPoint PPT Presentation

Transcript of Operating Systems CMPSC 473

Page 1: Operating Systems CMPSC 473

Operating SystemsCMPSC 473I/O Management (1)

November 30 2010 - Lecture 23Instructor: Bhuvan Urgaonkar

Page 2: Operating Systems CMPSC 473

Announcements• Project 3 due today• Please indicate time to meet TA on sheet• Project 4 out and due on Dec 10

– You need to study material on content addressable storage

– Will release slides on this later today• Will release practice question set to

help you prepare for the final exam (sometime this week)– Exam is on Dec 16

Page 3: Operating Systems CMPSC 473

I/O Management: Topics

• General issues in I/O management

• Secondary storage management– Properties of media

• Magnetic disks and Flash– Systems software for using these media

• File Systems

• Note: Would like you to read ahead for P4– Material on content addressable storage:

will post slides

Page 4: Operating Systems CMPSC 473

I/O Hardware• Incredible variety of I/O devices• Two ways of communicating

– Port – Bus

• Plus … interrupts – Unidirectional: From device to CPU– Special CPU input lines/pins for

these

Page 5: Operating Systems CMPSC 473

Some familiar ports

Page 6: Operating Systems CMPSC 473

I/O Hardware• Incredible variety of I/O devices• Two ways of communicating

– Port– Bus

• Controller: Electronics to operate a port/bus or a device – More complex controller: host adapter

Page 7: Operating Systems CMPSC 473

Some examples

PCI slots and card

Page 8: Operating Systems CMPSC 473

Some examplesSATA cable

SATA ports on a motherboard

Page 9: Operating Systems CMPSC 473

A Typical PC Bus Structure

Page 10: Operating Systems CMPSC 473

I/O Hardware

• I/O instructions control devices• Devices have addresses, used by

– Direct I/O instructions• These are part of the ISA• E.g., IN and OUT on Intel

– Memory-mapped I/O• Not to be confused with memory mapped file IO!

Page 11: Operating Systems CMPSC 473

Direct V. Memory Mapped IO

• Direct I/O• Uses special instructions for accessing the

I/O devices• i.e., different from loads/stores

• IO devices have separate address space from general memory• Either accomplished by an extra IO pin in

CPU’s physical interface• Or, separate bus for IO devices• Also called isolated IO

Page 12: Operating Systems CMPSC 473

Direct V. Memory Mapped IO

• Memory Mapped I/O• Uses loads and stores

Page 13: Operating Systems CMPSC 473

Device I/O Port Locations on PCs

(partial)

Page 14: Operating Systems CMPSC 473

Communication between host and

device• Employs registers on the port/controller

• Typically four important registers– Data-in: read by the host to get input– Data-out: written by the host to send output– Status: Bits readable by the host that

indicate state of port• Has the current command been completed?• Has a device error occurred?• Is there data available to be read from Data-in

register?– Control: Writable by the host to start a

command, select certain properties of the port (e.g., speed)

• Interaction between host and controller– Polling– Interrupts

Page 15: Operating Systems CMPSC 473

Polling• Determines state of device

– command-ready– busy– Error

• Busy-wait cycle to wait for I/O from device

Page 16: Operating Systems CMPSC 473

Interrupts• CPU Interrupt-request line triggered by

I/O device• Interrupt handler receives interrupts• Maskable to ignore or delay some interrupts• Interrupt vector to dispatch interrupt to

correct handler– Based on priority– Some non-maskable

• Interrupt mechanism also used for exceptions

Page 17: Operating Systems CMPSC 473
Page 18: Operating Systems CMPSC 473

Intel Pentium Processor Event-Vector Table

Page 19: Operating Systems CMPSC 473

Direct Memory Access

• Used to avoid programmed I/O for large data movement

• Requires DMA controller

• Bypasses CPU to transfer data directly between I/O device and memory

Page 20: Operating Systems CMPSC 473

Six Step Process to Perform DMA Transfer

Page 21: Operating Systems CMPSC 473

Application I/O Interface

• I/O system calls encapsulate device behaviors in generic classes

• Device-driver layer hides differences among I/O controllers from kernel

• Devices vary in many dimensions– Character-stream or block– Sequential or random-access– Sharable or dedicated– Speed of operation– read-write, read only, or write only

Page 22: Operating Systems CMPSC 473

A Kernel I/O Structure

Page 23: Operating Systems CMPSC 473

Characteristics of I/O Devices

Page 24: Operating Systems CMPSC 473

Block and Character Devices

• Block devices include disk drives– Commands include read, write, seek – Raw I/O or file-system access– Memory-mapped file access possible

• Character devices include keyboards, mice, serial ports– Commands include get, put– Libraries layered on top allow line editing

Page 25: Operating Systems CMPSC 473

Network Devices• Varying enough from block and

character to have own interface• Unix and Windows NT/9x/2000 include

socket interface– Separates network protocol from network

operation– Includes select functionality

• Approaches vary widely (pipes, FIFOs, streams, queues, mailboxes)

Page 26: Operating Systems CMPSC 473

Clocks and Timers• Provide current time, elapsed time,

timer

• Programmable interval timer used for timings, periodic interrupts

• ioctl (on UNIX) covers odd aspects of I/O such as clocks and timers

Page 27: Operating Systems CMPSC 473

Synchronous I/O

• Blocking - process suspended until I/O completed– Easy to use and understand– Likely to be inefficient

• Quiz: When and why?

Page 28: Operating Systems CMPSC 473

Asynchronous I/O

• Process runs while I/O executes– Returns immediately

• “Event-driven” programming– Difficult to use– I/O subsystem signals process when I/O

completed

Page 29: Operating Systems CMPSC 473

Two I/O Methods

Synchronous Asynchronous

Page 30: Operating Systems CMPSC 473

• Nonblocking - I/O call returns as much as available– One approach: Implemented via multi-threading

• Some threads do blocking I/O, while others continue executing

– Other approach: OS provides non-blocking call• Does not halt execution of application for an

extended time, returns quickly with count of bytes read or written

• Good e.g., select () system call for network I/O

“Hybrid” IO

Page 31: Operating Systems CMPSC 473

Kernel I/O Subsystem

• Scheduling– Some I/O request ordering via per-device

queue– Some OSs try fairness

• Buffering - store data in memory while transferring between devices– To cope with device speed mismatch– To cope with device transfer size mismatch– To maintain “copy semantics”

Page 32: Operating Systems CMPSC 473

Kernel I/O Subsystem• Caching - fast memory holding copy of data

– Always just a copy– Key to performance

• Spooling - hold output for a device– If device can serve only one request at a time – i.e., Printing

• Device reservation - provides exclusive access to a device– System calls for allocation and deallocation– Watch out for deadlock

Page 33: Operating Systems CMPSC 473

Error Handling• OS can recover from disk read, device

unavailable, transient write failures

• Most return an error number or code when I/O request fails

• System error logs hold problem reports

Page 34: Operating Systems CMPSC 473

I/O Protection• User process may accidentally or

purposefully attempt to disrupt normal operation via illegal I/O instructions– All I/O instructions defined to be

privileged– I/O must be performed via system calls

• Memory-mapped and I/O port memory locations must be protected too

Page 35: Operating Systems CMPSC 473

Use of a System Call to Perform I/O

Monitor = privileged/kernel mode

Page 36: Operating Systems CMPSC 473

Life Cycle of An I/O Request

Page 37: Operating Systems CMPSC 473

Performance• I/O a major factor in system

performance:

– Demands CPU to execute device driver, kernel I/O code

– Context switches due to interrupts– Data copying

Page 38: Operating Systems CMPSC 473

Improving Performance

• Reduce number of context switches• Reduce data copying • Reduce interrupts by using large

transfers, smart controllers, polling • Use DMA• Balance CPU, memory, bus, and I/O

performance for highest throughput

Page 39: Operating Systems CMPSC 473

I/O W/O a Unified Buffer Cache

Page 40: Operating Systems CMPSC 473

Unified Buffer Cache

• A unified buffer cache uses the same page cache to cache both memory-mapped pages and ordinary file system I/O

Page 41: Operating Systems CMPSC 473

I/O Using a Unified Buffer Cache

Page 42: Operating Systems CMPSC 473

Recovery• Consistency checking – compares data in

directory structure with data blocks on disk, and tries to fix inconsistencies

• Use system programs to back up data from disk to another storage device (floppy disk, magnetic tape, other magnetic disk, optical)

• Recover lost file or disk by restoring data from backup