免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3453 | 回复: 0
打印 上一主题 下一主题

[内核入门] 关于操作系统的疑惑? [复制链接]

论坛徽章:
0
1 [报告]
发表于 2012-05-10 14:45 |显示全部楼层
当某个进程在CPU上运行时,你可以想象这时内核处于挂起状态。
它什么时候会再被激活呢?如果进程使用了系统调用、或者CPU来了中断/异常,内核就被激活,然后开始干活。
如果进程没有使用系统调用,CPU也没中断/异常,是不是意味着内核永远不能激活,永远对机器失去控制了呢?答案是:yes。
不过内核在初始化时会设置时钟芯片,让它周期性地发出时钟中断。所以最坏情况下内核在每个时钟周期会被激活一次,以施展它对机器的掌控。

不过,内核的“挂起”和进程的挂起,实质是不一样的。进程这个概念本身是由内核抽象出来的,进程的激活、挂起,都是由内核来操控的。
而内核的“激活”与“挂起”,则需要CPU来提供支持。CPU需要提供这样的途径,使得当中断/异常到来、或者程序使用系统调用指令时,CPU完成特权级别的切换,然后跳到事先安排好的内核代码上去执行。相当于将内核“激活”。内核的“激活”是被动的,不过由于时钟中断是由内核来配置的,也可以认为内核在被动“激活”之外,还会周期性的主动“激活”自己。
反之,内核完成需要做的事情之后,可以使用“退出”指令,让CPU将特权级别切换回去,然后跳到应用程序的代码去执行。这相当于内核“挂起”。显然,内核的“挂起”是主动的。(内核“挂起”之后,CPU回到哪里去执行?这也是由内核来操控的。可能并不会回到“激活”内核之前所执行的代码上,因为内核可以进行进程切换。)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP