Chapter 5 - Input / Output

Similar documents
OPERATING SYSTEMS CS136

CSCI-GA Operating Systems I/O. Hubertus Franke

Operating Systems (CS1022) Input/Output. Yagiz Özbek Evren

Unit 2 : Computer and Operating System Structure

Section I Section Real Time Systems. Processes. 1.6 Input/Output Management. (Textbook: A. S. Tanenbaum Modern OS - ch. 5)

I/O. Fall Tore Larsen. Including slides from Pål Halvorsen, Tore Larsen, Kai Li, and Andrew S. Tanenbaum)

I/O. Fall Tore Larsen. Including slides from Pål Halvorsen, Tore Larsen, Kai Li, and Andrew S. Tanenbaum)

I/O Handling. ECE 650 Systems Programming & Engineering Duke University, Spring Based on Operating Systems Concepts, Silberschatz Chapter 13

Input-Output (I/O) Input - Output. I/O Devices. I/O Devices. I/O Devices. I/O Devices. operating system must control all I/O devices.

Chapter 3 - Memory Management

UC Santa Barbara. Operating Systems. Christopher Kruegel Department of Computer Science UC Santa Barbara

Chapter 3 - Top Level View of Computer Function

I/O Devices. Chapter 5 Input/Output. Memory-Mapped I/O (2) Memory-Mapped I/O (1) Interrupts Revisited. Direct Memory Access (DMA) 11/26/2013

Operating System: Chap13 I/O Systems. National Tsing-Hua University 2016, Fall Semester

Chapter 5 Input/Output. I/O Devices

Lecture 21 Disk Devices and Timers

19: I/O. Mark Handley. Direct Memory Access (DMA)

CSE 120. Overview. July 27, Day 8 Input/Output. Instructor: Neil Rhodes. Hardware. Hardware. Hardware

Chapter 1 - Introduction

Input/Output. Today. Next. Principles of I/O hardware & software I/O software layers Disks. Protection & Security

Computer Architecture

Chapter 20 - Microprogrammed Control (9 th edition)

Chap. 3. Input/Output

Operating Systems. Lecture 09: Input/Output Management. Elvis C. Foster

Operating Systems. V. Input / Output

Today: I/O Systems. Architecture of I/O Systems

Chapter 6 - Deadlocks

CS 134. Operating Systems. April 8, 2013 Lecture 20. Input/Output. Instructor: Neil Rhodes. Monday, April 7, 14

-Device. -Physical or virtual thing that does something -Software + hardware to operate a device (Controller runs port, Bus, device)

Generic Model of I/O Module Interface to CPU and Memory Interface to one or more peripherals

19: I/O Devices: Clocks, Power Management

C02: Interrupts and I/O

