device managementjupiter.plymouth.edu/~wjt/opsys/spring 2000/c5.pdfioctl character dev specific info...
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](https://reader035.vdocuments.site/reader035/viewer/2022062611/61306b121ecc51586944159e/html5/thumbnails/1.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062611/61306b121ecc51586944159e/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062611/61306b121ecc51586944159e/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062611/61306b121ecc51586944159e/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062611/61306b121ecc51586944159e/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062611/61306b121ecc51586944159e/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062611/61306b121ecc51586944159e/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062611/61306b121ecc51586944159e/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062611/61306b121ecc51586944159e/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062611/61306b121ecc51586944159e/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062611/61306b121ecc51586944159e/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062611/61306b121ecc51586944159e/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062611/61306b121ecc51586944159e/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062611/61306b121ecc51586944159e/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062611/61306b121ecc51586944159e/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062611/61306b121ecc51586944159e/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062611/61306b121ecc51586944159e/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062611/61306b121ecc51586944159e/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062611/61306b121ecc51586944159e/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062611/61306b121ecc51586944159e/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062611/61306b121ecc51586944159e/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062611/61306b121ecc51586944159e/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062611/61306b121ecc51586944159e/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062611/61306b121ecc51586944159e/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062611/61306b121ecc51586944159e/html5/thumbnails/25.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062611/61306b121ecc51586944159e/html5/thumbnails/26.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062611/61306b121ecc51586944159e/html5/thumbnails/27.jpg)
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