pokud v obslužné rutině znovu povolíte přerušení (a většina interrupt handlerů právě toto dělá), je možné ji znovu přerušit. časově kritické části kódu jsou potom mezi spinlocky. vše je v rukou programátora. navíc filosofie "buď všichni nebo nikdo" činí věci krásně jednoduchými, žádné splx braindamage ;-)
btw, jsou architektury, které mají prioritu přerušení pevně danou. a na i386 existuje utilita, která ji umožňuje měnit.
Jedno preruseni muze na Linuxu prerusit jine. Ale zamaskovat se musi vsecky nebo zadne a to je ten problem. Treba pri psani na konzoli. Nikdo neplanuje, ze by s tim neco delal.
Mozna by stalo za to udelat aspon softwarove maskovani vsech preruseni --- misto "cli" tam dat "movl $1, interrupt_mask" a misto "sti" dat "movl $0, interrupt_mask;cmpl $0, interrupt_pending;jnz process_pending_interrupts" --- cli, sti, pushf a popf jsou na procesorech totiz hodne pomale a preruseni se v jadre zakazuji casto.