1 / 34

Discussion Week 8

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

liang
Download Presentation

Discussion Week 8

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Discussion Week 8 • TA: Kyle Dewey

  2. Overview • Exams • Interrupt priority • Direct memory access (DMA) • Different kinds of I/O calls • Caching • What I/O looks like

  3. Exams

  4. 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

  5. Interrupt Priority Process 1 I/O Start I/O Done Time -> Process 2 I/O Start

  6. Prioritizing • While servicing one interrupt, another interrupt occurred • Question: should we finish our ISR or allow the other ISR to run immediately?

  7. Prioritizing • Which ISRs preempt which is potentially complex • Preemption within the kernel can be complex • Similar issues as with process preemption

  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?

  9. 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

  10. 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

  11. DMA in Action Time 1 Time 2 CPU Schedules Process Write 3b CPU DMA M: 1; D: 0 DMA Controller Does I/O Memory Memory Disk Disk

  12. DMA in Action Times 3-4 Time 5 CPU Runs Process I/O Done CPU DMA DMA Controller Does I/O Memory Memory Disk Disk

  13. DMA Issues • Question: How does this work in with virtual memory? • Question: How does this work with swappable pages?

  14. I/O Types

  15. Blocking/Nonblocking • Blocking: wait until I/O is complete until returning • Nonblocking: on each call, return what has been done so far

  16. Nonblocking • Question: Why is this useful? • Consider a program that gets the sum of integers from a 1 GB file

  17. 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

  18. 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

  19. I/O Calls

  20. But I/O is still slow...

  21. Caching • Idea: Do as much “I/O” in memory as possible file = open( fileName, O_RDWR ); read( file, buffer, 50 ); ... // more code that changes buffer lseek( file, 0, SEEK_SET ); write( file, buffer, 50 ); close( file )

  22. Caching • Massive performance gains possible • Real systems use this all the time • Can be quite complex

  23. UNIX Semantics • A write() is immediately available to anything that calls read() • How does this work with caching?

  24. 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

  25. Example Revisited • How does the OS handle this? file = open( fileName, O_RDWR ); read( file, buffer, 50 ); ... // more code that changes buffer lseek( file, 0, SEEK_SET ); write( file, buffer, 50 ); strcpy( buffer, “Poisoned buffer” ); close( file )

  26. The face of I/O

  27. Variation

  28. 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

  29. 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

  30. 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...

  31. Floppy Drives • Often used the same interface as tape drives • More naturally a block device

  32. 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?

  33. 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

  34. 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

More Related