I/O & Storage. Jin-Soo Kim ( Computer Systems Laboratory Sungkyunkwan University

2. Which of the following resources is not one which can result in deadlocking processes? a. a disk file b. a semaphore c. the central processor (CPU)

Computer Organization ECE514. Chapter 5 Input/Output (9hrs)

Chapter-6. SUBJECT:- Operating System TOPICS:- I/O Management. Created by : - Sanjay Patel

I/O Design, I/O Subsystem, I/O-Handler Device Driver, Buffering, Disks, RAID January WT 2008/09

Computer Architecture

I/O Devices. Nima Honarmand (Based on slides by Prof. Andrea Arpaci-Dusseau)

Input Output (IO) Management

CSE 153 Design of Operating Systems Fall 2018

Module 11: I/O Systems

Introduction to Operating Systems Prof. Chester Rebeiro Department of Computer Science and Engineering Indian Institute of Technology, Madras

Last class: Today: Course administration OS definition, some history. Background on Computer Architecture

THE CPU SPENDS ALMOST ALL of its time fetching instructions from memory

Principles of Operating Systems CS 446/646

I/O Systems (3): Clocks and Timers. CSE 2431: Introduction to Operating Systems

Hardware OS & OS- Application interface

I/O Hardwares. Some typical device, network, and data base rates

Operating Systems 2010/2011

Outline. Operating Systems: Devices and I/O p. 1/18

Input/Output. Today. Next. ! Principles of I/O hardware & software! I/O software layers! Secondary storage. ! File systems

Unit 1. Chapter 3 Top Level View of Computer Function and Interconnection

CS330: Operating System and Lab. (Spring 2006) I/O Systems

Ricardo Rocha. Department of Computer Science Faculty of Sciences University of Porto

Input/Output Problems. External Devices. Input/Output Module. I/O Steps. I/O Module Function Computer Architecture

Chapter 1 Computer System Overview

Introduction to Computer Systems and Operating Systems

Lecture 2: September 9

Introduction. Operating Systems. Outline. Hardware. I/O Device Types. Device Controllers. (done)

Ref: Chap 12. Secondary Storage and I/O Systems. Applied Operating System Concepts 12.1

Introduction. Operating Systems. Outline. Hardware. I/O Device Types. Device Controllers. One OS function is to control devices

Chapter 14 - Processor Structure and Function

QUIZ Ch.6. The EAT for a two-level memory is given by:

Common Computer-System and OS Structures

Last 2 Classes: Introduction to Operating Systems & C++ tutorial. Today: OS and Computer Architecture

Introduction. Operating Systems. Outline. Hardware. I/O Device Types. Device Controllers. One OS function is to control devices

File systems: management 1

Chapter 13: I/O Systems

Misc. Third Generation Batch Multiprogramming. Fourth Generation Time Sharing. Last Time Evolution of OSs

[08] IO SUBSYSTEM 1. 1

Input / Output. School of Computer Science G51CSA

Chapter 6 - External Memory

Chapter 3 Memory Management: Virtual Memory

Computer System Overview

Computer System Overview OPERATING SYSTEM TOP-LEVEL COMPONENTS. Simplified view: Operating Systems. Slide 1. Slide /S2. Slide 2.

Introduction. CS3026 Operating Systems Lecture 01

Input/Output Systems

Embedded Systems Dr. Santanu Chaudhury Department of Electrical Engineering Indian Institute of Technology, Delhi

Chapter 1 Computer System Overview

Architectural Support for Operating Systems

Hard Disk Drives (HDDs)

Chapter 13: I/O Systems. Operating System Concepts 9 th Edition

Operating Systems, Fall

Operating Systems: Internals and Design Principles, 7/E William Stallings. Chapter 1 Computer System Overview

Chapter 11. I/O Management and Disk Scheduling

操作系统概念 13. I/O Systems

CSE 451: Operating Systems Winter I/O System. Gary Kimura

CSE 153 Design of Operating Systems

CSC 2405: Computer Systems II

Introduction to OS. Introduction MOS Mahmoud El-Gayyar. Mahmoud El-Gayyar / Introduction to OS 1

The control of I/O devices is a major concern for OS designers

Virtual Memory. Reading. Sections 5.4, 5.5, 5.6, 5.8, 5.10 (2) Lecture notes from MKP and S. Yalamanchili

CSC 553 Operating Systems

Chapter 13: I/O Systems

Operating Systemss and Multicore Programming (1DT089)

HARDWARE. There are a number of factors that effect the speed of the processor. Explain how these factors affect the speed of the computer s CPU.

I/O SYSTEMS. Sunu Wibirama

Operating Systems CMPSCI 377 Spring Mark Corner University of Massachusetts Amherst

STANDARD I/O INTERFACES

Transcription:

Chapter 5 - Input / Output Luis Tarrataca luis.tarrataca@gmail.com CEFET-RJ L. Tarrataca Chapter 5 - Input / Output 1 / 90

1 Motivation 2 Principle of I/O Hardware I/O Devices Device Controllers Memory-Mapped I/O Direct Memory Access Interrupts Revisited L. Tarrataca Chapter 5 - Input / Output 2 / 90

3 I/O software layers Interrupt Handlers Device Drivers Device-Independent I/O Software Uniform Interfacing for Device Drivers Buffering Error reporting Allocating and Releasing Dedicated Devices Device-Independent Block Size User-Space I/O Software L. Tarrataca Chapter 5 - Input / Output 3 / 90

4 Clocks Clock Hardware Clock Software 5 References L. Tarrataca Chapter 5 - Input / Output 4 / 90

Motivation Motivation Recall that an OS provides abstractions for: 1 Processes; 2 Addresses spaces; 3 Files; 4 Etc... OS must also also: control all the computer s I/O devices; L. Tarrataca Chapter 5 - Input / Output 5 / 90

Motivation In your opinion what does this mean: control all the computer s I/O devices? Any ideas? L. Tarrataca Chapter 5 - Input / Output 6 / 90

Motivation In your opinion what does this mean: control all the computer s I/O devices? Any ideas? Issue commands to devices; Catch interrupts Handle errors; Provide API: Interface should be the same for all devices: Not always possible... L. Tarrataca Chapter 5 - Input / Output 7 / 90

Principle of I/O Hardware This chapter focuses on: Programming I/O devices This chapter does not focus on: Designing I/O devices; Building I/O devices; Maintaining I/O devices; L. Tarrataca Chapter 5 - Input / Output 8 / 90

I/O Devices I/O Devices Most I/O devices can be divided into two categories: Block devices: store information in fixed-size blocks: Each block has its own address; All transfers are in units of one or more entire blocks. Possible to read / write each block independently of all others; E.g.: hard disks, blu-ray disk, USB sticks, etc... Character devices: reads / writes a stream of characters: Without regard to any block structure; Not addressable E.g.: printers, network interfaces, mice, etc... L. Tarrataca Chapter 5 - Input / Output 9 / 90

I/O Devices I/O devices cover a huge range in speeds: Figure: Some typical device, network and bus data rates (Source: [Tanenbaum and Bos, 2015]) L. Tarrataca Chapter 5 - Input / Output 10 / 90

Device Controllers Device Controllers I/O units often consist of: Mechanical component: device itself (disk head, laser, etc...) Electronic component: A.k.a device controller or adapter Many controllers can handle several identical devices Interface examples between controller and device: SATA; SCSI; USB; Interface between controller and device is often low-level. L. Tarrataca Chapter 5 - Input / Output 11 / 90

Device Controllers Disk Example Consider a disk with 2,000,000 sectors of 512 bytes per track: Information that comes off the drive is a serial bit stream: Starting with a preamble: Cylinder number; Sector number; Sector size; Synchronization information Then the 4096 bits in a sector; And finally a checksum; L. Tarrataca Chapter 5 - Input / Output 12 / 90

Device Controllers Disk Example Controller s job is to: Convert the serial bit stream into a block of bytes: Block of bytes is assembled in a buffer inside the controller; and perform any error correction necessary: If block is error free: copy block to memory; L. Tarrataca Chapter 5 - Input / Output 13 / 90

Device Controllers LCD Display Example LCD display monitor controller also works at a low level: Reads bytes containing the characters to be displayed from memory; Generates the signals to modify pixels in order to write them on screen; If it were not for the display controller: OS programmer would have to specify electric fields of all pixels; With the controller the OS: Initializes the controller with a few parameters; Controller takes care of specifying electric fields. L. Tarrataca Chapter 5 - Input / Output 14 / 90

Memory-Mapped I/O Memory-Mapped I/O Each controller has registers: Used for communicating with the CPU; OS can write into these registers in order to: Deliver data, accept data, switch device on or off, etc... OS can read from these registers in order to: Learn device state and so on; L. Tarrataca Chapter 5 - Input / Output 15 / 90

Memory-Mapped I/O Besides registers many devices also have a data buffer: OS can read or write into; E.g.: computers display pixels on the screen through video ram: Data buffer available for programs or OS to write into. L. Tarrataca Chapter 5 - Input / Output 16 / 90

Memory-Mapped I/O How does the CPU communicate with the control registers and also with the device data buffers? Any ideas? L. Tarrataca Chapter 5 - Input / Output 17 / 90

Memory-Mapped I/O How does the CPU communicate with the control registers and also with the device data buffers? Any ideas? Two alternatives exist: Each control register is assigned an I/O port number; Set of all I/O ports forms the I/O port space; Map all control registers into memory space; A.k.a. memory-mapped I/O; Approach used in Computer Architecture labs =) L. Tarrataca Chapter 5 - Input / Output 18 / 90

