Lessons Learned from 30 Years of Minix (2016)
wrycoder
2 years ago
5
2
https://cacm.acm.org/magazines/2016/3/198874-lessons-learned-from-30-years-of-minix/fulltext
wrycoder2 years ago
Tanenbaum: Robbert van Renesse ... said he heard somewhere that the 8088 generated interrupt 15 when it got hot. I told him there was nothing in the 8088 documentation about that, but he insisted he heard it somewhere. So I inserted code to catch interrupt 15. Within an hour I saw this message on the screen: "Hi. I am interrupt 15. You will never see this message." I immediately made the required patch to catch interrupt 15. After that MINIX worked flawlessly and was ready for release.

Lesson. Do not trust documentation blindly; it could be wrong.

Thirty years later the consequences of Van Renesse's offhand remark are enormous. If he had not mentioned interrupt 15, I would probably have eventually given up in despair. Without MINIX, it is inconceivable there would have been a Linux since Linus Torvalds learned about operating systems by studying the MINIX source code in minute detail and using it as a base to write Linux. Without Linux, there would not have been an Android since it is built on top of Linux. Without Android, the relative stock prices of Apple and Samsung might be quite different today.

Lesson. Listen to your students; they may know more than you.

theamk wrycoder2 years ago
Found an interesting discussion about interrupt 15: https://groups.google.com/g/alt.os.development/c/9qXsgge4b6w

Looks like spurious interrupts were a thing back then, and they could become more frequent with higher temperature.

> He said that Intel did not specify that interrupt 15 could be called but they probably did say in the 8259 datasheet that a spurious interrupt could be triggered. (I'm pretty sure they do in the 8259A datasheet.)

> This is probably the once popular spurious interrupt 15 (0xF) the default IRQ 7 handler. Apparently much activity (getting too hot?) on the 8259a (I once generated such spurious activity as a test by increasing the timer frequency - IRQ 0) causes a spurious interrupt on IRQ 7 (LPT1).