A process can receive two kinds of signals classified based on the source and reason.
- Synchronous are the one that are generated by illegal memory access or division by zero.
- Asynchronous are the one that are generated by another process like SIGKILL and etc.
In the both cases, the signal must be handled either by custom or default handler. For the synchronous it is crashing the running process, and in asynchronous, it is using the default routine whatsoever is defined in the system.
Here is the list of questions I have in my mind right now:
- What does exactly Synchronous and Asynchronous means here?
- In the synchronous, who is waiting for the receiver process to respond?
- If both of them are need to be handled, then in my opinion, only priority of the execution would be the difference between these two. Does that mean synchronous signals have more priority?
- Can we call synchronous signals as exceptions? For example we have ZeroDivisionError or FileNotFoundError and all.
Ref: Signal Handling from Galvin OS book