Memory-Mapped I/O Figure: (a) Separate I/O and memory space. (b) Memory-mapped I/O, approach used in computer architecture laboratories. (Source: [Tanenbaum and Bos, 2015]) L. Tarrataca Chapter 5 - Input / Output 19 / 90

Memory-Mapped I/O How do these schemes actually work in practice? L. Tarrataca Chapter 5 - Input / Output 20 / 90

Memory-Mapped I/O How do these schemes actually work in practice? When the CPU wants to read a word (memory or I/O port) (1/2): 1 Address placed on the bus address lines; 2 READ signal on a bus control line; L. Tarrataca Chapter 5 - Input / Output 21 / 90

Memory-Mapped I/O How do these schemes actually work in practice? When the CPU wants to read a word (memory or I/O port) (2/2): 3 Additional signal on the bus control line: To tell whether I/O space or memory space is needed; If it is memory space: Memory responds to the request; If it is I/O space: I/O device responds to the request. L. Tarrataca Chapter 5 - Input / Output 22 / 90

Memory-Mapped I/O If there is only memory space: Every memory module and every I/O device: Compares address lines to the range of addresses that it services; If the address falls in its range, it responds to the request; Since no address is ever assigned to both memory and an I/O device: There is no ambiguity and no conflict. L. Tarrataca Chapter 5 - Input / Output 23 / 90

