Top Banner
Device Management
27

Device Managementjupiter.plymouth.edu/~wjt/OpSys/Spring 2000/C5.pdfioctl Character dev specific info read Character dev input op write Character dev output op strategy Block dev input/output

Jun 15, 2021

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Device Managementjupiter.plymouth.edu/~wjt/OpSys/Spring 2000/C5.pdfioctl Character dev specific info read Character dev input op write Character dev output op strategy Block dev input/output

Device Management

Page 2: Device Managementjupiter.plymouth.edu/~wjt/OpSys/Spring 2000/C5.pdfioctl Character dev specific info read Character dev input op write Character dev output op strategy Block dev input/output

Device Management Organization

ApplicationProcess

FileManager

DeviceDriver

Device Controller

Command Status Data

Hardware Interface

API

Page 3: Device Managementjupiter.plymouth.edu/~wjt/OpSys/Spring 2000/C5.pdfioctl Character dev specific info read Character dev input op write Character dev output op strategy Block dev input/output

Read with Pollingread(device, É);

Data

Device Controller

Command Status Data

read function

write function

1

2 3 4

5

Hardware Interface

System Interface

Page 4: Device Managementjupiter.plymouth.edu/~wjt/OpSys/Spring 2000/C5.pdfioctl Character dev specific info read Character dev input op write Character dev output op strategy Block dev input/output

Read Using Interruptsread(device, É);

Data

Device Controller

Command Status Data

read driver

write driver

1

2

3

4

5Hardware Interface

System InterfaceDevice Status Table

DeviceHandler

InterruptHandler

6

7

8a

8b

9

Page 5: Device Managementjupiter.plymouth.edu/~wjt/OpSys/Spring 2000/C5.pdfioctl Character dev specific info read Character dev input op write Character dev output op strategy Block dev input/output

CPU-I/O Overlap

Variable x Register

Data on device

. . .read(dev_I, Ò%dÓ, x);y = f(x). . .

Device dev_IMemory CPU

. . .startRead(dev_I, Ò%dÓ, x);. . .While(stillReading()) ;y = f(x). . .

Page 6: Device Managementjupiter.plymouth.edu/~wjt/OpSys/Spring 2000/C5.pdfioctl Character dev specific info read Character dev input op write Character dev output op strategy Block dev input/output

I/O - CPU OverlapApp 1

App 2

I/O Ctlr

t1 t2 t3 t4

App

I/O Ctlr

t1 t2 t3 t4 t5 t6 t7 t8 t9

Overlapping App 1Õs I/O with App 2

Overlapping App CPU with its own I/O

Page 7: Device Managementjupiter.plymouth.edu/~wjt/OpSys/Spring 2000/C5.pdfioctl Character dev specific info read Character dev input op write Character dev output op strategy Block dev input/output

Memory Mapped I/O

PrimaryMemory

Device 0

Device 1

Device n-1

PrimaryMemory

Device 0

Device 1

Device n-1

Dev

ice

Add

ress

esM

emor

y A

ddre

sses

Mem

ory

Add

ress

es

Page 8: Device Managementjupiter.plymouth.edu/~wjt/OpSys/Spring 2000/C5.pdfioctl Character dev specific info read Character dev input op write Character dev output op strategy Block dev input/output

Direct Memory Access

PrimaryMemory

CPU

Controller

Device

PrimaryMemory

CPU

Controller

Device

Page 9: Device Managementjupiter.plymouth.edu/~wjt/OpSys/Spring 2000/C5.pdfioctl Character dev specific info read Character dev input op write Character dev output op strategy Block dev input/output

Hardware Buffering

Process

Controller

Data

Device

Process

Controller

B

Device

A

Unbuffered Process reads bi-1

Controller reads bi

Page 10: Device Managementjupiter.plymouth.edu/~wjt/OpSys/Spring 2000/C5.pdfioctl Character dev specific info read Character dev input op write Character dev output op strategy Block dev input/output

Hardware Buffering

Process

Controller

Data

Device

Process

Controller

B

Device

A

