linux为什么要禁止内核抢占,较早的Linux内核无法抢占的原因是什么?

抢占式内核仅意味着没有大内核锁。

从一开始,Linux就具有抢占式多任务处理(即用户代码是抢占式的)(据我所知,Linus上载到funet ftp服务器上的第一个Linux 0.0.1早已是抢先式多任务处理)。例如,如果执行了多个压缩或编译过程,则它们从第一刻起便并行执行。

与当时-广泛使用的Win31相反。在Win31上,如果任务是从“内核”获得CPU的,则默认情况下,它有责任确定何时将控制权交还给OS(或其他任务)。如果某个进程对此功能没有特殊支持(需要额外的编程工作),则在执行该功能时,所有其他任务都将被挂起。甚至集成到Win31中的大多数基本应用程序都可以正常工作。

抢占式多任务处理意味着任务无法根据需要分配CPU。相反,如果它们的时隙到期,则内核会将CPU移开。因此,在抢占式操作系统中,编写错误或运行不正常的进程不能冻结OS,也不能避免其他进程运行。Linux总是抢占用户空间进程。

Big Kernel Lock表示在某些情况下,在内核空间内,仍然可能会有一些锁,从而阻止其他进程运行受保护的代码。例如,您不能同时挂载多个文件系统-如果您提供了多个挂载命令,它们仍将连续执行,因为挂载需要分配大内核锁。

要使内核具有抢占性,就必须消除此大内核锁定,即使挂载和任何其他任务能够同时运行。这是一项艰巨的工作。

从历史上看,这通过增加对SMP(多CPU支持)的支持变得非常紧迫。第一次有真正的多CPU主板。后来将多个CPU(“核心”)集成到一个芯片中,今天真正的多CPU主板已经很少了(它们通常在昂贵的服务器系统中)。真正真正的单核系统(只有一个cpu,只有一个核)也很少见。

因此,您的问题的答案不是“什么是非抢占性的原因”,因为它始终是抢占性的。真正的问题是,是什么使抢先式内核执行真正必要。答案是这样的:多CPU多核系统的比例在增加。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值