Direct Memory Access Direct Memory Access Eventually with I/O: CPU needs to exchange data with devices CPU can request data from an I/O controller one byte at a time... Can you see any problem with this approach? Any ideas? L. Tarrataca Chapter 5 - Input / Output 24 / 90

Direct Memory Access Direct Memory Access Eventually with I/O: CPU needs to exchange data with devices CPU can request data from an I/O controller one byte at a time... Can you see any problem with this approach? Any ideas? Wasteful of CPU s time. Why? L. Tarrataca Chapter 5 - Input / Output 25 / 90

Direct Memory Access Direct Memory Access Eventually with I/O: CPU needs to exchange data with devices CPU can request data from an I/O controller one byte at a time... Can you see any problem with this approach? Any ideas? Wasteful of CPU s time. Why? CPU is a powerful tool that is being used to copy bytes... L. Tarrataca Chapter 5 - Input / Output 26 / 90

Direct Memory Access Do you know any other mechanism for copying data between I/O devices and memory? L. Tarrataca Chapter 5 - Input / Output 27 / 90

Direct Memory Access Do you know any other mechanism for copying data between I/O devices and memory? Direct Memory Address (DMA): (1/2) OS can use only DMA if the hardware has a DMA controller; Usually a single DMA controller is available: Typically on the motherboard; Regulates transfers to multiple devices, often concurrently. L. Tarrataca Chapter 5 - Input / Output 28 / 90

Direct Memory Access Direct Memory Address (DMA): (2/2) DMA has access to the system bus independent of the CPU; DMA contains several registers that can be written and read by the CPU: Memory Address Register; Byte count register; One or more control registers: Specify the I/O port to use; Read / Write from / into I/O device; Transfer unit: byte? word? Number of units to transfer in one burst; L. Tarrataca Chapter 5 - Input / Output 29 / 90

Direct Memory Access Programmed Interruptions Consider how disk reads occur when DMA is not used, the disk controller: 1 Reads block bit by bit: Until entire block is in the controller s internal buffer. 2 Computes checksum to verify that no read errors have occurred. 3 Causes an interrupt: When the OS executes: Disk block is read from the controller s buffer and stored in main memory; L. Tarrataca Chapter 5 - Input / Output 30 / 90

Direct Memory Access DMA Transfers Consider how disk reads occur when DMA is used (1/5): Figure: Operation of a DMA transfer. (Source: [Tanenbaum and Bos, 2015]) L. Tarrataca Chapter 5 - Input / Output 31 / 90

Direct Memory Access DMA Transfers Consider how disk reads occur when DMA is used (2/5): 1 CPU programs the DMA controller s registers so that: Source device and destination memory addresses are configured; 2 DMA controller initiates transfer by: Issuing a read request over the bus to the disk controller; Placing destination address on the bus address lines; L. Tarrataca Chapter 5 - Input / Output 32 / 90

Direct Memory Access DMA Transfers Consider how disk reads occur when DMA is used (3/5): 3 Once word has been placed on the disk s controller internal buffer: Disk controller issues write request to memory module; 4 When memory write is complete: Disk controllers sends acknowledgement signal to the DMA controller; L. Tarrataca Chapter 5 - Input / Output 33 / 90

