免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-10 11:17 |只看该作者 |倒序浏览
操作系统也是一个应用程序,只不过这个比较特殊。在单CPU的情况下任意时刻只有一个进程获得CPU,那如果某个应用程序获得了CPU时间,那其他的都要暂停,这时候操作系统处于什么状态?也处于暂停? 请高手解答心中的疑惑!

论坛徽章:
0
2 [报告]
发表于 2012-05-10 12:03 |只看该作者
这个要看对进程的解释了,我想可能有OS里设计成进程存在的。

但是大部分操作系统都是设计成server式,或者说OS像个库一样,它的代码渗透在每一个进程里。

论坛徽章:
0
3 [报告]
发表于 2012-05-10 13:32 |只看该作者
什么是暂停?应用程序暂停的时候他还拥有CPU么?还继续运行么?那么操作系统呢?如果操作系统确实有暂停状态,我觉得应该是虚拟机上的操作系统。

论坛徽章:
0
4 [报告]
发表于 2012-05-10 13:41 |只看该作者
灌水菜鸟 发表于 2012-05-10 13:32
什么是暂停?应用程序暂停的时候他还拥有CPU么?还继续运行么?那么操作系统呢?如果操作系统确实有暂停状态 ...


暂停也就是挂起的意思,挂起之后也就让出了cpu

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

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

论坛徽章:
0
6 [报告]
发表于 2012-05-11 11:39 |只看该作者
kouu 发表于 2012-05-10 14:45
当某个进程在CPU上运行时,你可以想象这时内核处于挂起状态。
它什么时候会再被激活呢?如果进程使用了系统 ...


非常精辟!!!

论坛徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
7 [报告]
发表于 2012-05-13 13:15 |只看该作者
回复 1# cnppk
分两种:
monolithic os:  操作系统有thread,能独立于应用程序运行,如linux, wince
non monolithic os: 操作系统只是一个库函数,必须连接到应用程序里形成一个执行文件然后运行。如vxworks, osek
即使操作系统能独立运行,如果调度程序选择了运行某个用户进程,内核线程就处于等待状态。如果某一段时间里没有任何进程运行,一般操作系统都提供一个idle进程来消耗剩余的cpu时间。idle进程基本上什么事情都不做,等待其他进程来运行。

   

论坛徽章:
0
8 [报告]
发表于 2012-05-14 14:54 |只看该作者
回复 4# cnppk


    如果你把操作系统和应用程序都当作普通的,平等的指令流来看待,操作系统确实会经常“暂停“,比如,处于用户态的时候。但是如果把操作系统看作运行于其上的所有应用的根基的话,操作系统永远处在激活状态,永远不会停摆。

论坛徽章:
22
丑牛
日期:2014-08-15 14:32:0015-16赛季CBA联赛之同曦
日期:2017-12-14 15:28:14黑曼巴
日期:2017-08-10 08:14:342017金鸡报晓
日期:2017-02-08 10:39:42黑曼巴
日期:2016-11-15 15:48:38CU十四周年纪念徽章
日期:2016-11-09 13:19:1015-16赛季CBA联赛之同曦
日期:2016-04-08 18:00:03平安夜徽章
日期:2015-12-26 00:06:30程序设计版块每日发帖之星
日期:2015-12-03 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-09 06:20:002015亚冠之吉达阿赫利
日期:2015-07-03 08:39:42
9 [报告]
发表于 2012-05-14 15:19 |只看该作者
把指令流当做操作系统运行的单位,就会发现cpu停不下来了。

论坛徽章:
0
10 [报告]
发表于 2012-05-14 15:31 |只看该作者
amarant 发表于 2012-05-14 15:19
把指令流当做操作系统运行的单位,就会发现cpu停不下来了。


版主?!?!?PF啊PF,呵呵。不过,何出此言?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP