input & output (continued) cs-502 fall 20071 input and output (continued) cs502 operating...

30
Input & Output (c ontinued) CS-502 Fall 2007 1 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System Concepts, 7 th ed., by Silbershatz, Galvin, & Gagne and from Modern Operating Systems, 2 nd ed., by Tanenbaum)

Upload: elmer-greene

Post on 26-Dec-2015

232 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 1

Input and Output (continued)

CS502 Operating SystemsFall 2007

(Slides include materials from Operating System Concepts, 7th ed., by Silbershatz, Galvin, & Gagne and from Modern Operating Systems, 2nd ed., by Tanenbaum)

Page 2: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 2

The I/O Subsystem

• The largest, most complex subsystem in OS• Most lines of code• Highest rate of code changes• Where OS engineers most likely to work• Difficult to test thoroughly

• Make-or-break issue for any system• Big impact on performance and perception

• Bigger impact on acceptability in market

Page 3: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 3

Kinds of I/O Devices

• Character (and sub-character) devices• Mouse, character terminal, joy stick, some keyboards

• Block transfer• Disk, tape, CD, DVD• Network

• Clocks• Internal, external

• Graphics• GUI, games

• Multimedia• Audio, video

• Other• Sensors, controllers

Page 4: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 4

Principles of I/O Software

• Efficiency – Do not allow I/O operations to become system bottleneck• Especially slow devices

• Device independence – isolate OS and application programs from device specific details and peculiarities

• Uniform naming – support a way of naming devices that is scalable and consistent

• Error handling – isolate the impact of device errors, retry where possible, provide uniform error codes

• Errors are abundant in I/O• Buffering – provide uniform methods for storing and copying data

between physical memory and the devices• Uniform data transfer modes – synchronous and asynchronous, read,

write, ..• Controlled device access – sharing and transfer modes• Uniform driver support – specify interfaces and protocols that drivers

must adhere to

Page 5: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 5

Three common ways I/O can be performed

• Programmed I/O

• Interrupt-Driven I/O

• I/O using DMA

Page 6: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 6

Handling Interrupts (Linux Style)

• Terminology– Interrupt context – kernel operating not on behalf of any process– Process context – kernel operating on behalf of a particular process– User context – process executing in user virtual memory

• Interrupt Service Routine (ISR), also called Interrupt Handler– The function that is invoked when an interrupt is raised– Identified by IRQ– Operates on Interrupt stack (as of Linux kernel 2.6)

• One interrupt stack per processor; approx 4-8 kbytes

• Top half – does minimal, time-critical work necessary– Acknowledge interrupt, reset device, copy buffer or registers, etc.– Interrupts (usually) disabled on current processor

• Bottom half – the part of the ISR that can be deferred to more convenient time– Completes I/O processing; does most of the work– Interrupts enabled (usually)– Communicates with processes– Possibly in a kernel thread (or even a user thread!)

Page 7: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 7

Handling Interrupts (Linux Style)

• Terminology– Interrupt context – kernel operating not on behalf of any process– Process context – kernel operating on behalf of a particular process– User context – process executing in user virtual memory

• Interrupt Service Routine (ISR), also called Interrupt Handler– The function that is invoked when an interrupt is raised– Identified by IRQ– Operates on Interrupt stack (as of Linux kernel 2.6)

• One interrupt stack per processor; approx 4-8 kbytes

• Top half – does minimal, time-critical work necessary– Acknowledge interrupt, reset device, copy buffer or registers, etc.– Interrupts (usually) disabled on current processor

• Bottom half – the part of the ISR that can be deferred to more convenient time– Completes I/O processing; does most of the work– Interrupts enabled (usually)– Communicates with processes– Possibly in a kernel thread (or even a user thread!)

See es

pecia

lly

Love,

p. 84

Page 8: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 8

Handling Interrupts (Linux Style)

• Terminology– Interrupt context – kernel operating not on behalf of any process– Process context – kernel operating on behalf of a particular process– User context – process executing in user virtual memory

• Interrupt Service Routine (ISR), also called Interrupt Handler– The function that is invoked when an interrupt is raised– Identified by IRQ– Operates on Interrupt stack (as of Linux kernel 2.6)

• One interrupt stack per processor; approx 4-8 kbytes

• Top half – does minimal, time-critical work necessary– Acknowledge interrupt, reset device, copy buffer or registers, etc.– Interrupts (usually) disabled on current processor

• Bottom half – the part of the ISR that can be deferred to more convenient time– Completes I/O processing; does most of the work– Interrupts enabled (usually)– Communicates with processes– Possibly in a kernel thread (or even a user thread!)

See es

pecia

lly

Love,

p. 84

See especially Love, Ch. 7

Page 9: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 9

DMA Interrupt Handler

• Service Routine – top half (interrupts disabled)– Does as little work as possible and returns

• (Mostly) notices completion of one transfer, starts another• (Occasionally) checks for status• Setup for more processing in upper half

• Service Routine – bottom half (interrupts enabled)– Compiles control blocks from I/O requests– Manages & pins buffers, translates to physical

addresses– Posts completion of transfers to requesting applications

• Unpin and/or release buffers

– Possibly in a kernel thread

Page 10: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 10

OS Responsibility to Device Driver

• Uniform API• Open, Close, Read, Write, Seek functions• ioctl function as escape mechanism

• Buffering• Kernel functions for allocating, freeing, mapping, pinning

buffers

• Uniform naming• /dev/(type)(unit)

– type defines driver; unit says which device

• Other• Assign interrupt level (IRQ)• Protection (accessibility by application, user-space routines)• Error reporting mechanism

Page 11: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 11

Installing Device Drivers

• Classic Unix• Create and compile driver to .o file• Edit and re-compile device table to add new device• Re-link with .o files for OS kernel new boot file

• Classic Macintosh• Submit to Apple for verification, approval, and inclusion

• MS-DOS and Windows• Dynamic driver loading and installation• Special driver-level debuggers available; open device environment• Certification program for trademarking

• Linux• Dynamic driver loading and installation• Open device environment

Page 12: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 12

Questions?

Page 13: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 13

Dynamic Device Configuration

• At boot time:–1. Probe hardware for inventory of devices &

addresses2. Map devices to drivers (using table previously

created)3. Load necessary drivers into kernel space, register

in interrupt vector (.sys files in Windows)

• Run time:–1. Detect interrupt from newly added device2. Search for driver, or ask user; add to table3. Load into kernel space, register in interrupt vector

Page 14: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 14

Probing for devices

• (Most) bridge and bus standards include registration protocol

• [vendor, device ID]

• OS (recursively) tests every addressable connection

• If device is present, it responds with own ID

• Performed both at• Boot time: to associate drivers with addresses

• Installation time: to build up association table

Page 15: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 15

Alternative: Self-registration

• In systems where every module or class initializes itself

• At start-up time, each driver module is invoked– Checks for presence if device

– If present, registers with OS its• Name

• Interrupt handler

• Shutdown action

• Hibernate action

• Sleep action

• …

Page 16: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 16

Allocating and Releasing Devices

• Some devices can only be used by one application at a time

• CD-ROM recorders

• GUI interface

• Allocated at Open() time

• Freed at Close() time

Page 17: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 17

User Space I/O Software(Daemons and Spoolers)

• Device registers mapped into daemon VM• Controlled directly by daemon

• Top-half service routine• Handles interrupts

• Signals via semaphores or monitors

• Bottom-half service routine• The daemon itself!

• Waits for signals or monitors

• Manages device and requests from outside kernel

Page 18: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 18

User Space I/O examplePrint Spooler

• /dev/lpt is a “virtual” device available to every process & user

• Driver causes – “Printing” to spool file– Control info to spooler daemon

• Printer selection, options, and parameters