Direct Memory Access DMA Transfers Consider how disk reads occur when DMA is used (4/5): 5 DMA controller then: Increments memory address to use; Decrements the byte count; If byte count is greater than zero: Steps 2 through 4 are repeated; If byte count is zero: DMA controller interrupts the CPU: transfer is now complete. L. Tarrataca Chapter 5 - Input / Output 34 / 90

Direct Memory Access DMA Transfers Consider how disk reads occur when DMA is used (5/5): 6 When OS starts up: Disk block is already in memory; L. Tarrataca Chapter 5 - Input / Output 35 / 90

Direct Memory Access Important: Whenever the DMA is using the bus: If the CPU also wants the bus, it has to wait; This delays CPU operation: Slightly if a small amount of information is transferred; Substantially if a big amount of information is transferred; L. Tarrataca Chapter 5 - Input / Output 36 / 90

Interrupts Revisited Interrupts Revisited What do you think is the typical interrupt structure? Any ideas? L. Tarrataca Chapter 5 - Input / Output 37 / 90

Interrupts Revisited Interrupts Revisited Typical interrupt structure: Figure: How an interrupt happens. The connections between the devices and the controller actually use interrupt lines on the bus rather than dedicated wires. (Source: [Tanenbaum and Bos, 2015]) L. Tarrataca Chapter 5 - Input / Output 38 / 90

Interrupts Revisited Interrupts work as follows (1/5): 1 Once I/O device finishes work it causes an interrupt; 2 Interrupt is a signal on a bus line; L. Tarrataca Chapter 5 - Input / Output 39 / 90

Interrupts Revisited Interrupts work as follows (2/5): 3 Signal is detected by interrupt controller chip on the motherboard: If no other interrupts are pending: interrupt controller handles the interrupt immediately. If another interrupt or higher interruption exists: Device is ignored for the moment; Device continues to assert interrupt signal on the bus; L. Tarrataca Chapter 5 - Input / Output 40 / 90

Interrupts Revisited Interrupts work as follows (3/5): 4 Device controller responsible for generating interruption: Configures address lines with a number specifying the device; L. Tarrataca Chapter 5 - Input / Output 41 / 90

Interrupts Revisited Interrupts work as follows (4/5): 5 Interrupt signal causes the CPU to switch context: Number in address lines indexes interrupt vector; Giving the PC of the interrupt-service procedure; Context needs to be: Saved before processing interruption; Restored after processing interruption; L. Tarrataca Chapter 5 - Input / Output 42 / 90

Interrupts Revisited Interrupts work as follows (5/5): 6 Interrupt-service procedure acknowledges interruption: By writing a certain value to one of the interrupt controller s I/O ports; Acknowledgement tells: Device controller that it is free to issue another interrupt. L. Tarrataca Chapter 5 - Input / Output 43 / 90

Interrupts Revisited But what happens if we have a pipelined processor? Any ideas? L. Tarrataca Chapter 5 - Input / Output 44 / 90

Interrupts Revisited But what happens if we have a pipelined processor? Any ideas? First: what is a pipelined processor? Any ideas? L. Tarrataca Chapter 5 - Input / Output 45 / 90

Interrupts Revisited First: what is a pipelined processor? Any ideas? Figure: Timing Diagram for a 6-stage instruction Pipeline Operation (Source: [Stallings, 2015]) L. Tarrataca Chapter 5 - Input / Output 46 / 90

Interrupts Revisited But what happens if we have a pipelined processor? Any ideas? What happens if an interrupt occurs while the pipeline is full (the usual case)? Any ideas? L. Tarrataca Chapter 5 - Input / Output 47 / 90

Interrupts Revisited What happens if an interrupt occurs while the pipeline is full (the usual case)? Any ideas? Many instructions are in various stages of execution; When the interrupt occurs: PC may not reflect the correct boundary between: Executed instructions and non-executed instructions Why do you think this happens? Any ideas? L. Tarrataca Chapter 5 - Input / Output 48 / 90

Interrupts Revisited Why do you think this happens? Any ideas? Many instructions may have been partially executed; PC most likely reflects address of the next instruction to be: Fetched and pushed into the pipeline; Rather than the address of the instruction that just was processed; L. Tarrataca Chapter 5 - Input / Output 49 / 90

