Operating system 操作系统内核是基于事件的吗?内核是多线程的还是多进程的?
最近我读了一些关于操作系统内核的书。我知道当一个事件(比如时钟滴答声)发生时,它会触发一个中断,然后是内核指定的例程响应 因此,我的问题是: 1) 当一个中断被触发并且其对应的内核例程仍在运行时,由于某种原因,另一个中断被触发。内核将如何响应?在处理第一次中断时,它会屏蔽第二次中断吗?或者第一个中断的相应例程被第二个中断了?如果第二个条件为真,内核如何确保例程“可重入” 2) 内核是多线程的还是多进程的?我的意思是,当事情像第一个问题那样发展时,内核将使用CPU的额外内核来处理中断?如果是这样,内核如何确保一切正常工作,就像在单核CPU上运行一样 1) 如果一个中断被触发,而其相应的内核例程仍在运行,那么出于某种原因会触发另一个中断;内核将如何响应?在处理第一次中断时,它会屏蔽第二次中断吗?或者第一个中断的相应例程被第二个中断了 对,;不同的操作系统可以:Operating system 操作系统内核是基于事件的吗?内核是多线程的还是多进程的?,operating-system,kernel,Operating System,Kernel,最近我读了一些关于操作系统内核的书。我知道当一个事件(比如时钟滴答声)发生时,它会触发一个中断,然后是内核指定的例程响应 因此,我的问题是: 1) 当一个中断被触发并且其对应的内核例程仍在运行时,由于某种原因,另一个中断被触发。内核将如何响应?在处理第一次中断时,它会屏蔽第二次中断吗?或者第一个中断的相应例程被第二个中断了?如果第二个条件为真,内核如何确保例程“可重入” 2) 内核是多线程的还是多进程的?我的意思是,当事情像第一个问题那样发展时,内核将使用CPU的额外内核来处理中断?如果是这样,
- 在处理IRQ时屏蔽其他IRQ
- 允许不同的IRQ嵌套(相互中断)
- 允许所有IRQ嵌套(包括中断自身的同一IRQ)
- 屏蔽一些IRQ并允许其他IRQ嵌套
- 不得使用多个IRQ(例如,仅使用计时器IRQ,并轮询其他所有IRQ)
如果内核确实使用其他内核来处理中断;它还将确保一切正常工作。“某物”可能是一个锁系统,或事务内存,或无锁/无块算法,或“无共享”方法,或这些东西的组合。单个问题帖子中的问题太多。此外,每个特定的操作系统内核都有自己处理中断和多线程/多进程方面的方法。一般来说,询问操作系统内核的这些方面有一点道理:每个答案都是“视情况而定”。是的。。操作系统设计者/开发者/测试者/调试器确保所有这些都能在目标硬件上工作。这就是为什么操作系统开发非常重要。