Both definitions from Wikipedia:
In computer science, asynchronous I/O, or non-blocking I/O is a form of input/output processing that permits other processing to continue before the transmission has finished.
Signals are a limited form of inter-process communication used in Unix, Unix-like, and other POSIX-compliant operating systems. A signal is an asynchronous notification sent to a process or to a specific thread within the same process in order to notify it of an event that occurred.
I can not really understand what is meant by:
A signal is an asynchronous notification sent to a process
Does this mean, just like I/O, a signal is sent to a process and the process which sends the signal does not wait for the return value of the the process receiving the signal, and keeps going?
If a signal were to be synchronous, then would the sending process wait for the return value?
It seems to me that the statement you highlight from the Wikipedia article is too general to be helpful in figuring out what is happening "under the hood." In regard to implementation of callbacks, for example, take a look at this part of the Open Group specification:
pointer to a function
Catch signal.
On delivery of the signal, the receiving process is to execute the signal-catching function at the specified address. After returning from the signal-catching function, the receiving process shall resume execution at the point at which it was interrupted.