• 沒有找到結果。

Chapter 13: I/O Systems

N/A
N/A
Protected

Academic year: 2022

Share "Chapter 13: I/O Systems"

Copied!
38
0
0

加載中.... (立即查看全文)

全文

(1)

Chapter 13: I/O Systems

Chapter 13: I/O Systems

(2)

13.2

Chapter 13: I/O Systems Chapter 13: I/O Systems

13.1 Overview 13.2 I/O Hardware

13.3 Application I/O Interface 13.4 Kernel I/O Subsystem

13.5 Transforming I/O Requests to Hardware Operations

13.6 STREAMS

13.7 Performance

(3)

13.3

Objectives Objectives

„ Explore the structure of an operating system’s I/O subsystem

„ Discuss the principles of I/O hardware and its complexity

„ Provide details of the performance aspects of I/O hardware and software

(4)

13.4

I/O Hardware I/O Hardware

„ Incredible variety of I/O devices

„ Common concepts

z Port

z Bus (daisy chain or shared direct access)

z Controller (host adapter)

„ I/O instructions control devices

„ Devices have addresses, used by

z Direct I/O instructions

z Memory-mapped I/O

(5)

13.5

A Typical PC Bus Structure

A Typical PC Bus Structure

(6)

13.6

Device I/O Port Locations on PCs (partial)

Device I/O Port Locations on PCs (partial)

(7)

13.7

Polling Polling

„ Determines state of device

z command-ready

z busy

z Error

„ Busy-wait cycle to wait for I/O from device

(8)

13.8

Interrupts Interrupts

„ CPU Interrupt-request line triggered by I/O device

„ Interrupt handler receives interrupts

„ Maskable to ignore or delay some interrupts

„ Interrupt vector to dispatch interrupt to correct handler

z Based on priority

z Some nonmaskable

„ Interrupt mechanism also used for exceptions

(9)

13.9

Interrupt

Interrupt - - Driven I/O Cycle Driven I/O Cycle

(10)

13.10

Intel Pentium Processor Event

Intel Pentium Processor Event - - Vector Table Vector Table

(11)

13.11

Direct Memory Access Direct Memory Access

„ Used to avoid programmed I/O for large data movement

„ Requires DMA controller

„ Bypasses CPU to transfer data directly between I/O device and memory

(12)

13.12

Six Step Process to Perform DMA Transfer

Six Step Process to Perform DMA Transfer

(13)

13.13

Application I/O Interface Application I/O Interface

„ I/O system calls encapsulate device behaviors in generic classes

„ Device-driver layer hides differences among I/O controllers from kernel

„ Devices vary in many dimensions

z Character-stream or block

z Sequential or random-access

z Sharable or dedicated

z Speed of operation

z read-write, read only, or write only

(14)

13.14

A Kernel I/O Structure

A Kernel I/O Structure

(15)

13.15

Characteristics of I/O Devices

Characteristics of I/O Devices

(16)

13.16

Block and Character Devices Block and Character Devices

„ Block devices include disk drives

z Commands include read, write, seek

z Raw I/O or file-system access

z Memory-mapped file access possible

„ Character devices include keyboards, mice, serial ports

z Commands include get, put

z Libraries layered on top allow line editing

(17)

13.17

Network Devices Network Devices

„ Varying enough from block and character to have own interface

„ Unix and Windows NT/9x/2000 include socket interface

z Separates network protocol from network operation

z Includes select functionality

„ Approaches vary widely (pipes, FIFOs, streams, queues, mailboxes)

(18)

13.18

Clocks and Timers Clocks and Timers

„ Provide current time, elapsed time, timer

„ Programmable interval timer used for timings, periodic interrupts

„ ioctl (on UNIX) covers odd aspects of I/O such as clocks and timers

(19)

13.19

Blocking and Nonblocking I/O Blocking and Nonblocking I/O

„ Blocking - process suspended until I/O completed

z Easy to use and understand

