32
Dr. Kalpakis CMSC 421, Operating Systems http://www.csee.umbc.edu/~kalpakis/Courses/421 I/O Systems

Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

Embed Size (px)

Citation preview

Page 1: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

Dr. Kalpakis

CMSC 421, Operating Systems

http://www.csee.umbc.edu/~kalpakis/Courses/421

I/O Systems

Page 2: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

2

Outline

I/O Hardware

Application I/O Interface

Kernel I/O Subsystem

Transforming I/O Requests to Hardware Operations

Streams

Performance

Page 3: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

3

I/O Hardware

There is incredible variety of I/O devices

There are shared common concepts

Device communicates with system using a connection point

Port

Bus (daisy chain or shared direct access)

Controller (host adapter)

Handshake between CPU and device controller done with polling/interrupts

Offloading to DMA for large I/O

Device-registers (control, state, data) accessible via the controller of device allow a computer to control a device

I/O instructions control devices

Devices have addresses, used by

Direct I/O instructions

Memory-mapped I/O

Page 4: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

4

A Typical PC Bus Structure

Page 5: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

5

Device I/O Port Locations on PCs (partial)

Page 6: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

6

Polling

Computer system determines state of device using

Polling

Interrupts

Polling determines state of device using certain commands

command-ready bit

Busy bit

Error bit

Command register

Data in/out registers

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

Page 7: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

7

Interrupts

CPU’s Interrupt Request Line is triggered by I/O device, and CPU checks

after each instruction, and device sets interrupt address

Device raises interrupt

CPU catches interrupt and dispatches it

Handler clears the interrupt

Interrupt handler receives interrupts

Maskable to ignore or delay some interrupts

Interrupt vector to dispatch interrupt to correct handler

Based on priority

Some unmaskable

Chaining of handlers

Interrupt mechanism also used for exceptions

Page 8: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

8

Interrupt-Driven I/O Cycle

Page 9: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

9

Intel Pentium Processor Event-Vector Table

Page 10: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

10

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

CPU writes DMA control block

DMA controller interacts with device using

DMA-request raised by device to signal the DMA controller that device

has data

DMA-acknowledge raised by DMA to tell device to put data on data

bus

Page 11: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

11

Six Step Process to Perform DMA Transfer

Page 12: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

12

Application I/O Interface

I/O system calls encapsulate device behaviors in generic classes

Device-driver layer hides differences among I/O device

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 13: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

13

A Kernel I/O Structure

Page 14: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

14

Characteristics of I/O Devices

Page 15: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

15

Block and Character Devices

Block devices include disk drives

Commands include read, write, seek

Raw I/O (device is viewed as a linear array of logical blocks) or file-

system access

Memory-mapped file access possible

Executing a program can be done with memory-mapping of the executable

to VM

Character devices include keyboards, mice, serial ports

Commands include get, put

Libraries layered on top allow line editing

Page 16: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

16

Network Devices

Varying enough from block and character to have own interface

Unix and Windows NT/9x/2000 include socket interface

Similar to electric sockets

Local and remote sockets and connecting them with addresses

Separates network protocol from network operation

Includes select functionality that manage a set of sockets and inform

the CPU which socket have data or are ready to accept more data

Approaches vary widely

pipes, FIFOs, streams, queues, mailboxes

Page 17: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

17

Clocks and Timers

Provide current time, elapsed time, timer

Programmable Interval Timer can be used for implementing

timers (via periodic interrupts)

OS can implement many timers using a single Programmable timer

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

timers

Page 18: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

18

Blocking and Nonblocking I/O

Blocking - process suspended until I/O completedEasy to use and understand

Insufficient for some needs

Nonblocking - I/O call returns as much data as availableUser interface, data copy (buffered I/O)

Implemented via multi-threading

Returns quickly with count of bytes read or written

Asynchronous - process runs while I/O executesDifficult to use

I/O subsystem signals process when I/O completed

Page 19: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

19

Kernel I/O Subsystem

Scheduling to improve performance

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”

To allow programmer to overwrite user I/O buffer as soon as I/O command

returns, without having to worry about when data have been output to the

device

Can also be implemented with VM and copy-on-write

Page 20: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

20

Sun Enterprise 6000 Device-Transfer Rates

Page 21: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

21

Kernel I/O Subsystem

Caching - fast memory holding copy of data

Always just a copy

Key to performance

Sometimes can be used together with buffering

Spooling - hold output for a device

If device can serve only one request at a time

i.e., printers, tape drives, etc

Device reservation - provides exclusive access to a device

System calls for allocation and deallocation of devices

Watch out for deadlocks

Page 22: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

22

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 23: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

23

Kernel Data Structures

Kernel keeps state info for I/O components, including open file

tables, network connections, character device state

Many, many complex data structures to track buffers, memory

allocation, “dirty” blocks, etc

Some use object-oriented methods and message passing to

implement I/O

Page 24: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

24

UNIX I/O Kernel Structure

Page 25: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

25

From I/O Requests to Hardware Operations

Consider reading a file from disk for a process:

Determine device holding file

Translate name to device representation

Physically read data from disk into buffer

Make data available to requesting process

Return control to process

Page 26: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

26

Life Cycle of An I/O Request

Page 27: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

27

STREAMS

STREAM – a full-duplex communication channel between a user-level

process and a device

A STREAM consists of:

STREAM head that interfaces with the user process using read/write or get/put

message in a synchronous manner

driver end that interfaces with the device

and zero or more STREAM modules between them, that communicate via

message passing in asynchronous manner

Each module contains a read queue and a write queue

Message passing is used to communicate between queues, and may

implement flow control

STREAMs provide a modular and incremental approach to developing

device drivers and protocols

Page 28: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

28

The STREAMS Structure

Page 29: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

29

Performance

I/O is a major factor in system performance:

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

Context switches due to interrupts

Data copying

Network traffic especially stressful

Page 30: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

30

Intercomputer Communications

Page 31: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

31

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

But where should I/O functionality be implemented?

User process?

Kernel?

Device driver?

Device controller?

Page 32: Dr. Kalpakis CMSC 421, Operating Systems kalpakis/Courses/421 I/O Systems

CMSC 421

32

Device-Functionality Progression