Outline • Announcements • Computer Architecture – continued • Signal handling in Unix

advertisement
Outline
•
•
•
•
Announcements
Computer Architecture – continued
Signal handling in Unix
Device Management
– Device Drivers
– I/O Strategies
– Polling vs. interrupt-driven I/O
Announcements
• We are going to have a quiz at the end of the
class on Sept. 18, 2003
– Which is a week from today
– It will be a closed book and closed notes quiz
– It will cover
• System calls and how to use them
• Lecture notes up to next Tuesday (Sept. 16)
• Related materials in the book
5/29/2016
COP4610
2
Announcements – cont.
• Next week’s recitation session (Sep. 17) will
be optional
– I will use that mainly to answer questions related
to the first programming assignment
• By today we should have covered everything you
need to know in order to implement the assignment
– You are not required to attend as I will not cover
new materials
– I will be in LOV 301 as we normally meet for
recitation
5/29/2016
COP4610
3
Announcements – cont.
• Comments regarding the first programming
assignment
– You can use simple-shell.cc as a starting point or
the code in the textbook
• You can use the code segments from examples I
distributed
• Please note that you are not allowed to copy other’s
work
• Comments on Homework #1
5/29/2016
COP4610
4
Device Drivers
• The part of OS that implements device
management is called collectively as device
manager, which includes device drivers and
device driver infrastructure
– Device drivers can be complex
– However, the drivers for different devices
implement a similar interface so that a higherlevel component has a uniform interface for
different devices
5/29/2016
COP4610
5
Device Driver Interface
…
write(…);
…
Device Interface
5/29/2016
Terminal
Driver
Printer
Driver
Disk
Driver
Terminal
Controller
Printer
Controller
Disk
Controller
COP4610
6
Device Management Organization
Application
Process
System Interface
File
Manager
Device-Independent
Device-Dependent
Hardware Interface
Command
Status
Data
Device Controller
5/29/2016
COP4610
7
I/O Strategies
• Direct I/O
– The CPU is responsible for determining when the
I/O operation has completed and then for
transferring the data between the primary
memory and the device controller data registers
• Polling or interrupt-driven I/O
– This seems not effective for devices with large
transfers, such as a disk drive
• Direct Memory Access (DMA)
5/29/2016
COP4610
8
Direct-Memory Access
• Direct memory access controllers
– Can read/write data directly from/to primary
memory addresses with no CPU intervention
after the driver has started the I/O operation
5/29/2016
COP4610
9
Direct-Memory Access – cont.
5/29/2016
COP4610
10
Direct-Memory Access – cont.
5/29/2016
COP4610
11
I/O Strategies – cont.
• Direct I/O or DMA for data transferring
• Polling or interrupt-driven
• I/O strategies
– Direct I/O with polling
– DMA I/O with polling
• Not supported in general
– Direct I/O with interrupts
– DMA I/O with interrupts
5/29/2016
COP4610
12
Direct I/O with Polling
read(device, …);
1
System Interface
Data
read function
5
write function
2
3
4
Hardware Interface
Command
Status
Data
Device Controller
5/29/2016
COP4610
13
Device Controllers – cont.
...
busy
Command
done
Error code
Status
...
busy done
0
0 idle
0
1 finished
1
0 working
1
1 (undefined)
Data 0
Data 1
Logic
Data n-1
5/29/2016
COP4610
14
Hardware
Software
Polling I/O
…
// Start the device
…
While(busy == 1)
wait();
// Device I/O complete
…
done = 0;
busy
done
…
while((busy == 0) && (done == 1))
wait();
// Do the I/O operation
busy = 1;
…
5/29/2016
COP4610
15
Interrupt-Driven I/O
read(device, …);
1
9
8b
Data
System Interface
Device Status Table
read driver
2
4
7
Device
Handler
write driver
6
3
Interrupt
Handler
8a
5
Hardware Interface
Command
Status
Data
Device Controller
5/29/2016
COP4610
16
Interrupt-Driven Versus Polling
• In general, an interrupt-driven system will
have a higher CPU utilization than a pollingbased system
– The CPU time on polling by one process may be
utilized by another process to perform
computation
5/29/2016
COP4610
17
Comparison of Polling and Interrupt-Driven I/O Performance
• Polling is normally superior from the
viewpoint of a single process
– Because overhand of polling is less
• Interrupt-driven I/O approach gives better
overall system performance
5/29/2016
COP4610
18
I/O-CPU Overlap
Through interrupt-driven I/O
5/29/2016
COP4610
19
I/O-CPU Overlap – cont.
• Sequential operation and overlapped
operation
5/29/2016
COP4610
20
I/O-CPU Overlap – cont.
- I/O-CPU overlap through overlapped operation
and polling
5/29/2016
COP4610
21
I/O-bound and Compute-bound Processes
• I/O-bound process
– A process’s overall execution time is dominated
by the time to perform I/O operations
• Compute-bound process
– A process’s time on I/O is small compared to the
amount of time spent using the CPU
• Many processes have I/O-bound and
compute-bound phases
5/29/2016
COP4610
22
Phases of a Process
Compute-bound
Time
I/O-bound
5/29/2016
COP4610
23
Device Manager Design
• Device drivers
– Application programming interface
– Coordination among application processes,
drivers, and device controllers
– Performance optimization
5/29/2016
COP4610
24
BSD UNIX Driver Functions
5/29/2016
COP4610
25
The Kernel Interface
5/29/2016
COP4610
26
Device-Independent Function Call
funci(…)
Trap Table
5/29/2016
dev_func_i(devID, …) {
// Processing common to all devices
…
switch(devID) {
case dev0:
dev0_func_i(…);
break;
case dev1:
dev1_func_i(…);
break;
…
case devM:
devM_func_i(…);
break;
};
// Processing common to all devices
…
}
COP4610
27
Re-configurable Device Drivers
System call interface
open(){…}
read(){…}
Entry Points for Device j
etc.
Other
Kernel
services
Driver for Device j
5/29/2016
COP4610
28
Handling Interrupts
Device driver J
int read(…) {
// Prepare for I/O
save_state(J);
out dev#
// Done (no return)
}
Device status table
J
Device interrupt handler J
void dev_handler(…) {
get_state(J);
//Cleanup after op
signal(dev[j]);
return_from_sys_call();
}
Interrupt Handler
Device Controller
5/29/2016
COP4610
29
Handling Interrupts – cont.
Device driver J
Device interrupt handler J
int read(…) {
…
out dev#
// Return after interrupt
wait(dev[J});
return_from_sys_call();
}
void dev_handler(…) {
//Cleanup after op
signal(dev[j]);
}
Interrupt Handler
Device Controller
5/29/2016
COP4610
30
CPU-device Interactions
5/29/2016
COP4610
31
Device Management in Linux
• While it builds on the same basic principles,
it is more complex and with more details
– There are a lot of device drivers included and you
can also develop your own device drivers for
specific purpose devices
• Linux divides into char-oriented devices and
block oriented devices
– fs/blk_dev.c
– fs/char_dev.c
5/29/2016
COP4610
32
Buffering
• Buffering
– A technique to keep slower I/O devices busy
during times when a process is not requiring I/O
operations
5/29/2016
COP4610
33
The Pure Cycle Water Company
Customer Office
Water Company
Returning the Empties
Water Producer
Water Consumers
Delivering Water
5/29/2016
COP4610
34
Buffering – cont.
5/29/2016
COP4610
35
Double Buffering
5/29/2016
COP4610
36
Multiple Buffers
- Producer-consumer problem
5/29/2016
COP4610
37
Spooling
• A spool is a buffer that holds output for a
device that cannot accept interleaved data
streams
– Printer is an example
5/29/2016
COP4610
38
Communication Devices
Bus
Generic
Controller
Communications
Controller
Local
Device
Cabling connecting the
controller to the device
Device
•Printer
•Modem
•Network
5/29/2016
COP4610
39
Randomly Accessed Devices
5/29/2016
COP4610
40
Optimizing Access to Rotating Devices
• Access time has three major components
– Seek time – the time for the disk arm to move the
heads to the cylinder containing the desired sector
– Rotational latency – the additional time waiting for
the disk to rotate the desired sector to the disk head
– Transfer Time - time to copy bits from disk surface
to memory
5/29/2016
COP4610
41
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 for
23, 87, 36, 93, 66
5/29/2016
COP4610
42
Optimizing Access to Rotating Devices
-First-Come-First-Served (75), 66, 87, 93, 36, 23
52+ 64 + 51 + 57 + 27 = 251 steps
5/29/2016
COP4610
43
Optimizing Access to Rotating Devices – cont.
-Shortest-Seek-First-First
- SSTF: (75), 66, 87, 93, 36, 23
–11 + 21 + 6 + 57 + 13 = 107 steps
5/29/2016
COP4610
44
Optimizing Access to Rotating Devices – cont.
-Scan/Look
- 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
5/29/2016
COP4610
45
Optimizing Access to Rotating Devices – cont.
- Circular Scan/
Circular Look
• 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
5/29/2016
COP4610
46
Serial Port
CPU
Memory
Serial
Device
• Printer
• Terminal
• Modem
• Mouse
• etc.
5/29/2016
COP4610
47
Serial Port
Device Driver API
Device Driver
Software on the CPU
• Set UART parms
•read/write ops
•Interrupt hander
UART API
•parity
•bits per byte
•etc.
5/29/2016
COP4610
Bus Interface
Serial Device
(UART)
RS-232 Interface
• 9-pin connector
• 4-wires
• bit transmit/receive
• ...
48
Adding a Modem
CPU
Memory
Serial
Device
Modem
• Dialing & connecting
• Convert analog voice to/from digital
• Convert bytes to/from bit streams
• Transmit/receive protocol
Phone
Switched Telephone Network
5/29/2016
COP4610
49
Serial Communication
Device Driver
•Set UART parms
•read/write ops
•Interrupt hander
Driver-Modem Protocol
• Dialing & connecting
• Convert analog voice to/from digital
• Convert bytes to/from bit streams
• Transmit/receive protocol
5/29/2016
COP4610
Serial Device
RS-232
Modem
50
Exploiting the Phone Network
Logical Communication
CPU
Memory
CPU
Comm
Device
Comm
Device
Modem
Modem
Phone
Phone
Memory
Switched Telephone Network
5/29/2016
COP4610
51
Summary
• Device Management Organization
• I/O Strategies
• Device is the bottleneck for I/O-bound
processes
– Overlap between I/O and CPU will increase the
system’s throughput rate
5/29/2016
COP4610
52
Download