This question is purely academic because no-one uses MS-DOS now, but I still want to know why.
In some books and articles they said if you call a DOS interrupt during another one, it may cause a deadlock. That is why MS-DOS is not reentrant. For example, RESIDENT PROGRAMS, and another book, as described below:
A interrupt occurs B interrupt handling C DOS command starts D new interrupt occurs E interrupt handling F DOS COMMAND starts G DOS command finished H interrupt finished I return to the original interrupt handling J return to original DOS commandIt says, when I is finished, going to J, which is trying to return to the point the first DOS command was interrupted, but as all DOS variables and stack are changed by F and G, when you try to go back to the original interrupt (B), you actually go back to the second interrupt (E), and that causes the deadlock.
But as far as I'm concerned, an interrupt is just like a call. Save the current CS:IP, check the vector, find the interrupt handler, execute, return to where the interrupt occurred. Exactly like call.
It doesn't make sense how the deadlock is even possible.
So my question is what exactly may cause a deadlock? A specific example would be very appreciated.