Sistemas Operativos: Input/Output Intro and HW/SW Interfacepfs/aulas/so2016/at/8io.pdfSistemas...
Transcript of Sistemas Operativos: Input/Output Intro and HW/SW Interfacepfs/aulas/so2016/at/8io.pdfSistemas...
![Page 1: Sistemas Operativos: Input/Output Intro and HW/SW Interfacepfs/aulas/so2016/at/8io.pdfSistemas Operativos: Input/Output Intro and HW/SW Interface Pedro F. Souto (pfs@fe.up.pt) March](https://reader035.fdocuments.net/reader035/viewer/2022071110/5fe568a1804cc84c5c3dbcd4/html5/thumbnails/1.jpg)
Sistemas Operativos: Input/OutputIntro and HW/SW Interface
Pedro F. Souto ([email protected])
March 9, 2016
![Page 2: Sistemas Operativos: Input/Output Intro and HW/SW Interfacepfs/aulas/so2016/at/8io.pdfSistemas Operativos: Input/Output Intro and HW/SW Interface Pedro F. Souto (pfs@fe.up.pt) March](https://reader035.fdocuments.net/reader035/viewer/2022071110/5fe568a1804cc84c5c3dbcd4/html5/thumbnails/2.jpg)
Agenda
Introduction
I/O Controllers and I/O Buses
Modes of Data Transfer
Additional Reading
![Page 3: Sistemas Operativos: Input/Output Intro and HW/SW Interfacepfs/aulas/so2016/at/8io.pdfSistemas Operativos: Input/Output Intro and HW/SW Interface Pedro F. Souto (pfs@fe.up.pt) March](https://reader035.fdocuments.net/reader035/viewer/2022071110/5fe568a1804cc84c5c3dbcd4/html5/thumbnails/3.jpg)
Agenda
Introduction
I/O Controllers and I/O Buses
Modes of Data Transfer
Additional Reading
![Page 4: Sistemas Operativos: Input/Output Intro and HW/SW Interfacepfs/aulas/so2016/at/8io.pdfSistemas Operativos: Input/Output Intro and HW/SW Interface Pedro F. Souto (pfs@fe.up.pt) March](https://reader035.fdocuments.net/reader035/viewer/2022071110/5fe568a1804cc84c5c3dbcd4/html5/thumbnails/4.jpg)
Input/Output Devices
I Wide variety of I/O devicesDevice Type Data rateKeyboard Human-interface 10 byte/sMouse Human-interface 100 byte/sModem Communication 56 kbit/sISDN line Communication 128 kbit/sLaser printer Human-interface 100 kbyte/sEthernet Communication 10 Mbit/sUSB Bus 12 Mbit/s40× CD-ROM Storage 6 Mbyte/sFast Ethernet Communication 100 Mbit/sEIDE (ATA-2) Storage 16.7 Mbyte/sXGA Monitor Human-interface 60 Mbyte/sGigabit Ethernet Communication 1 Gbit/sPCI bus Bus 528 Mbyte/sHyperTransport Bus Bus 25.6 Gbyte/s
![Page 5: Sistemas Operativos: Input/Output Intro and HW/SW Interfacepfs/aulas/so2016/at/8io.pdfSistemas Operativos: Input/Output Intro and HW/SW Interface Pedro F. Souto (pfs@fe.up.pt) March](https://reader035.fdocuments.net/reader035/viewer/2022071110/5fe568a1804cc84c5c3dbcd4/html5/thumbnails/5.jpg)
Agenda
Introduction
I/O Controllers and I/O Buses
Modes of Data Transfer
Additional Reading
![Page 6: Sistemas Operativos: Input/Output Intro and HW/SW Interfacepfs/aulas/so2016/at/8io.pdfSistemas Operativos: Input/Output Intro and HW/SW Interface Pedro F. Souto (pfs@fe.up.pt) March](https://reader035.fdocuments.net/reader035/viewer/2022071110/5fe568a1804cc84c5c3dbcd4/html5/thumbnails/6.jpg)
I/O Controllers (1/3)I An I/O controller is an electronic component that
I Controls the operation of the I/O deviceI Some examples:
I Network cardI Video cardI Hard disk controllerI UART (serial port controller)
Monitor
KeyboardFloppy
disk drive
Hard disk drive
Hard disk
controller
Floppy disk
controller
Keyboard controller
Video controller
MemoryCPU
Bus
I The OS interfaces with the I/O controller (adapter), but notwith the device itself
I Nevertheless, the developer of a device driver needs tohave a fairly detailed knowledge of the device’s operation
![Page 7: Sistemas Operativos: Input/Output Intro and HW/SW Interfacepfs/aulas/so2016/at/8io.pdfSistemas Operativos: Input/Output Intro and HW/SW Interface Pedro F. Souto (pfs@fe.up.pt) March](https://reader035.fdocuments.net/reader035/viewer/2022071110/5fe568a1804cc84c5c3dbcd4/html5/thumbnails/7.jpg)
I/O Controllers (2/3)
I I/O controllers have 4 sets of registersControl registers for configuring and controlling the
device’s operationStatus registers for monitoring the state of the device and
of the operations it performsInput data registers (or buffers) for data transfer from the
deviceOutput data registers (or buffers) for data transfer to the
device
![Page 8: Sistemas Operativos: Input/Output Intro and HW/SW Interfacepfs/aulas/so2016/at/8io.pdfSistemas Operativos: Input/Output Intro and HW/SW Interface Pedro F. Souto (pfs@fe.up.pt) March](https://reader035.fdocuments.net/reader035/viewer/2022071110/5fe568a1804cc84c5c3dbcd4/html5/thumbnails/8.jpg)
I/O Controllers (3/3)
I Access to these registers may be via:I/O instructions such as in/out
I The system uses different address spaces for memoryand for I/O
I Protection is simplified by making these instructionsprivileged
Memory-mapped I/OI Device registers are accessed like memory locations,
using load (read) or store (write) instructionsTwo address One address space Two address spaces
Memory
I/O ports
0xFFFF…
0
(a) (b) (c)
![Page 9: Sistemas Operativos: Input/Output Intro and HW/SW Interfacepfs/aulas/so2016/at/8io.pdfSistemas Operativos: Input/Output Intro and HW/SW Interface Pedro F. Souto (pfs@fe.up.pt) March](https://reader035.fdocuments.net/reader035/viewer/2022071110/5fe568a1804cc84c5c3dbcd4/html5/thumbnails/9.jpg)
I/O Buses (1/3)
I Except for slow processors, I/O controllers and memoryuse different buses
CPU Memory I/O
BusAll addresses (memory
and I/O) go here
CPU Memory I/O
CPU reads and writes of memory go over this high-bandwidth bus
This memory port is to allow I/O devices access to memory
(a) (b)
I The use of multiple I/O buses has 2 main reasons:Physics the faster the shorter must a bus beCosts it is expensive to engineer a high-speed bus
I The bus on which a controller is, usually is not transparentto the device driver developer
![Page 10: Sistemas Operativos: Input/Output Intro and HW/SW Interfacepfs/aulas/so2016/at/8io.pdfSistemas Operativos: Input/Output Intro and HW/SW Interface Pedro F. Souto (pfs@fe.up.pt) March](https://reader035.fdocuments.net/reader035/viewer/2022071110/5fe568a1804cc84c5c3dbcd4/html5/thumbnails/10.jpg)
I/O Buses (2/3)
I On a PC, there are typically 3 types of buses:
ISA bridge
Modem
Mouse
PCI bridgeCPU
Main memory
SCSI USB
Local bus
Sound card
Printer Available ISA slot
ISA bus
IDE disk
Available PCI slot
Key- board
Mon- itor
Graphics adaptor
Level 2 cache
Cache bus Memory bus
PCI bus
I It is up the PCI bridge (or better the north-bridge) to filterthe addresses
![Page 11: Sistemas Operativos: Input/Output Intro and HW/SW Interfacepfs/aulas/so2016/at/8io.pdfSistemas Operativos: Input/Output Intro and HW/SW Interface Pedro F. Souto (pfs@fe.up.pt) March](https://reader035.fdocuments.net/reader035/viewer/2022071110/5fe568a1804cc84c5c3dbcd4/html5/thumbnails/11.jpg)
I/O Buses (3/3)
source: http://commons.wikimedia.org/wiki/File:X58_Block_Diagram.png
![Page 12: Sistemas Operativos: Input/Output Intro and HW/SW Interfacepfs/aulas/so2016/at/8io.pdfSistemas Operativos: Input/Output Intro and HW/SW Interface Pedro F. Souto (pfs@fe.up.pt) March](https://reader035.fdocuments.net/reader035/viewer/2022071110/5fe568a1804cc84c5c3dbcd4/html5/thumbnails/12.jpg)
Agenda
Introduction
I/O Controllers and I/O Buses
Modes of Data Transfer
Additional Reading
![Page 13: Sistemas Operativos: Input/Output Intro and HW/SW Interfacepfs/aulas/so2016/at/8io.pdfSistemas Operativos: Input/Output Intro and HW/SW Interface Pedro F. Souto (pfs@fe.up.pt) March](https://reader035.fdocuments.net/reader035/viewer/2022071110/5fe568a1804cc84c5c3dbcd4/html5/thumbnails/13.jpg)
Programmed I/O (1/2)
I The CPU transfers the data between memory and thecontroller’s data registers
String to be printedUser
space
Kernel space
ABCD EFGH
Printed page
(a)
ABCD EFGH
ABCD EFGH
Printed page
(b)
ANext
(c)
ABNext
copy_from_user(buffer, p, count); /* copy data to kernel */for( i = 0; i < count; i++ ) { /* for all characters */
while(*printer_status_reg != READY); /* wait for printer */
*printer_data_reg = p[i]; /* output next character */}
I The actual protocol may differ from one controller toanother
![Page 14: Sistemas Operativos: Input/Output Intro and HW/SW Interfacepfs/aulas/so2016/at/8io.pdfSistemas Operativos: Input/Output Intro and HW/SW Interface Pedro F. Souto (pfs@fe.up.pt) March](https://reader035.fdocuments.net/reader035/viewer/2022071110/5fe568a1804cc84c5c3dbcd4/html5/thumbnails/14.jpg)
Programmed I/O (2/2)
I The CPU must poll the controller to find out if the device isready for the next operation
I Often, it must also check whether the operation succeeded
I.e. we have busy waiting:
![Page 15: Sistemas Operativos: Input/Output Intro and HW/SW Interfacepfs/aulas/so2016/at/8io.pdfSistemas Operativos: Input/Output Intro and HW/SW Interface Pedro F. Souto (pfs@fe.up.pt) March](https://reader035.fdocuments.net/reader035/viewer/2022071110/5fe568a1804cc84c5c3dbcd4/html5/thumbnails/15.jpg)
Interrupt-Driven I/0 (1/4)
CPUInterrupt controller
Disk controller
Disk drive
Current instruction
Next instruction
1. Interrupt
3. Return
2. Dispatch to handler
Interrupt handler
(b)(a)
1
3
4 2
I Relies on the processor’s interrupt mechanismI When the device
I completes a commandI detects an event (e.g. reception of a packet)
it raises an HW interruptI The CPU jumps into the OS and executes an interrupt
handler (IH)/interrupt service routine ISR)
![Page 16: Sistemas Operativos: Input/Output Intro and HW/SW Interfacepfs/aulas/so2016/at/8io.pdfSistemas Operativos: Input/Output Intro and HW/SW Interface Pedro F. Souto (pfs@fe.up.pt) March](https://reader035.fdocuments.net/reader035/viewer/2022071110/5fe568a1804cc84c5c3dbcd4/html5/thumbnails/16.jpg)
Recall: Timer Interrupt Handling
![Page 17: Sistemas Operativos: Input/Output Intro and HW/SW Interfacepfs/aulas/so2016/at/8io.pdfSistemas Operativos: Input/Output Intro and HW/SW Interface Pedro F. Souto (pfs@fe.up.pt) March](https://reader035.fdocuments.net/reader035/viewer/2022071110/5fe568a1804cc84c5c3dbcd4/html5/thumbnails/17.jpg)
Interrupt-Driven I/0 (2/4)
CPU
Interrupt controller
3. CPU acks interrupt
2. Controller issues interrupt
1. Device is finished
Disk
Keyboard
Printer
Clock
Bus
12
6
9 348
57
111210
I So that interrupt processing is more efficient, manyprocessors use vectored interrupts
1. The CPU and the interrupt controller execute a HWhandshake protocol
I So that the CPU learns which device generated the interrupt
2. The CPU then invokes the appropriate interrupt handler
![Page 18: Sistemas Operativos: Input/Output Intro and HW/SW Interfacepfs/aulas/so2016/at/8io.pdfSistemas Operativos: Input/Output Intro and HW/SW Interface Pedro F. Souto (pfs@fe.up.pt) March](https://reader035.fdocuments.net/reader035/viewer/2022071110/5fe568a1804cc84c5c3dbcd4/html5/thumbnails/18.jpg)
Interrupt-Driven I/0 (3/4)
I The processor programs the I/O controller to execute theoperation
copy_from_user(buffer, p, count); /* copy data to kernel */while(*printer_status_reg != READY); /* wait for printer */
*printer_data_reg = p[0]; /* output first character */scheduler(); /* wait for I/O */
I The I/O controller generates an interrupt when theoperation is done
I The interrupt handler does what must be done on thatevent
if( count == 0 ) {unblock_process();
} else {
*printer_data_register = p[i];count--;i++;
}acknowledge_interrupt();return_from_interrupt();
![Page 19: Sistemas Operativos: Input/Output Intro and HW/SW Interfacepfs/aulas/so2016/at/8io.pdfSistemas Operativos: Input/Output Intro and HW/SW Interface Pedro F. Souto (pfs@fe.up.pt) March](https://reader035.fdocuments.net/reader035/viewer/2022071110/5fe568a1804cc84c5c3dbcd4/html5/thumbnails/19.jpg)
Interrupt-Driven I/0 (4/4)
I Using interrupts, we can overlap I/O and processing, e.g.the OS may run another process
I Interrupts are not always the best solutionI Handling interrupts has some overheadI Context switch has also some costs
I In general:I Interrupts are the best solution for "slow" devicesI Polling may be preferrable for "fast" devices
![Page 20: Sistemas Operativos: Input/Output Intro and HW/SW Interfacepfs/aulas/so2016/at/8io.pdfSistemas Operativos: Input/Output Intro and HW/SW Interface Pedro F. Souto (pfs@fe.up.pt) March](https://reader035.fdocuments.net/reader035/viewer/2022071110/5fe568a1804cc84c5c3dbcd4/html5/thumbnails/20.jpg)
I/O with DMA (1/4)
Problem Interrupt-driven I/O avoids busy waiting but theprocessor still has to transfer the data
I For large data blocks and high-speed devices such asdisk accesses, interrupt-driven I/O still leads to a veryhigh CPU utilization
I CPU must copy a large amount of data to device, e.g.disk or network card
![Page 21: Sistemas Operativos: Input/Output Intro and HW/SW Interfacepfs/aulas/so2016/at/8io.pdfSistemas Operativos: Input/Output Intro and HW/SW Interface Pedro F. Souto (pfs@fe.up.pt) March](https://reader035.fdocuments.net/reader035/viewer/2022071110/5fe568a1804cc84c5c3dbcd4/html5/thumbnails/21.jpg)
I/O with DMA (2/4)
CPU
DMA controller
Disk controller
Main memory
Buffer
1. CPU programs the DMA controller
Interrupt when done
2. DMA requests transfer to memory 3. Data transferred
Bus
4. Ack
Address
Count
Control
Drive
Solution Use DMA, i.e. a dedicated processor that takes overof data transfer for the processor
I The processor has to configure:I the DMA controller for carrying out the data transferI the I/O controller to carry out the operation
I The I/O controller signals the DMA controller when it isready to transfer data
I The DMA controller requests bus access, and does thetransfer when it is granted the bus
I The DMA controller interrupts the processor once thedata block has been transferred
![Page 22: Sistemas Operativos: Input/Output Intro and HW/SW Interfacepfs/aulas/so2016/at/8io.pdfSistemas Operativos: Input/Output Intro and HW/SW Interface Pedro F. Souto (pfs@fe.up.pt) March](https://reader035.fdocuments.net/reader035/viewer/2022071110/5fe568a1804cc84c5c3dbcd4/html5/thumbnails/22.jpg)
I/O with DMA (3/4)Fetch and deposit DMA can be also used for
memory-to-memory transfers
source: National Instruments
Flyby DMA
source: National Instruments
![Page 23: Sistemas Operativos: Input/Output Intro and HW/SW Interfacepfs/aulas/so2016/at/8io.pdfSistemas Operativos: Input/Output Intro and HW/SW Interface Pedro F. Souto (pfs@fe.up.pt) March](https://reader035.fdocuments.net/reader035/viewer/2022071110/5fe568a1804cc84c5c3dbcd4/html5/thumbnails/23.jpg)
I/O with DMA (4/4)I The code for initiating the DMA operation (to print a buffer),
might be:copy_from_user(buffer, p, count); /* copy data to kernel*/set_up_DMA_io(); /* set up for DMA operation */scheduler(); /* wait for I/O */
I The DMA controller generates an interrupt when the datatransfer is done to avoid busy-waiting
I The interrupt handler for the DMA controller might besomething like:
acknowledge_interrupt();
unblock_process();
return_from_interrupt();I With DMA the CPU is relieved of data transfer and can
perform useful computation while data is moved betweenmemory and the I/O device
![Page 24: Sistemas Operativos: Input/Output Intro and HW/SW Interfacepfs/aulas/so2016/at/8io.pdfSistemas Operativos: Input/Output Intro and HW/SW Interface Pedro F. Souto (pfs@fe.up.pt) March](https://reader035.fdocuments.net/reader035/viewer/2022071110/5fe568a1804cc84c5c3dbcd4/html5/thumbnails/24.jpg)
Agenda
Introduction
I/O Controllers and I/O Buses
Modes of Data Transfer
Additional Reading
![Page 25: Sistemas Operativos: Input/Output Intro and HW/SW Interfacepfs/aulas/so2016/at/8io.pdfSistemas Operativos: Input/Output Intro and HW/SW Interface Pedro F. Souto (pfs@fe.up.pt) March](https://reader035.fdocuments.net/reader035/viewer/2022071110/5fe568a1804cc84c5c3dbcd4/html5/thumbnails/25.jpg)
Additional ReadingOSTEP
I Sections 36.1-36.6: I/O Devices
Sistemas Operativos
I Sections 11.1: Objectivos do Subsistema de E/SI Subsection 11.5.1: Communicação entre o Gestor e
o Periférico
Modern Operating Systems, 2nd. Ed.
I Section 5.1: Principles of I/O HardwareI Section 5.2: Principles of I/O Software
Operating Systems Concepts, 7th. Ed.
I Section 13.1: OverviewI Section 13.2: Hardware