34
Discussion Week 8 TA: Kyle Dewey

Discussion Week 8

  • Upload
    liang

  • View
    27

  • Download
    0

Embed Size (px)

DESCRIPTION

Discussion Week 8. TA: Kyle Dewey. Overview. Exams Interrupt priority Direct memory access (DMA) Different kinds of I/O calls Caching What I/O looks like. Exams. Interrupt Priority. Process 1 makes an I/O request Process 2 makes an I/O request - PowerPoint PPT Presentation

Citation preview

Page 1: Discussion Week 8

Discussion Week 8TA: Kyle Dewey

Page 2: Discussion Week 8

Overview

•Exams

•Interrupt priority

•Direct memory access (DMA)

•Different kinds of I/O calls

•Caching

•What I/O looks like

Page 3: Discussion Week 8

Exams

Page 4: Discussion Week 8

Interrupt Priority

•Process 1 makes an I/O request

•Process 2 makes an I/O request

•While setting up Process 2’s request, Process 1’s request finishes

Page 5: Discussion Week 8

Interrupt Priority

Process 1Process 1

Process 2Process 2

I/O I/O StartStart

I/O I/O StartStart

I/O I/O DoneDone Time ->

Page 6: Discussion Week 8

Prioritizing

•While servicing one interrupt, another interrupt occurred

•Question: should we finish our ISR or allow the other ISR to run immediately?

Page 7: Discussion Week 8

Prioritizing

•Which ISRs preempt which is potentially complex

•Preemption within the kernel can be complex

•Similar issues as with process preemption

Page 8: Discussion Week 8

Performing I/O

•“I/O takes forever, so while we do I/O, we schedule something else.”

•...so how do we do I/O if we’re doing something else?

Page 9: Discussion Week 8

DMA Controller•Answer: special hardware

•Dedicated processor just for handling I/O

•The processor directly manipulates memory and the I/O device, bypassing the CPU

Page 10: Discussion Week 8

DMA Messages

•Read X bytes starting at Y part of disk into Z part of memory

•Write X bytes to disk starting at part Y of disk from Z part of memory

Page 11: Discussion Week 8

DMA in Action

CPUCPU DMADMAWrite 3b

M: 1; D: 0

x f o o

a b c d

Memory

Disk

Time 1 Time 2

x f o o

f b c d

Memory

Disk

CPU Schedules Process

DMA Controller Does I/O

Page 12: Discussion Week 8

DMA in ActionTimes 3-4 Time 5

x f o o

f b c d

Memory

Disk

CPU Runs Process

DMA Controller Does I/O

x f o o

f o o d

Memory

Disk

CPUCPU DMADMAI/O Done

Page 13: Discussion Week 8

DMA Issues

•Question: How does this work in with virtual memory?

•Question: How does this work with swappable pages?

Page 14: Discussion Week 8

I/O Types

Page 15: Discussion Week 8

Blocking/Nonblocking

•Blocking: wait until I/O is complete until returning

•Nonblocking: on each call, return what has been done so far

Page 16: Discussion Week 8

Nonblocking

•Question: Why is this useful?

•Consider a program that gets the sum of integers from a 1 GB file

Page 17: Discussion Week 8

Synchronous/Asynchronous

•Synchronous: wait for I/O to complete before returning

•Asynchronous: do not wait for I/O to complete before returning

•Ideally, there is a callback to signal when the I/O is complete

Page 18: Discussion Week 8

Asynchronous vs. Nonblocking

•DMA is asynchronous

•Asynchronous is still all or nothing, like a typical synchronous blocking I/O

•Nonblocking can get partial results

•Note: Wikipedia lies

Page 19: Discussion Week 8

I/O Calls

Synchronous

Asynchronous

Blocking Common Depends...

Nonblocking Nonsensical Possible

Page 20: Discussion Week 8

But I/O is still slow...

Page 21: Discussion Week 8

Caching

•Idea: Do as much “I/O” in memory as possible

file = open( fileName, O_RDWR );read( file, buffer, 50 );... // more code that changes bufferlseek( file, 0, SEEK_SET );write( file, buffer, 50 );close( file )

Page 22: Discussion Week 8

Caching

•Massive performance gains possible

•Real systems use this all the time

•Can be quite complex

Page 23: Discussion Week 8

UNIX Semantics

•A write() is immediately available to anything that calls read()

•How does this work with caching?

Page 24: Discussion Week 8

Consistency

•Cache is by definition a copy of the actual resource

•Any access to that resource must behave as if caching is not being performed

•They will be out of sync, but they cannot look out of sync

Page 25: Discussion Week 8

Example Revisited

file = open( fileName, O_RDWR );read( file, buffer, 50 );... // more code that changes bufferlseek( file, 0, SEEK_SET );write( file, buffer, 50 );strcpy( buffer, “Poisoned buffer” );close( file )

•How does the OS handle this?

Page 26: Discussion Week 8

The face of I/O

Page 27: Discussion Week 8

Variation

Page 28: Discussion Week 8

Variation

•“I/O” is extremely broad

•...yet we try to make it fit into a consistent interface

•Major differences in OSes are often seen in how they treat I/O

Page 29: Discussion Week 8

Broad Classes•Character based: One character at a

time is manipulated

•Examples: keyboards, mice, network cards

•Block based: Blocks of characters are manipulated at a time

•Examples: Hard drives, flash drives

Page 30: Discussion Week 8

Broad Classes•Some manage not to fit into even these

•Example: tape drives

•A seek can take a long time - impractical under essentially any circumstance

•Character devices have no notion of seeking

•However, data is stored in blocks...

Page 31: Discussion Week 8

Floppy Drives

•Often used the same interface as tape drives

•More naturally a block device

Page 32: Discussion Week 8

Responding to I/O•Interrupts or polling can be used

•Some support both

•Which is best depends on usage scenario

•Polling makes little sense for hard drives - why?

•Interrupts are not usually used for mice - why?

Page 33: Discussion Week 8

I/O Space

•I/O devices often have a limited amount of space they can work with internally

•If the OS fails to respond before this space fills, data can be lost

•Example: keyboards

Page 34: Discussion Week 8

Buffering

•Buffer: a place in memory to put this data

•Not *quite* the same as a cache

•Not a copy

•Note that a cache can also be a buffer, but a buffer is by definition not a cache