ASHIMA KALRA. INPUT DEVICES INPUT DEVICES OUTPUT DEVICES OUTPUT DEVICES.
Input and Output -...
Transcript of Input and Output -...
![Page 1: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/1.jpg)
Input and Output
CS-3013 Operating Systems Hugh C. Lauer
(Slides include materials from Slides include materials from Modern Operating Systems, 3rd ed., by Andrew Tanenbaum
and from Operating System Concepts, 7th ed., by Silbershatz, Galvin, & Gagne)
CS-3013, A-Term 2011 Input and Output 1
![Page 2: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/2.jpg)
Overview
• What is I/O? • Principles of I/O hardware • Principles of I/O software • Methods of implementing input-output activities • Organization of device drivers • Specific kinds of devices
(Tanenbaum, Chapter 5)
Input and Output 2 CS-3013, A-Term 2011
![Page 3: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/3.jpg)
Overview
• What is I/O? • Principles of I/O hardware • Principles of I/O software • Methods of implementing input-output activities • Organization of device drivers • Specific kinds of devices
(Tanenbaum, Chapter 5)
Input and Output 3 CS-3013, A-Term 2011
![Page 4: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/4.jpg)
The I/O Subsystem
• The largest, most complex subsystem in OS • Most lines of code • Highest rate of code changes • Where OS engineers most likely to work • Difficult to test thoroughly
• Make-or-break issue for any system
• Big impact on performance and perception • Bigger impact on acceptability in market
Input and Output 4 CS-3013, A-Term 2011
![Page 5: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/5.jpg)
Hardware Organization (simple)
Input and Output 5 CS-3013, A-Term 2011
Device
CPU
Memory
memory bus
Device
![Page 6: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/6.jpg)
Hardware Organization (modern Pentium)
Input and Output 6 CS-3013, A-Term 2011
ISA bridge
IDE disk
Main Memory
CPUs Level
2 cache
Bridge Moni- tor
Graphics card
USB
Key- board Mouse
Ether- net SCSI
Modem Sound card Printer
PCI bus
ISA bus
AGP Port
![Page 7: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/7.jpg)
Kinds of I/O Devices • Character (and sub-character) devices
• Mouse, character terminal, joy stick, some keyboards • Block transfer
• Disk, tape, CD, DVD • Network
• Clocks
• Internal, external
• Graphics • GUI, games
• Multimedia • Audio, video
• Other • Sensors, controllers
Input and Output 7 CS-3013, A-Term 2011
![Page 8: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/8.jpg)
Controlling an I/O Device • A function of host CPU architecture
• Two extremes:– Special instructions vs. memory-mapped
• Special I/O instructions • Opcode to stop, start, query, etc. • Separate I/O address space • Kernel mode only
• Memory-mapped I/O control registers • Each register has a physical memory address • Writing to data register is output • Reading from data register is input • Writing to control register causes action • Can be mapped to kernel or user-level virtual memory
Input and Output 8 CS-3013, A-Term 2011
![Page 9: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/9.jpg)
Character Device (example)
• Data register: • Register or address where data is read from or
written to • Very limited capacity (at most a few bytes)
• Action register: • When writing to register, causes a physical action • Reading from register yields zero
• Status register: • Reading from register provides information • Writing to register is no-op
Input and Output 9 CS-3013, A-Term 2011
![Page 10: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/10.jpg)
Block Transfer Device (example)
• Buffer address register: • Points to area in physical memory to read or write data or
• Addressable buffer for data • E.g., network cards
• Action register: • When writing to register, initiates a physical action or data
transfer • Reading from register yields zero
• Status register: • Reading from register provides information • Writing to register is no-op
Input and Output 10 CS-3013, A-Term 2011
![Page 11: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/11.jpg)
DMA (Direct Memory Access)
• Ability to cause block devices to autonomously read from and/or write to main memory
• (Usually) physical addresses • (Sometimes) bus congestion leading to performance degradation
of CPU
• Transfer address • Points to location in physical memory
• Action register: • Initiates a reading of control block chain to start actions
• Status register: • Reading from register provides information
Input and Output 11 CS-3013, A-Term 2011
![Page 12: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/12.jpg)
Programmed DMA
Input and Output 13 CS-3013, A-Term 2011
DMA controller
First control block
controls disk
operation address Count
control info next
operation address Count
control info next
operation address Count
control info next
…
physical memory
![Page 13: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/13.jpg)
Programmed DMA (continued)
• DMA control register points to first control block in chain
• Each DMA control block has • Action & control info for a single transfer of one or more blocks • Data addresses in physical memory • (optional) link to next block in chain • (optional) interrupt upon completion
• Each control block removed from chain upon completion
• I/O subsystem may add control blocks to chain while transfers are in progress
• Result:– uninterrupted sequence of transfers with no CPU intervention
Input and Output 14 CS-3013, A-Term 2011
![Page 14: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/14.jpg)
Questions?
CS-3013, A-Term 2011 Input and Output 15
![Page 15: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/15.jpg)
Overview
• What is I/O? • Principles of I/O hardware • Principles of I/O software • Methods of implementing input-output activities • Organization of device drivers • Specific kinds of devices
(Tanenbaum, Chapter 5)
Input and Output 16 CS-3013, A-Term 2011
![Page 16: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/16.jpg)
Principles of I/O Software • Efficiency – Do not allow I/O operations to become system
bottleneck • Especially slow devices
• Device independence – isolate OS and application programs from device specific details and peculiarities
• Uniform naming – support a way of naming devices that is scalable and consistent
• Error handling – isolate the impact of device errors, retry where possible, provide uniform error codes
• Errors are abundant in I/O
• …
Input and Output 17 CS-3013, A-Term 2011
![Page 17: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/17.jpg)
Principles of I/O Software (continued)
• … • Buffering – provide uniform methods for storing and copying
data between physical memory and the devices • Uniform data transfer modes – synchronous and asynchronous,
read, write, .. • Controlled device access – sharing and transfer modes • Uniform driver support – specify interfaces and protocols that
drivers must adhere to
Input and Output 18 CS-3013, A-Term 2011
![Page 18: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/18.jpg)
I/O Software “Stack”
Input and Output 19 CS-3013, A-Term 2011
User Level Software Device Independent
Software
Device Drivers
Interrupt Handlers
Hardware
I/O API & libraries
Device Dependent
Device Dependent – as short as possible
(Rest of the OS)
![Page 19: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/19.jpg)
Three common ways of I/O
• Programmed I/O
• Interrupt-Driven I/O
• I/O using DMA
Input and Output 20 CS-3013, A-Term 2011
![Page 20: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/20.jpg)
Programmed I/O (Polling)
• Used when device and controller are relatively quick to process an I/O operation – Device driver
• Gains access to device • Initiates I/O operation • Loops testing for completion of I/O operation (busy wait) • If there are more I/O operations, repeat
– Used in following kinds of cases • Service interrupt time > Device response time • Device has no interrupt capability • Embedded systems where CPU has nothing else to do
Input and Output 21 CS-3013, A-Term 2011
![Page 21: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/21.jpg)
Programmed I/O Example — Bitmapped Keyboard & Mouse
• Keyboard & mouse buttons implemented as 128-bit read-only register
• One bit for each key and mouse button • 0 = “up”; 1 = “down”
• Mouse “wheels” implemented as pair of counters • One click per unit of motion in each of x and y directions
• Clock interrupt every 10 msec • Reads keyboard register, compares to previous copy • Determines key & button transitions up or down • Decodes transition stream to form character and button sequence • Reads and compares mouse counters to form motion sequence
Input and Output 22 CS-3013, A-Term 2011
Advantage:– key positions are entirely programmed in software
![Page 22: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/22.jpg)
Other Programmed I/O examples
• Check status of device • Read from disk or boot device at boot
time • No OS present, hence no interrupt handlers • Needed for bootstrap loading of the inner
portions of kernel
• External sensors or controllers • Real-time control systems
Input and Output 23 CS-3013, A-Term 2011
![Page 23: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/23.jpg)
Questions about Programmed I/O?
CS-3013, A-Term 2011 Input and Output 24
![Page 24: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/24.jpg)
Interrupt-Driven I/O • Interrupts occur on I/O events
• operation completion • Error or change of status
• Interrupt
– stops CPU from continuing with current work – Saves some context – restarts CPU with new address & stack
• Set up by the interrupt vector • Target is the interrupt handler
Input and Output 25 CS-3013, A-Term 2011
Processor participates in every byte transferred!
![Page 25: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/25.jpg)
Interrupts
Input and Output 26 CS-3013, A-Term 2011
![Page 26: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/26.jpg)
Interrupt Request Lines (IRQs)
• Every device is assigned an IRQ – Used when raising an interrupt – Interrupt handler can identify the
interrupting device • Assigning IRQs
– In older and simpler hardware, physical wires and contacts on device or bus
– In most modern PCs, etc., assigned dynamically at boot time
Input and Output 27 CS-3013, A-Term 2011
![Page 27: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/27.jpg)
Handling Interrupts (Linux Style)
• Terminology – Interrupt context – kernel operating not on behalf of any process – Process context – kernel operating on behalf of a particular process – User context – process executing in user-space virtual memory
• Interrupt Service Routine (ISR), also called Interrupt Handler – The function that is invoked when an interrupt is raised – Identified by IRQ – Operates on Interrupt stack (as of Linux kernel 2.6)
• One interrupt stack per processor or core • Approx 4-8 kbytes • All handlers share same stack on processor!
• …
Input and Output 28 CS-3013, A-Term 2011
![Page 28: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/28.jpg)
Handling Interrupts (Linux Style – continued)
• … • Top half – does minimal, time-critical work necessary
– Acknowledge interrupt, reset device, copy buffer or registers, etc.
– Interrupts (usually) disabled on current processor
• Bottom half – the part of the ISR that can be deferred to more convenient time – Completes I/O processing; does most of the work – Interrupts enabled (usually) – Communicates with processes – Possibly in a kernel thread (or even a user thread!)
Input and Output 29 CS-3013, A-Term 2011
Definitions!
![Page 29: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/29.jpg)
Interrupt-Driven I/O Example Software Time-of-Day Clock
• Interrupt occurs at fixed intervals • 50 or 60 Hz
• Service routine (top half):– • Adds one tick to clock counter
• Service routine (bottom half):– • Checks list of soft timers • Notifies tasks of any expired timers
Input and Output 30 CS-3013, A-Term 2011
Note that this looks a lot like programmed I/O
• Except for bottom-half processing
![Page 30: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/30.jpg)
Other Interrupt-Driven I/O examples
• Very “slow” character-at-a-time terminals – Mechanical printers (15 characters/second) – Some keyboards (one character/keystroke)
• Command-line completion in many Unix systems
– Game consoles – Serial modems – Many I/O devices in “old” computers
• Paper tape, punched cards, etc.
Input and Output 31 CS-3013, A-Term 2011
![Page 31: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/31.jpg)
Programmed I/O versus Interrupt-driven I/O
• Programmed I/O • A process or thread pro-actively works the device,
gets or puts the data, does everything else.
• Interrupt-driven I/O • Device operates autonomously, let’s processor
know when it is done or ready
• Both • CPU participates in transfer of every byte or word.
Input and Output 32 CS-3013, A-Term 2011
![Page 32: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/32.jpg)
I/O using DMA
Input and Output 33 CS-3013, A-Term 2011
![Page 33: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/33.jpg)
DMA Interrupt Handler • Service Routine – top half (interrupts disabled)
– Does as little work as possible and returns • (Mostly) notices completion of one transfer, starts another • (Occasionally) checks for status • Setup for more processing in bottom half
• Service Routine – bottom half (interrupts enabled) – Compiles control blocks from I/O requests – Manages & pins buffers, translates virtual to physical addresses – Posts completion of transfers to requesting applications
• Unpin and/or release buffers
– Possibly in a kernel thread
Input and Output 34 CS-3013, A-Term 2011
![Page 34: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/34.jpg)
DMA examples
• Disks, CD-ROM readers, DVD readers • Ethernet & wireless “modems” • Tape and bulk storage devices • Common themes:–
• Device controller has space to buffer a (big) block of data • Controller has intelligence to update physical addresses
and transfer data • Controller (often) has intelligence to interpret a sequence of
control blocks without CPU help
• CPU does not touch data during transfer! Input and Output 35 CS-3013, A-Term 2011
Not GUIs
![Page 35: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/35.jpg)
Buffering
• DMA devices need memory to read from, write to
• Must be contiguous pages • (Usually) physical addresses
• Double buffering • One being filled (or emptied) by device • Other being emptied (or filled) by application
• Special case of producer-consumer with n = 2
Input and Output 36 CS-3013, A-Term 2011
![Page 36: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/36.jpg)
Digression:– Error Detection and Correction
• Most data storage and network devices have hardware error detection and correction
• Redundancy code added during writing • Parity: detects 1-bit errors, not 2-bit errors • Hamming codes
– Corrects 1-bit errors, detects 2-bit errors • Cyclic redundancy check (CRC)
– Detects errors in string of 16- or 32-bits – Reduces probability of undetected errors to very, very low
• Check during reading • Report error to device driver
• Error recovery:– one of principal responsibilities of a device driver!
Input and Output 38 CS-3013, A-Term 2011
![Page 37: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/37.jpg)
Overview
• What is I/O? • Principles of I/O hardware • Principles of I/O software • Methods of implementing input-output activities • Organization of device drivers • Specific kinds of devices
(Tanenbaum, Chapter 5)
Input and Output 39 CS-3013, A-Term 2011
![Page 38: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/38.jpg)
Device Drivers
• Organization • Static or dynamic • Uniform interfaces to OS • Uniform buffering strategies • Hide device idiosyncrasies
Input and Output 40 CS-3013, A-Term 2011
![Page 39: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/39.jpg)
Device Drivers • Device Drivers are dependent on both the OS & device • OS dependence
– Meet the interface specs of the device independent layer – Utilize the facilities supplied by the OS – buffers, error codes, etc. – Accept and execute OS commands – e.g. read, open, etc.
• Device Dependent – Actions during Interrupt Service routine – Translate OS commands into device operations
• E.g read block n becomes a series of setting and clearing and interpreting device registers or interfaces
– Note that some device drivers have layers • Strategy or policy part to optimize arm movement or do retries; plus a
mechanism part the executes the operations
Input and Output 41 CS-3013, A-Term 2011
![Page 40: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/40.jpg)
OS Responsibility to Device Driver
• Uniform API • Open, Close, Read, Write, Seek functions • ioctl function as escape mechanism
• Buffering • Kernel functions for allocating, freeing, mapping, pinning
buffers
• Uniform naming • /dev/(type)(unit)
– type defines driver; unit says which device
• Other • Assign interrupt level (IRQ) • Protection (accessibility by application, user-space routines) • Error reporting mechanism
Input and Output 42 CS-3013, A-Term 2011
![Page 41: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/41.jpg)
Abstract Overview
• Think of I/O subsystem as a C++ or Java-style class
• Uniform interface in form of specific operations (methods) and services
• Uniform state information
• Each I/O driver implements a subclass • Own methods for uniform interface • Additional state info & methods for specific needs
• However, no Java or C++ support in kernel • Must implement everything in long-hand in C
Input and Output 43 CS-3013, A-Term 2011
![Page 42: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/42.jpg)
Operating System Organization
Input and Output 44 CS-3013, A-Term 2011
Kernel
System Libraries (user space)
Utilities, tools, Window packages, program management, other stuff
Drivers & modules File Systems
![Page 43: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/43.jpg)
Installing Device Drivers • Classic Unix
• Create and compile driver to .o file • Edit and re-compile device table to add new device • Re-link with .o files for OS kernel ⇒ new boot file
• Classic Macintosh • Submit to Apple for verification, approval, and inclusion
• MS-DOS and Windows • Dynamic driver loading and installation • Special driver-level debuggers available; open device
environment • Certification program for trademarking
• Linux • Dynamic driver loading and installation • Open device environment
Input and Output 46 CS-3013, A-Term 2011
Reason why Windows won Battle of the Desktop
![Page 44: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/44.jpg)
Dynamic Device Configuration
• At boot time:– 1. Probe hardware for inventory of devices & addresses 2. Map devices to drivers (using table previously created) 3. Load necessary drivers into kernel space, register in
interrupt vector (.sys files in Windows)
• Run time:– 1. Detect interrupt from newly added device 2. Search for driver, or ask user; add to table 3. Load into kernel space, register in interrupt vector
Input and Output 47 CS-3013, A-Term 2011
![Page 45: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/45.jpg)
Probing for devices
• (Most) bridge and bus standards include registration protocol
• [vendor, device ID]
• OS (recursively) tests every addressable connection
• If device is present, it responds with own ID
• Performed both at • Boot time: to associate drivers with addresses • Installation time: to build up association table
Input and Output 48 CS-3013, A-Term 2011
![Page 46: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/46.jpg)
Allocating and Releasing Devices
• Some devices can only be used by one application at a time
• CD-ROM recorders • GUI interface
• Allocated at Open() time • Freed at Close() time
Input and Output 50 CS-3013, A-Term 2011
![Page 47: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/47.jpg)
Overview
• What is I/O? • Principles of I/O hardware • Principles of I/O software • Methods of implementing input-output activities • Organization of device drivers • Specific kinds of devices
(Tanenbaum, Chapter 5)
Input and Output 53 CS-3013, A-Term 2011
![Page 48: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/48.jpg)
Character Terminal • Really two devices
• Keyboard input • Character display output
• /dev/tty (Unix) or COM (Windows) • The classic input-output terminal • RS-232 standard
• Modes • raw • cooked (aka canonical) – with backspace correction, tab
expansion, etc.
• Printed output vs. CRT display
Input and Output 54 CS-3013, A-Term 2011
![Page 49: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/49.jpg)
A Special kind of Device The Graphical User Interface
• aka, the bitmapped display • In IBM language:– “all points addressable”
• 300K pixels to 2M pixels • Each pixel may be separated written • Collectively, they create
• Windows • Graphics • Images • Videos • Games
Input and Output 55 CS-3013, A-Term 2011
![Page 50: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/50.jpg)
GUI Device — early days
Input and Output 56 CS-3013, A-Term 2011
• Bitmap in main memory • All output via library routines to
bitmap • Entirely (or mostly) in user space
• Controller, an automaton to do:– • D-A conversion (digital to analog video) • 60+ Hz refresh rate • “clock” interrupt at top of each frame
Main Memory
CPU
Bitmap Digital to Analog
![Page 51: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/51.jpg)
GUI Device — Displaying Text
Input and Output 57 CS-3013, A-Term 2011
• Font: an array of bitmaps, one per character
• Designed to be pleasing to eye • bitblt: (Bit-oriented Block Transfer)
• An operation to copy a rectangular array of pixels from one bitmap to another
A B C D E F …
Bitmap bitblt
Dog
![Page 52: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/52.jpg)
GUI Device – Color
• Monochrome: one bit per pixel • foreground vs. background
• Color: 2-32 bits per pixel • Direct vs. Color palette
• Direct: (usually) 8 bits each per Red, Green, Blue
• Palette: a table of length 2p, for p-bit pixels Each entry (usually) 8 bits each for RGB
Input and Output 58 CS-3013, A-Term 2011
![Page 53: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/53.jpg)
GUI Device – Cursor
• A small bitmap to overlay main bitmap • Hardware support
• Substitute cursor bits during each frame
• Software implementation • Bitblt area under cursor to temporary bitmap • Bitblt cursor bitmap to main bitmap • Restore area under cursor from temporary bitmap
• Very, very tricky! • Timing is critical for smooth appearance • Best with double-buffered main bitmap
Input and Output 59 CS-3013, A-Term 2011
![Page 54: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/54.jpg)
GUI Device – Window
• A virtual bitmap • size, position, clipping boundaries • font, foreground and background colors • A list of operations needed to redraw contents
• Operations to window itself:– • write(), refresh()
Input and Output 60 CS-3013, A-Term 2011
Called by application to add/change information
Called by window manager to redraw current contents
![Page 55: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/55.jpg)
GUI Device — Text Window
• Character terminal emulated in a window
• RS-232 character set and controls • /dev/tty
• Operates like a character terminal with visible, partially obscured, or completely covered
Input and Output 61 CS-3013, A-Term 2011
![Page 56: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/56.jpg)
Modern GUI Devices
Input and Output 62 CS-3013, A-Term 2011
ISA bridge
IDE disk
Main Memory
CPU Level
2 cache
Bridge Moni- tor
Graphics card
USB
Key- board Mouse
Ether- net SCSI
Modem Sound card Printer
PCI bus
ISA bus
AGP Port
![Page 57: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/57.jpg)
Modern GUI Devices (continued)
• Double-buffered bitmap in Graphics card • Graphics and information written/drawn in back buffer • Monitor refreshes from main buffer (60+ Hz)
• Refresh interrupt at start of every frame • Bitblt to substitute cursor
• CPU writes text, etc. • Graphics processor (GPU) draws images, vectors,
polygons • Window manager orders redraw when necessary
Input and Output 63 CS-3013, A-Term 2011
CPU Bridge Moni- tor
Graphics card
![Page 58: Input and Output - web.cs.wpi.eduweb.cs.wpi.edu/.../LectureNotes--A-term2011/Week6_InputOutput.pdf · Input and Output 5 . Device CPU . Memory . memory bus . Device . Hardware Organization](https://reader030.fdocuments.net/reader030/viewer/2022040216/5f1030977e708231d447e37b/html5/thumbnails/58.jpg)
Questions?
Reading Assignment • Tanenbaum, Chapter 5
CS-3013, A-Term 2011 Input and Output 64