I am curious about the exact request sent by asynchronous I/O after the I/O event. Is it a signal or an interrupt? Or is it architecture specific? The related question and answer are below, but I still don't get it. Question
From my understanding, it makes more sense to issue interrupt rather than signal or even trap, since it's about I/O device.
It depends upon the operating system. In the classic RSX and VMS system you could specify with an I/O request a software "interrupt" (or a trap) routine to be called at the completion of I/O. The basic system service for IO was SYS$QIO or SYS$QIOW. The former did asynchronous I/O and the latter synchronous. Both had the same parameters. With sychronous I/O the software interrupt routine was called synchronously at I/O completion. Windoze NT is the same under the covers but this is obscured by the Windoze programming interface layered on top of it.
The software interrupt routine is a user mode procedure. In RSX and VMS there would call asynchronous system traps. So it is not an interrupt service routine.
Unix transitionally uses signal in this type of environent.
The question you link to is nonsensical. The operating system code path is usually nearly identical (ie, the same code for both synchronous and asynchronous I/O. The difference is that synchronous I/O blocks and unblocks the process.
An Interrupt Service Routine would be called with a device interrupt; not at the completion of I/O. A and B are both incorrect.
There are not architecture specific. You could see both signals or interrupts used on the same hardware.