Interrupts Revisited What happens if we have a superscalar processor? L. Tarrataca Chapter 5 - Input / Output 50 / 90

Interrupts Revisited What happens if we have a superscalar processor? Things are even worse; Instructions may be decomposed into micro-operations: µ-operations may execute out of order; Depending on availability of functional units and registers; At the time of an interrupt: Some instructions started long ago may not have finished; Others started more recently may be almost done; L. Tarrataca Chapter 5 - Input / Output 51 / 90

Interrupts Revisited This leads to the concept of precise interrupt: All instructions before the one pointed to by the PC have completed. Figure: (a) A precise interrupt. (b) An imprecise interrupt. (Source: [Tanenbaum and Bos, 2015]) L. Tarrataca Chapter 5 - Input / Output 52 / 90

Interrupts Revisited imprecise interrupts makes life most unpleasant for the OS writer: instructions near the program counter are in stages of completion; Machines with imprecise interrupts usually: Vomit a large amount of internal state onto the stack; OS must analyze this to figure out what was going on; Code necessary to restart the machine is typically exceedingly complicated. Each interruption saves a lot of information into memory: Memory access implies slower performance; Bad performance for superscalar CPUs; L. Tarrataca Chapter 5 - Input / Output 53 / 90

Interrupts Revisited So what can be done to solve these issues? Any ideas? L. Tarrataca Chapter 5 - Input / Output 54 / 90

Interrupts Revisited So what can be done to solve these issues? Any ideas? A common answer in engineering: it depends x86 processor family have precise interrupts: All instructions up to some point are allowed to finish; Before the interruption is processed; Requires extra chip complexity; Some processors allow for imprecise interrupts: Making OS far more complicated and slower; Conclusion: hard to tell which approach is really better. L. Tarrataca Chapter 5 - Input / Output 55 / 90

I/O software layers I/O software layers I/O software is typically organized in four layers: Figure: Layers of the I/O software system. (Source: [Tanenbaum and Bos, 2015]) Lets have a look at each of these =) L. Tarrataca Chapter 5 - Input / Output 56 / 90

I/O software layers Interrupt Handlers Interrupt Handlers Interrupt process requires the following steps to be performed: 1 Save registers that will be used by handler; 2 Set up a context for the interrupt-service procedure. 3 Set up a stack for the interrupt service-procedure; 4 Acknowledge interrupt controller; 5 Copy saved registers to process table; 6 Run the interrupt-service procedure; 7 Choose which process to run next; 8 Load the new process registers; 9 Start running the new process. L. Tarrataca Chapter 5 - Input / Output 57 / 90

I/O software layers Device Drivers Device Drivers Earlier we saw device controllers: (1/2) Each controller has some device registers used to : Give the device commands; Read status; L. Tarrataca Chapter 5 - Input / Output 58 / 90

I/O software layers Device Drivers Device Drivers Earlier we saw device controllers: (2/2) Number of registers and commands vary from device to device, e.g.: Mouse driver has to accept information from the mouse, e.g.:: How far it has moved Which buttons are pressed; Disk driver has to know all about: Sectors, tracks, cylinders, heads, arm motion, etc... Obviously, these drivers will be very different. L. Tarrataca Chapter 5 - Input / Output 59 / 90

I/O software layers Device Drivers Each I/O device needs some device-specific code, i.e., device driver: Usually written by the device s manufacturer; Different for each OS; Each device driver normally handles one device type: Mouse driver; Joystick driver; Each device driver can also handle closely related devices: SCSI disk driver can usually handle multiple SCSI disks L. Tarrataca Chapter 5 - Input / Output 60 / 90

I/O software layers Device Drivers Different devices can also be based on the same underlying technology: Example: Universal serial bus: Disks, memory sticks, cameras, mice, keyboards, etc... There is a reason why it called universal In order to access the device s hardware (i.e. data / control registers): Device driver normally has to be part of kernel; Device drivers are normally positioned below the rest of OS; L. Tarrataca Chapter 5 - Input / Output 61 / 90

I/O software layers Device Drivers Figure: Logical positioning of device drivers. In reality all communication between drivers and device controllers goes over the bus. (Source: [Tanenbaum and Bos, 2015]) L. Tarrataca Chapter 5 - Input / Output 62 / 90

