免费注册 查看新帖 |

Chinaunix

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

进程问题! [复制链接]

论坛徽章:
1
申猴
日期:2014-02-11 14:50:31
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-01 10:12 |只看该作者 |倒序浏览
5可用积分
一个进程有内核态和用户态,当通过系统调用的时候就陷入了内核态,当陷入内核态时,进程处于能被内核调度的形式,但假如一个进程只是运行用户的代码,没系统调用,那么该进程陷入用户态,这时进程还能被内核调度吗?内核是怎样调度的?

论坛徽章:
0
2 [报告]
发表于 2009-05-01 11:23 |只看该作者
用户进程是一直处于被内核调度的状态的。一个叫进程管理子系统的东西一直在管着它们。
一个大系统,往往有许多个进程在同时在运行(譬如有50个学生在上机学习C++,另有50个学生在学MySQL,那至少得有100多个用户进程)。没人管,那就乱了套了。

论坛徽章:
0
3 [报告]
发表于 2009-05-01 13:40 |只看该作者
你从哪听说“陷入内核态时,进程处于能被内核调度的形式”的?

论坛徽章:
0
4 [报告]
发表于 2009-05-01 13:53 |只看该作者

回复 #1 chenzhanyiczy 的帖子

通过系统调用, 进程由用户态进入内核态, 这算是进程主动进入内核态.
另外, 进程还可能被动进入内核态, 典型的情况就是中断.

如果一个进程只执行用户态的代码, 它不会主动进入内核态. 但是时钟中断问题存在的, 在每一个tick到来时, 内核代码得到运行, 于是检查当前这个进程是否应该被调度(比如时间片是否用完). 除此这外, 其他的中断也可能造成调度. 比如网卡中断, 网卡中断处理完成后, 某某socket可读. 有一个比当前进程优先级更高的进程正在等待这个socket可读, 于是内核调度这个进程运行.

就是这样, 虽然你不主动进入内核, 但是依然有办法治你.

[ 本帖最后由 kouu 于 2009-5-1 13:57 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP