首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >操作系统内核是基于事件的吗?内核是多线程的还是多进程的?

操作系统内核是基于事件的吗?内核是多线程的还是多进程的?
EN

Stack Overflow用户
提问于 2019-11-26 10:50:35
回答 1查看 49关注 0票数 0

最近我读过一些关于os内核的书。我知道,当一个事件(如时钟滴答)发生时,它将触发中断,然后触发内核指定的例程响应。

因此,我的问题是:1)当中断被触发并相应的内核例程仍在运行时,由于某种原因又触发了另一个中断。内核将如何响应?当它处理第一次中断时,它会掩盖第二次中断吗?还是第一个中断的相应例程被第二个中断中断了?如果第二个条件为真,内核如何确保例程“重新进入”?

2)内核是多线程的还是多进程的?我的意思是,当事情像第一个问题一样,内核将使用CPU的额外核心来处理中断?如果是这样的话,内核如何确保一切正常运行,就像运行在单核CPU上一样?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-26 11:21:27

(

1)如果中断被触发,其相应的内核例程仍在运行,那么另一个中断将因某种原因而触发;内核将如何响应?当它处理第一次中断时,它会掩盖第二次中断吗?还是第一个中断的相应例程被第二个中断中断了?

是的;不同的操作系统可以:

  • 屏蔽其他IRQ在处理IRQ时允许不同的IRQ嵌套(互相中断)
  • 允许所有IRQ嵌套(包括相同的IRQ中断自身)
  • 掩蔽一些IRQ,允许其他IRQ嵌套

H 111不使用多个IRQ(例如只使用计时器IRQ,轮询其他一切)H 212F 213

如果第二个条件为真,内核如何确保例程是“可重入的”?

如果OS设计人员决定(部分或全部)IRQ可能会打断其他人,那么他们将需要弄清楚在任何允许的情况下,重入是如何工作的。这可以是“不做会导致问题的事情”(例如,IRQ处理程序只向稍后执行实际工作的任务发送通知),也可以是进一步的限制(例如,暂时获取一个锁,防止IRQ处理程序中可能导致重入问题的部分进一步执行IRQ,而不是其他不需要重新进入的部分)。

2)内核是多线程还是多进程?我的意思是,当事情像第一个问题一样,内核将使用CPU的额外核心来处理中断?

是的;不同的操作系统可以使用多线程或多处理(或两者兼而有之);也可以使用或不使用其他内核来处理中断。

如果是

,那么内核如何确保一切正常工作,就像运行在单核CPU上一样?

如果内核确实使用其他内核来处理中断,那么它也会做一些事情来确保一切正常工作。“某样东西”可以是由锁、事务内存、无锁/无块算法组成的系统,也可以是“无共享”的方法,或者是这些东西的组合。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59049257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档