I/O software layers Device Drivers Remember that OS usually classify drivers into: Block devices: containing multiple data blocks: Each block can be addressed independently; OS define a standard interface that: Block drivers must support, e.g.: read a block; Character devices: accepting a stream of characters: Such as keyboards and printers; OS define a standard interface that: Character drivers must support, e.g.: write string; L. Tarrataca Chapter 5 - Input / Output 63 / 90

I/O software layers Device Drivers In your opinion: What are the set of responsibilities of a device driver? Any ideas? L. Tarrataca Chapter 5 - Input / Output 64 / 90

I/O software layers Device Drivers What are the set of responsibilities of a device driver? Any ideas? Device driver functions: Minimum set of functions: Accept read / write requests; See that read / write requests are performed; Additional set of possible functions: Initialize device; Manage power requirements; Log events; L. Tarrataca Chapter 5 - Input / Output 65 / 90

I/O software layers Device Drivers In your opinion: What is the general structure of a device driver? Any ideas? L. Tarrataca Chapter 5 - Input / Output 66 / 90

I/O software layers Device Drivers Device driver general structure (1/2): 1 Confirm input parameters are valid: If not return an error; 2 Check if the device is currently in use: If device is busy: Queue request for later processing; If device is idle: Check if device can handle request......may be necessary to: switch device, start motor, etc.....proceed to process request L. Tarrataca Chapter 5 - Input / Output 67 / 90

I/O software layers Device Drivers Device driver general structure (2/2): 3 Commands are written into the controller s device registers; 4 After each command is written to the controller: May be necessary to check to see if: Controller accepted the command and......is prepared to accept the next one. Sequence continues until all the commands have been issued; L. Tarrataca Chapter 5 - Input / Output 68 / 90

I/O software layers Device Drivers 5 After the commands have been issued: Situation 1: driver waits until controller finishes work; Driver blocks; Can be awakened by an interruption; Situation 2: operation finishes without delay: No need for the driver to block; L. Tarrataca Chapter 5 - Input / Output 69 / 90

I/O software layers Device Drivers 6 After operation completes: driver checks for errors If no error: data is returned to original requesting application; 7 If any other requests are queued: They can now be selected and started.s 8 If nothing is queued: Driver blocks waiting for the next request. L. Tarrataca Chapter 5 - Input / Output 70 / 90

I/O software layers Device-Independent I/O Software Device-Independent I/O Software Although some I/O software is device specific: Other parts of it are device independent. The following functions are typically device-independent: Uniform interfacing for device drivers; Buffering; Error reporting; Allocating and releasing dedicated devices; Providing a device-independent block size; Lets have a look at each one of these... L. Tarrataca Chapter 5 - Input / Output 71 / 90

I/O software layers Device-Independent I/O Software Uniform Interfacing for Device Drivers How can we make all I/O devices and drivers look more or less the same? Any ideas? L. Tarrataca Chapter 5 - Input / Output 72 / 90

I/O software layers Device-Independent I/O Software Uniform Interfacing for Device Drivers How can we make all I/O devices and drivers look more or less the same? Any ideas? All drivers have the same interface: Easy to plug in a new driver: Driver just needs to implements methods specified in interface; Driver writers know what is expected of them; In practice: not all devices are absolutely identical: But usually there are only a small number of device types......and even these are generally almost the same. L. Tarrataca Chapter 5 - Input / Output 73 / 90

I/O software layers Device-Independent I/O Software Figure: Standard driver interface.(source: [Tanenbaum and Bos, 2015]) L. Tarrataca Chapter 5 - Input / Output 74 / 90

I/O software layers Device-Independent I/O Software Usual methods specified by the interface: Read; Write; Turn power on / off; Formatting; L. Tarrataca Chapter 5 - Input / Output 75 / 90

I/O software layers Device-Independent I/O Software Buffering How to buffer data from / into the device? Any ideas? L. Tarrataca Chapter 5 - Input / Output 76 / 90

I/O software layers Device-Independent I/O Software Buffering How to buffer data from the device? Any ideas? Read/Write one item of information? Device driver process is executed once for each item; Not very efficient; Read / Write multiple items of information? Device driver process is executed once for multiple items; More efficient; Read/Write data into a kernel register? Copy data to device driver when full; L. Tarrataca Chapter 5 - Input / Output 77 / 90