Process

Controller

B

Device

A

Unbuffered Process reads bi-1

Controller reads bi

Process reads bi

Controller reads bi+1

Page 11: Device Managementjupiter.plymouth.edu/~wjt/OpSys/Spring 2000/C5.pdfioctl Character dev specific info read Character dev input op write Character dev output op strategy Block dev input/output

Buffering in the DriverProcess

Controller

B

Device

A

BA

Har

dwar

eD

rive

r

Page 12: Device Managementjupiter.plymouth.edu/~wjt/OpSys/Spring 2000/C5.pdfioctl Character dev specific info read Character dev input op write Character dev output op strategy Block dev input/output

Buffering in the DriverProcess

Controller

B

Device

A

Process

Controller

B

Device

A

BA BA

Har

dwar

eD

rive

r

Page 13: Device Managementjupiter.plymouth.edu/~wjt/OpSys/Spring 2000/C5.pdfioctl Character dev specific info read Character dev input op write Character dev output op strategy Block dev input/output

A Ring Buffer

From data producer

To data consumer

Buf

fer

i

Buf

fer

j

Page 14: Device Managementjupiter.plymouth.edu/~wjt/OpSys/Spring 2000/C5.pdfioctl Character dev specific info read Character dev input op write Character dev output op strategy Block dev input/output

Compute vs I/O Bound

Compute-bound

I/O-bound

Time

Page 15: Device Managementjupiter.plymouth.edu/~wjt/OpSys/Spring 2000/C5.pdfioctl Character dev specific info read Character dev input op write Character dev output op strategy Block dev input/output

Application ProgrammingInterface

¥ Functions available to application programs

¥ Abstract all devices to a few interfaces

¥ Make interfaces as similar as possibleÐ Block vs character

Ð Sequential vs direct access

¥ Device driver implements functions (oneentry point per API function)

Page 16: Device Managementjupiter.plymouth.edu/~wjt/OpSys/Spring 2000/C5.pdfioctl Character dev specific info read Character dev input op write Character dev output op strategy Block dev input/output

BSD UNIX Driver

open Prepare dev for operationclose No longer using the deviceioctl Character dev specific inforead Character dev input opwrite Character dev output opstrategy Block dev input/output opsselect Character dev check for datastop Discontinue a stream output op

Page 17: Device Managementjupiter.plymouth.edu/~wjt/OpSys/Spring 2000/C5.pdfioctl Character dev specific info read Character dev input op write Character dev output op strategy Block dev input/output

Driver-Kernel Interface¥ Drivers separate from rest of kernel

¥ Kernel makes calls on specific functions,drivers implement them

¥ Drivers use other kernel functions for:Ð Device allocation

Ð Resource (e.g., memory) allocation

Ð Scheduling

Ð etc. (varies from OS to OS)

Page 18: Device Managementjupiter.plymouth.edu/~wjt/OpSys/Spring 2000/C5.pdfioctl Character dev specific info read Character dev input op write Character dev output op strategy Block dev input/output

Reconfigurable Drivers

Otherkernel services

Entry Points for Device j

open(){É}

read(){É}

etc.

System call interface

Driver for Device j

Page 19: Device Managementjupiter.plymouth.edu/~wjt/OpSys/Spring 2000/C5.pdfioctl Character dev specific info read Character dev input op write Character dev output op strategy Block dev input/output

NT Driver Organization

I/O Portion of Native APII/

O M

an

ag

er

Device Driver

NT

Ex

ecu

tiv

eHAL

Intermediate Driver

File System Driver

Filter Driver

Filter Driver

Data Flow

Device

Page 20: Device Managementjupiter.plymouth.edu/~wjt/OpSys/Spring 2000/C5.pdfioctl Character dev specific info read Character dev input op write Character dev output op strategy Block dev input/output

NT Device Drivers¥ API model is the same as a file

¥ Extend device management by addingmodules to the stream

¥ Device driver is invoked via an InterruptRequest Packet (IRP)Ð IRP can come from another stream module

Ð IRP can come from the OS

