免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6908 | 回复: 17

[进程管理] 为什么Linux的0号进程永远不能被删除? [复制链接]

论坛徽章:
0
发表于 2014-07-01 15:43 |显示全部楼层

心里有个小小的疑惑,如标题描述,为什么在Linux中的0号进程永远不能被删除?或者说,Linux的0号进程在系统中屁事不干,为什么要始终保留它?

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
发表于 2014-07-01 15:58 |显示全部楼层
回复 1# date01
心里有个小小的疑惑,如标题描述,为什么在Linux中的0号进程永远不能被删除?或者说,Linux的0号进程在系统中屁事不干,为什么要始终保留它?


内核0号进程,就是swapper进程。当CPU无事可干的时候,就调度0号进程。
虽然说0号进程不干具体的工作,但是调度系统却离不开0号进程。否则系统中无需要运行的进程的时候,CPU让给谁呢?



   

论坛徽章:
0
发表于 2014-07-01 16:08 |显示全部楼层
瀚海书香 发表于 2014-07-01 15:58
回复 1# date01


这只是0号进程永远存在的结果,而并非让它永远存在的原因。如果按照这个思路,那我创建一个永久循环运行的进程,难道0号进程就可以被删除了么?显然是不可以的,所以这肯定不是0号进程不能被删除的原因所在

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
发表于 2014-07-01 16:26 |显示全部楼层
回复 3# date01
这只是0号进程永远存在的结果,而并非让它永远存在的原因。如果按照这个思路,那我创建一个永久循环运行的进程,难道0号进程就可以被删除了么?显然是不可以的,所以这肯定不是0号进程不能被删除的原因所在


这明显属于原因吧。因为没有0号进程,如果没有可执行的进程,你就没法调度了啊? 当然你可以修改现有的调度实现,来规避这个问题。但在目前的调度实现下,需要0号进程。
   

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
发表于 2014-07-01 16:54 |显示全部楼层
赞同,没有0,那idle的时候干啥呢~~

论坛徽章:
0
发表于 2014-07-01 16:58 |显示全部楼层
回复 4# 瀚海书香

这不是调度的问题,我认为这跟调度没关系呀。首先可以确定的是0号进程在任何状况下都不可以被删除。也就是说如果我运行一个不支持中断不支持调度的内核,那0号进程依然不可以被删除。所以这不是原因

   

论坛徽章:
0
发表于 2014-07-01 17:00 |显示全部楼层
回复 5# humjb_1983

这个逻辑展开来说就是,因为机器会IDLE,所以需要0号进程,可是在永不会IDLE的机器上,显然0号进程依然不可以被删除的啊


   

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
发表于 2014-07-01 17:28 |显示全部楼层
如果我没看错的话, Linux中并没有 PID 为 0 的进程可以列出来.
只有 PID 为 1 是init.

我不知道楼主几位说的是不是 pid 为 0 的进程, 如果不是, 那忽略我的问题.

论坛徽章:
0
发表于 2014-07-01 17:32 |显示全部楼层
回复 8# q1208c

我们讨论的正是pid为0的那个进程


   

论坛徽章:
0
发表于 2014-07-01 17:41 |显示全部楼层
其实内核完全去掉swapper进程是可以的,但是会增加实现的复杂度。
如果没有swapper进程,调度器在没有可运行的进程时就要做特殊处理,但是增加了一个什么都不干的
swapper进程后,情况就不同了,调度器可以完全不必关心没有可运行的进程的情况(因为swapper进程
总是可以运行的),Linux这么实现完全是设计的问题,不是技术的问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP