Wiki article: Understanding Synchronous and Asynchronous I/O

  • Thread starter Thread starter whitehorsey
  • Start date Start date
AI Thread Summary
Polling is considered synchronous because it requires the program to wait for I/O operations to complete before proceeding, while interrupts allow the program to continue executing other tasks without waiting. The source of interrupts is typically hardware signals that notify the operating system when an I/O operation is finished, contrasting with polling, which actively checks for completion. Although polling can be integrated into a larger codebase that performs other functions, it still fundamentally involves waiting, aligning it with synchronous behavior. The discussion highlights the nuances of terminology and the practical implications of using polling versus interrupts in operating systems. Understanding these concepts is essential for optimizing I/O operations in software development.
whitehorsey
Messages
188
Reaction score
0
1. Why is polling synchronous and interrupts are not?
 
Physics news on Phys.org
What is the source of interrupts? What is determining when polling occurs?
 
Is this a question about terminology (syncrhonous versus asyncrhonous) or about the differences / advantages of using interrupts instead of polling (in software)?
 
Ah the question is related to how polling and interrupts are used by the OS to see when the I/O is finished. Then, it asks which one is synchronous polling or interrupts. I found that polling is synchronous but I don't understand why. =/
 
whitehorsey said:
I'm thinking that polling is synchronous because you wait for it to be completed ...
This is how the wiki article defines synchronous I/O, the program starts an I/O, then waits for that I/O to complete before continuing to do anything else.

However, even without using interrupts, the polling could be handled by calls to a function (one that polls for and handles I/O completion) interspersed within some code that peforms some other function while the I/O is ongoing. This would introduce a delay in the I/O completion response, but if the I/O hardware includes buffering, it wouldn't be an issue as long as the polling is done frequently enough. Based on the wiki terminology, this would be considered asynchronous, even though polling is involved.

A similar concept for a crude form of multi-tasking operating system, would be non-pre-emptive and co-operative multi-tasking. Wiki articles:

nonpreemptive_multitasking.htm

cooperative_multitasking.htm
 
Last edited:
rcgldr said:
This is how the wiki article defines synchronous I/O, the program starts an I/O, then waits for that I/O to complete before continuing to do anything else.
...

I got it! Thank You!
 
Back
Top