X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=doc%2Ftour.texi;h=c1371cfde5760df3df4129a4f5eec6b0c4d3e66e;hb=2d954fd86cdbdfbbc99429d7ab4248c2e872e151;hp=f4760ec1ffd5a4cd76a2d1830814ead39e5f1a2c;hpb=e6bcc8943f010111d8591d042814b58cf910223b;p=pintos-anon diff --git a/doc/tour.texi b/doc/tour.texi index f4760ec..c1371cf 100644 --- a/doc/tour.texi +++ b/doc/tour.texi @@ -1093,9 +1093,9 @@ Second, an interrupt handler must not call any function that can sleep, which rules out @func{thread_yield}, @func{lock_acquire}, and many others. This is because external interrupts use space on the stack of the kernel thread that was running at the time the interrupt -occurred. If the interrupt handler tried to sleep and that thread -resumed, then the two uses of the single stack would interfere, which -cannot be allowed. +occurred. If the interrupt handler slept, it would effectively put that +thread to sleep too until the interrupt handler resumed control and +returned. Because an external interrupt runs with interrupts disabled, it effectively monopolizes the machine and delays all other activities.