I/O software layers Device-Independent I/O Software Error reporting Many errors are device specific: Handled by the appropriate driver; What software does depends on environment and error nature; Option include: Asking user what to do; Retry a certain number of times; Ignore the error; Killing the calling process; Have system call return with an error code; L. Tarrataca Chapter 5 - Input / Output 78 / 90

I/O software layers Device-Independent I/O Software However, some errors cannot be handled this way: If error involves critical data: System may have to display an error message and terminate: Not much else it can do. L. Tarrataca Chapter 5 - Input / Output 79 / 90

I/O software layers Device-Independent I/O Software Allocating and Releasing Dedicated Devices OS examines requests for device usage and accepts or rejects them: Depending on whether the requested device is available or not; If request is authorized OS must: Allocate device during request; Free allocated resource (including device) after request is processed; L. Tarrataca Chapter 5 - Input / Output 80 / 90

I/O software layers Device-Independent I/O Software Device-Independent Block Size Different disks may have different sector sizes: Up to the device-independent software to hide this fact: Providing a uniform block size to higher layers, Several sectors as a single logical block; This way higher layers all use the same block size: L. Tarrataca Chapter 5 - Input / Output 81 / 90

I/O software layers User-Space I/O Software User-Space I/O Software Summary of the I/O system: Figure: Layers of the I/O system and the main functions of each layer. (Source: [Tanenbaum and Bos, 2015]) L. Tarrataca Chapter 5 - Input / Output 82 / 90

I/O software layers User-Space I/O Software Example: 1 User program tries to read a block from a file; 2 Device-independent software looks for it in buffer cache: 3 If the needed block is not there: device driver issues request to hardware; 4 Hardware fetches block from disk; 5 Process is then blocked until disk operation finished; 6 When disk finishes: interruption is generated; 7 Interruption handler runs and notifies sleeping process; L. Tarrataca Chapter 5 - Input / Output 83 / 90

Clocks Clocks Clocks (also called timers) are essential to OS: Maintain the time of day; Prevent one process from monopolizing the CPU; Among other things; Clock software can take the form of a device driver: Even though a clock is neither a block device nor a character device; Lets look first at the clock hardware and then the software; L. Tarrataca Chapter 5 - Input / Output 84 / 90

Clocks Clock Hardware Clock Hardware A clock is built out of three components: Crystal oscillator: When piece of quartz crystal is properly cut and mounted under tension: Generate a periodic signal of very great accuracy; Synchronizing signal to the computer s various circuits. Counter: Clock signal is fed into the counter to make it count down to zero; When counter gets to zero, it causes a CPU interrupt. Holding register: used to load the counter; L. Tarrataca Chapter 5 - Input / Output 85 / 90

Clocks Clock Hardware Figure: A programmable clock. (Source: [Tanenbaum and Bos, 2015]) L. Tarrataca Chapter 5 - Input / Output 86 / 90

Clocks Clock Hardware Two working modes: One-shot mode: When clock is started it copies holding register value to counter; Counter is decremented at each pulse; When counter gets to zero: Interruption is activated; Stops until explicitly started again; Square-wave (periodic) mode: After getting to zero and causing interruption: holding register is automatically copied into the counter; process is repeated again indefinitely. L. Tarrataca Chapter 5 - Input / Output 87 / 90

Clocks Clock Hardware Programmable clock chips usually contain: Two or three independently programmable clocks; Many other options: counting up; counting down; interrupts disabled; and more; L. Tarrataca Chapter 5 - Input / Output 88 / 90

Clocks Clock Software Clock Software Clock hardware is responsible for generating interrupts at known intervals: Everything else must be done by the clock driver; Exact duties usually include: 1 Maintaining the time of day; 2 Preventing processes from running longer than they are allowed to; 3 Accounting for CPU usage; 4 Handling the alarm system call made by user processes; 5 Providing watchdog timers for parts of the system itself; 6 Doing profiling, monitoring, and statistics gathering. L. Tarrataca Chapter 5 - Input / Output 89 / 90

References References I Stallings, W. (2015). Computer Organization and Architecture. Pearson Education. Tanenbaum, A. and Bos, H. (2015). Modern Operating Systems. Pearson Education Limited. L. Tarrataca Chapter 5 - Input / Output 90 / 90