**************************************************************
* Description: Knowledge of Operating System asynchronous I/O
* Compatiablity: RDBMS 11g, 12c
* Date: 05:59 PM EST, 04/24/2017
**************************************************************



<1> Synchronous and Asynchronous I/O:
     |
     |__ There are two types of input/output (I/O) synchronization: synchronous I/O and asynchronous I/O. Asynchronous I/O is also referred to as overlapped I/O.
         In synchronous file I/O, a thread starts an I/O operation and immediately enters a wait state until the I/O request has completed. 
         A thread performing asynchronous file I/O sends an I/O request to the kernel by calling an appropriate function. 
         If the request is accepted by the kernel, the calling thread continues processing another job until the kernel signals to the thread that the I/O operation is complete. 
         It then interrupts its current job and processes the data from the I/O operation as necessary.
		 
         In situations where an I/O request is expected to take a large amount of time, such as a refresh or backup of a large database or a slow communications link, 
         asynchronous I/O is generally a good way to optimize processing efficiency. However, for relatively fast I/O operations, the overhead of processing kernel I/O requests 
         and kernel signals may make asynchronous I/O less beneficial, particularly if many fast I/O operations need to be made. In this case, synchronous I/O would be better. 
         The mechanisms and implementation details of how to accomplish these tasks vary depending on the type of device handle that is used and the particular needs of the application. 
         In other words, there are usually multiple ways to solve the problem.

		 
<2> Reference:
     |
     |__ https://msdn.microsoft.com/en-us/library/windows/desktop/aa365683(v=vs.85).aspx