Download - I/O = Input/Output Devices
![Page 1: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/1.jpg)
Copyright ©: University of Illinois CS 241 Staff
I/O = Input/Output Devices
11
![Page 2: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/2.jpg)
Copyright ©: University of Illinois CS 241 Staff
MP7
2
int main(){ int *ptr = malloc(sizeof(int));
*ptr = 4; free(ptr);
printf("Memory was allocated, used, and freed!\n"); return 0;}
![Page 3: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/3.jpg)
Copyright ©: University of Illinois CS 241 Staff
MP7
3
int main(){ int *ptr = malloc(sizeof(int)); *ptr = 4; free(ptr);
printf("Memory was allocated, used, and freed!\n"); return 0;}
![Page 4: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/4.jpg)
Copyright ©: University of Illinois CS 241 Staff
Super-simple malloc
4
void* malloc(size_t size) { return sbrk(size);}
void free(void* ptr) {}
What does memory allocation look like with Super-Simple malloc?
all memory
heapstart
heapend
The holes are wasted memory,allocated to the program but unused!
![Page 5: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/5.jpg)
Copyright ©: University of Illinois CS 241 Staff
Keeping track of allocated and free memory segments
Need some data structure (list, array, tree, ...) to track all segments
One clever way:
...but it’s all up to you!5
full allocated segment
returned to callermeta-data
![Page 6: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/6.jpg)
Copyright ©: University of Illinois CS 241 Staff
...and away you go
Try it out with programs yourself We’ll test based on
Average heap size Max heap size Execution time
Fabulous prizes await you! Contest details announced on Monday Everyone who submits the MP
participates, but anonymous by default6
![Page 7: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/7.jpg)
Copyright ©: University of Illinois CS 241 Staff
I/O = Input/Output Devices
11
(for real this time!)
![Page 8: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/8.jpg)
Copyright ©: University of Illinois CS 241 Staff
Overview
Basic I/O hardware ports, buses, devices and controllers
I/O Software Interrupt Handlers, Device Driver, Device-
Independent Software, User-Space I/O Software Important concepts
Three ways to perform I/O operations Programmed I/O, Interrupt and DMAs
2
![Page 9: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/9.jpg)
Copyright ©: University of Illinois CS 241 Staff 3
I/O Software Layers
Layers of the I/O Software System
User-level I/O Software
Device-independent Operating System Software
Device Drivers
Interrupt Handlers
Hardware
![Page 10: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/10.jpg)
Copyright ©: University of Illinois CS 241 Staff
Devices
Storage devices Disk, tapes
Transmission/Communication devices Network card, modem
Human interface devices Screen, keyboard, mouse
Specialized devices Joystick
4
![Page 11: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/11.jpg)
Copyright ©: University of Illinois CS 241 Staff
Input/Output Problems
Wide variety of peripherals (external devices) Delivering different amounts of data At different speeds In different formats
All slower than CPU and RAM Need I/O modules
5
![Page 12: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/12.jpg)
Copyright ©: University of Illinois CS 241 Staff
I/O Device Characteristics
Application usage Disk for storing files or virtual memory pages
Complexity of control Simple vs. complex
Data representation Diversity of encoding schemes
Error conditions Devices respond to errors differently
6
![Page 13: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/13.jpg)
Copyright ©: University of Illinois CS 241 Staff
I/O Device Characteristics
Unit of transfer Data may be transferred as a stream of bytes for a
terminal or in larger blocks for a disk Block devices
Disk drives Commands include read, write, seek Raw I/O or file-system access Memory-mapped file access possible
Character devices Keyboards, mice, serial ports Commands include get, put Libraries layered on top allow line editing
7
![Page 14: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/14.jpg)
Copyright ©: University of Illinois CS 241 Staff
I/O Device Characteristics
Data rate May be differences of several orders of
magnitude between the data transfer rates
8
![Page 15: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/15.jpg)
Copyright ©: University of Illinois CS 241 Staff 9
Typical I/O Device Data Rates
[Fig. from Silberschatz & Galvin]
![Page 16: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/16.jpg)
Copyright ©: University of Illinois CS 241 Staff
Need some abstraction to deal with all this complexity!
16
Kernel
App App App App App
I/O Subsystem
SCSI driver
keyboarddriver
mousedriver
PCI-X bus
wireless driver
truck driver
SCSI controller
keyboardcontroller
mousecontroller
PCI-X controller
Wireless controller
steering wheel
Disk
Keyboard Mouse Graphics card
Wireless network
cardtruck
Disk
Soft
war
eH
ardw
are
![Page 17: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/17.jpg)
Copyright ©: University of Illinois CS 241 Staff
Kernel provides several abstractions that can represent many kinds of devices, such as: block I/O (files) character stream I/O (keyboard) memory-mapped files network sockets ioctl for everything else
17
Need some abstraction to deal with all this complexity!
![Page 18: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/18.jpg)
Copyright ©: University of Illinois CS 241 Staff
But first...Hardware-software interface
Device controller A hardware element Accepts simple device hardware
instructions into registers to read and write data
Device driver Part of the OS that runs in software on
the CPU Makes calls to the device controller
10
![Page 19: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/19.jpg)
Copyright ©: University of Illinois CS 241 Staff
Device controller
I/O units typically consist of Mechanical component
The device itself Electronic component
The device controller or adapter
Interface between controller and device is a very low level interface
Example: Disk controller Take serial bit streams coming off the drive Convert into a block of bytes Perform error correction Caching
11
![Page 20: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/20.jpg)
Copyright ©: University of Illinois CS 241 Staff
Device controller
Controller has I/O registers/ports for data and control
CPU and controllers communicate via I/O instructions and registers Interrupts Memory-mapped I/O
12
![Page 21: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/21.jpg)
Copyright ©: University of Illinois CS 241 Staff
I/O Registers/Ports
4 registers, 1 to 4 bytes Status
Whether the current command is completed, byte is available, device has an error, etc.
Control Host determines to start a command or change the
mode of a device Data-in
Host reads to get input Data-out
Host writes to send output
13
![Page 22: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/22.jpg)
Copyright ©: University of Illinois CS 241 Staff
I/O Registers/Ports
Instructions and Data Format is device-dependent Device driver code needs to be aware of this
format Each device from each vendor typically needs a
separate device driver
How should the CPU communicate with the control registers and the data buffer?
14
![Page 23: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/23.jpg)
Copyright ©: University of Illinois CS 241 Staff
How to converse with devices
Polling CPU issues I/O command CPU directly writes instructions into device’s registers CPU busy waits for completion
Interrupt-driven I/O CPU issues I/O command CPU directly writes instructions into device’s registers CPU continues operation until interrupt
Direct Memory Access (DMA) CPU asks DMA controller to perform device-to-memory transfer DMA issues I/O command and transfers new item into memory CPU module is interrupted after completion
18
![Page 24: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/24.jpg)
Copyright ©: University of Illinois CS 241 Staff
Polling
Polling sequence:1. CPU requests I/O operation2. I/O module performs operation3. I/O module sets status bits4. CPU checks status bits periodically
I/O module does not inform CPU directly I/O module does not interrupt CPU CPU may wait or come back later
Also called “Programmed I/O”: each piece of I/O data is transferred by a program (kernel), not hardware 19
![Page 25: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/25.jpg)
Copyright ©: University of Illinois CS 241 Staff
Polling
Driver operation to input sequence of chars
i = 0;while (…) { write_reg(opcode, read); while (busy_flag == true); /* wait */ buffer[i] = data_buffer; i++; compute;}
20
![Page 26: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/26.jpg)
Copyright ©: University of Illinois CS 241 Staff
Polling
Expensive for large transfers What devices make
large transfers? What devices make
small transfers?
Acceptable only if Small dedicated system Not too few processes Character devices (as
opposed to block devices)
21
![Page 27: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/27.jpg)
Copyright ©: University of Illinois CS 241 Staff
Interrupt-driven I/O
Approach1. CPU issues read command2. I/O controller gets data while CPU does other work3. I/O controller interrupts CPU4. CPU requests data5. I/O controller transfers data
Advantage: Overcomes CPU busy waiting loops No repeated CPU checking of device I/O module interrupts when ready: Event-driven!
But, like polling, it’s still “Programmed I/O”
22
![Page 28: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/28.jpg)
Copyright ©: University of Illinois CS 241 Staff
Interrupt-driven I/O
Connections between devices and interrupt controller use shared interrupt lines on the bus rather than dedicated wires
23
Key Idea: Inform device controller of IO request, go to blocked state, wait for device to finish request
CPUInterrupt
Controller1. Device is finished
2. Controller issues interrupt
3. CPU ACKs interrupt
![Page 29: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/29.jpg)
Copyright ©: University of Illinois CS 241 Staff
Interrupt-driven I/O
Driver operation to input sequence of chars
i = 0;while (…) { write_reg(opcode, read); block to wait for interrupt; buffer[i] = data_buffer; i++; compute;}
24
while (busy_flag == true);was:
![Page 30: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/30.jpg)
Copyright ©: University of Illinois CS 241 Staff
Host-controller interface: Interrupts
CPU hardware has an interrupt report line that the CPU tests after executing every instruction If a(ny) device raises an interrupt by setting interrupt
report line CPU catches the interrupt and saves the state of current running
process into PCB CPU dispatches/starts the interrupt handler Interrupt handler determines cause, services the device and clears
the interrupt report line
Real life analogy for interrupts An alarm sets off when the food/laundry is ready So you can do other things in between
25
![Page 31: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/31.jpg)
Copyright ©: University of Illinois CS 241 Staff
Support for Interrupts
Need the ability to defer interrupt handling during critical processing Why?
Need efficient way to dispatch the proper interrupt handler Interrupt comes with an id Interrupt vector maintains addresses of interrupt handler
functions (one per device) – an array of function pointers Id is index into vector of device driver functions
Need multilevel interrupts - interrupt priority level Some interrupts more important than others, e.g., clock
more than network26
![Page 32: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/32.jpg)
Copyright ©: University of Illinois CS 241 Staff
Interrupt Handler
Discovery At boot time, OS probes the hardware
buses to Determine what devices are present Install corresponding interrupt handlers into
the interrupt vector During I/O interrupt
Device controller implicitly signals that device is ready for next request
27
![Page 33: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/33.jpg)
Copyright ©: University of Illinois CS 241 Staff
Other Uses of Interrupts
Besides I/O devices Interrupt mechanisms are used to
handle a wide variety of exceptions: Division by zero, wrong address System calls (software interrupts/signals,
trap) Multi-threaded systems
Examples? Virtual memory paging
28
![Page 34: I/O = Input/Output Devices](https://reader031.vdocuments.us/reader031/viewer/2022040518/624a6dfefe357078483c4f5a/html5/thumbnails/34.jpg)
Copyright ©: University of Illinois CS 241 Staff
How to converse with devices
Polling CPU issues I/O command CPU directly writes instructions into device’s registers CPU busy waits for completion
Interrupt-driven I/O CPU issues I/O command CPU directly writes instructions into device’s registers CPU continues operation until interrupt
Next time: Direct Memory Access (DMA) CPU asks DMA controller to perform device-to-memory transfer DMA issues I/O command and transfers new item into memory CPU module is interrupted after completion
18