z Insufficient for some needs

„ Nonblocking - I/O call returns as much as available

z User interface, data copy (buffered I/O)

z Implemented via multi-threading

z Returns quickly with count of bytes read or written

„ Asynchronous - process runs while I/O executes

z Difficult to use

z I/O subsystem signals process when I/O completed

(20)

13.20

Two I/O Methods Two I/O Methods

Synchronous Asynchronous

(21)

13.21

Kernel I/O Subsystem Kernel I/O Subsystem

„ Scheduling

z Some I/O request ordering via per-device queue

z Some OSs try fairness

„ Buffering - store data in memory while transferring between devices

z To cope with device speed mismatch

z To cope with device transfer size mismatch

z To maintain “copy semantics”

(22)

13.22

Device

Device - - status Table status Table

(23)

13.23

Sun Enterprise 6000 Device

Sun Enterprise 6000 Device - - Transfer Rates Transfer Rates

(24)

13.24

Kernel I/O Subsystem Kernel I/O Subsystem

„ Caching - fast memory holding copy of data

z Always just a copy

z Key to performance

„ Spooling - hold output for a device

z If device can serve only one request at a time

z i.e., Printing

„ Device reservation - provides exclusive access to a device

z System calls for allocation and deallocation

z Watch out for deadlock

(25)

13.25

Error Handling Error Handling

„ OS can recover from disk read, device unavailable, transient write failures

„ Most return an error number or code when I/O request fails

„ System error logs hold problem reports

(26)

13.26

I/O Protection I/O Protection

„ User process may accidentally or purposefully attempt to disrupt normal operation via illegal I/O instructions

z All I/O instructions defined to be privileged

z I/O must be performed via system calls

 Memory-mapped and I/O port memory locations must be protected too

(27)

13.27

Use of a System Call to Perform I/O

Use of a System Call to Perform I/O

(28)

13.28

Kernel Data Structures Kernel Data Structures

„ Kernel keeps state info for I/O components, including open file tables, network connections, character device state

„ Many, many complex data structures to track buffers, memory allocation, “dirty” blocks

„ Some use object-oriented methods and message passing to implement I/O

(29)

13.29

UNIX I/O Kernel Structure

UNIX I/O Kernel Structure

(30)

13.30

I/O Requests to Hardware Operations I/O Requests to Hardware Operations

„ Consider reading a file from disk for a process:

z Determine device holding file

z Translate name to device representation

z Physically read data from disk into buffer

z Make data available to requesting process

z Return control to process

(31)

13.31

Life Cycle of An I/O Request

Life Cycle of An I/O Request

(32)

13.32

STREAMS STREAMS

„ STREAM – a full-duplex communication channel between a user- level process and a device in Unix System V and beyond

„ A STREAM consists of:

- STREAM head interfaces with the user process - driver end interfaces with the device

- zero or more STREAM modules between them.

„ Each module contains a read queue and a write queue

„ Message passing is used to communicate between queues

(33)

13.33

The STREAMS Structure

The STREAMS Structure

(34)

13.34

Performance Performance

„ I/O a major factor in system performance:

z Demands CPU to execute device driver, kernel I/O code

z Context switches due to interrupts

z Data copying

z Network traffic especially stressful

(35)

13.35

Intercomputer Communications

Intercomputer Communications

(36)

13.36

Improving Performance Improving Performance

„ Reduce number of context switches

„ Reduce data copying

„ Reduce interrupts by using large transfers, smart controllers, polling

„ Use DMA

„ Balance CPU, memory, bus, and I/O performance for highest throughput

(37)

13.37

Device

Device - - Functionality Progression Functionality Progression

(38)

End of Chapter 13 End of Chapter 13

13.1 Overview 13.2 I/O Hardware

13.3 Application I/O Interface 13.4 Kernel I/O Subsystem

13.5 Transforming I/O Requests to Hardware Operations

13.6 STREAMS

13.7 Performance

參考文獻

相關文件