• Spooler selects one print “job” at a time– Prints from spool file to physical device

• Types of printing– Simple character strings separated by \n characters– Stream of PCL or inkjet commands– Postscript file– …

Page 19: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 19

Overview

• What is I/O?• Principles of I/O hardware• Principles of I/O software• Methods of implementing input-output activities• Organization of device drivers• Specific kinds of devices

(Silbershatz, Chapter 13)

Page 20: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 20

Character Terminal

• Really two devices• Keyboard input

• Character display output

• /dev/tty (Unix) or COM (Windows)• The classic input-output terminal

• RS-232 standard

• Modes• raw

• cooked (aka canonical) – with backspace correction, tab expansion, etc.

• Printed output vs. CRT display

Page 21: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 21

A special kind of DeviceThe Graphical User Interface

• aka, the bitmapped display• In IBM language:– “all points addressable”

• 300K pixels to 2M pixels• Each pixel may be separated written• Collectively, they create

• Windows• Graphics• Images• Videos• Games

Page 22: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 22

GUI Device — early days• Bitmap in main memory• All output via library routines to bitmap

• Entirely (or mostly) in user space

• Controller, an automaton to do:–• D-A conversion (digital to analog video)• 60+ Hz refresh rate• “clock” interrupt at top of each frame

Main Memory

CPU

Bitmap Digital toAnalog

Vid

eo

Page 23: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 23

GUI Device — Displaying Text

• Font: an array of bitmaps, one per character• Designed to be pleasing to eye

• bitblt: (Bit-oriented Block Transfer)• An operation to copy a rectangular array of pixels

from one bitmap to another

A B C D E F …

Bitmapbitblt

Dog

Page 24: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 24

GUI Device – Color

• Monochrome: one bit per pixel• foreground vs. background

• Color: 2-32 bits per pixel

• Direct vs. Color palette• Direct: (usually) 8 bits each per Red, Green, Blue

• Palette: a table of length 2p, for p-bit pixels

Each entry (usually) 8 bits each for RGB

Page 25: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 25

GUI Device – Cursor

• A small bitmap to overlay main bitmap• Hardware support

• Substitute cursor bits during each frame

• Software implementation• Bitblt area under cursor to temporary bitmap• Bitblt cursor bitmap to main bitmap• Restore area under cursor from temporary bitmap

• Very, very tricky!• Timing is critical for smooth appearance• Best with double-buffered main bitmap

Page 26: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 26

GUI Device – Window

• A virtual bitmap• size, position, clipping boundaries

• font, foreground and background colors

• A list of operations needed to redraw contents

• Operations to window itself:–• write(), refresh()

Called by application to add/change information

Called by window manager to redraw current contents

Page 27: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 27

GUI Device — Text Window

• Character terminal emulated in a window• RS-232 character set and controls

• /dev/tty

• Operates like a character terminal with visible, partially obscured, or completely covered

Page 28: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 28

Modern GUI Devices

ISA bridge

IDE disk

Main Memory

CPULevel

2 cache

Bridge Moni-tor

Graphics card

USB

Key-board

Mouse

Ether-net

SCSI

ModemSoundcard

Printer

PCI bus

ISA bus

AGP Port

Page 29: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 29

Modern GUI Devices (continued)

• Double-buffered bitmap in Graphics card• Graphics and information written/drawn in back buffer• Monitor refreshes from main buffer (60+ Hz)

• Refresh interrupt at start of every frame• Bitblt to substitute cursor

• CPU writes text, etc.• Graphics engine draws images, vectors, polygons• Window manager orders redraw when necessary

CPU Bridge Moni-tor

Graphics card

Page 30: Input & Output (continued) CS-502 Fall 20071 Input and Output (continued) CS502 Operating Systems Fall 2007 (Slides include materials from Operating System

Input & Output (continued)

CS-502 Fall 2007 30

Questions?

Reading Assignment • Silbershatz, Chapter 13