Ð Driver must respond to minimum set of IRPs

¥ See Part I of notes

Page 21: Device Managementjupiter.plymouth.edu/~wjt/OpSys/Spring 2000/C5.pdfioctl Character dev specific info read Character dev input op write Character dev output op strategy Block dev input/output

Serial Communication Device

Modem

RS-232¥9-pin connector¥4-wires¥bit serial¥etc.

Controller

UART¥parity¥bits per byte¥etc.

Driver¥Set UART parms¥read/write ops¥Interrupt hander

Page 22: Device Managementjupiter.plymouth.edu/~wjt/OpSys/Spring 2000/C5.pdfioctl Character dev specific info read Character dev input op write Character dev output op strategy Block dev input/output

Rotating Storage

Track (Cylinder)

Sect

or

Top View of a Surface

Page 23: Device Managementjupiter.plymouth.edu/~wjt/OpSys/Spring 2000/C5.pdfioctl Character dev specific info read Character dev input op write Character dev output op strategy Block dev input/output

MS Disk Geometry0x00 0x02 <a jump instruction to 0x1e>0x03 0x0a Computer manufacturer name0x0b 0x0c Sectors per cluster (discussed in Exercise 11)0x0d 0x0f Reserved sectors for the boot record0x10 0x10 Number of FATs0x11 0x12 Number of root directory entries0x13 0x14 Number of logical sectors0x15 0x15 Medium descriptor byte (used only on old versions of MS-DOS)0x16 0x17 Sectors per FAT0x18 0x19 Sectors per track0x1a 0x1b Number of surfaces (heads)0x1c 0x1d Number of hidden sectors0x1e É Bootstrap program

Page 24: Device Managementjupiter.plymouth.edu/~wjt/OpSys/Spring 2000/C5.pdfioctl Character dev specific info read Character dev input op write Character dev output op strategy Block dev input/output

Disk Optimizations

¥ Transfer Time: Time to copy bits from disksurface to memory

¥ Disk latency time: Rotational delay waitingfor proper sector to rotate under R/W head

¥ Disk seek time: Delay while R/W headmoves to the destination track/cylinder

¥ Access Time = seek + latency + transfer

Page 25: Device Managementjupiter.plymouth.edu/~wjt/OpSys/Spring 2000/C5.pdfioctl Character dev specific info read Character dev input op write Character dev output op strategy Block dev input/output

Optimizing Seek Time

¥ Multiprogramming on I/O-bound programs=> set of processes waiting for disk

¥ Seek time dominates access time =>minimize seek time across the set

¥ Tracks 0:99; Head at track 75, requests for23, 87, 36, 93, 66

¥ FCFS: 52+ 64 + 51 + 57 + 27 = 251 steps

Page 26: Device Managementjupiter.plymouth.edu/~wjt/OpSys/Spring 2000/C5.pdfioctl Character dev specific info read Character dev input op write Character dev output op strategy Block dev input/output

Optimizing Seek Time (cont)

¥ Requests = 23, 87, 36, 93, 66

¥ SSTF: (75), 66, 87, 93, 36, 23Ð 11 + 21 + 6 + 57 + 13 = 107 steps

¥ Scan: (75), 87, 93, 99, 66, 36, 23Ð 12 + 6 + 6 + 33 + 30 + 13 = 100 steps

¥ Look: (75), 87, 93, 66, 36, 23Ð 12 + 6 + 27 + 30 + 13 = 87 steps

Page 27: Device Managementjupiter.plymouth.edu/~wjt/OpSys/Spring 2000/C5.pdfioctl Character dev specific info read Character dev input op write Character dev output op strategy Block dev input/output

Optimizing Seek Time (cont)

¥ Requests = 23, 87, 36, 93, 66

¥ Circular Scan: (75), 87, 93, 99, 23, 36, 66Ð 12 + 6 + 6 + home + 23 + 13 + 30 = 90 + home

¥ Circular Look: (75), 87, 93, 23, 36, 66Ð 12 + 6 + home + 23 + 13 + 30 = 84 + home