免费注册 查看新帖 |

Chinaunix

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

内核理解 [复制链接]

论坛徽章:
1
申猴
日期:2014-02-11 14:50:31
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-09 23:50 |只看该作者 |倒序浏览
5可用积分
赵炯说的:

对于Linux 0.12系统,内核设置全局描述符表GDT中的段描述符项数最大为256,其中2项空闲、2项系统使用,每个进程使用两项。因此,此时系统可以最多容纳(256-4)/2 =126 个任务,并且虚拟地址的范围是((256-4)/2)×64MB 约等于8GB。但0.12内核中人工定义最大任务数NR_TASKS = 64个,每个任务逻辑地址范围是64MB,并且各个任务在线性地址空间中的起始位置是(任务号)×64MB。因此全部任务所使用的线性地址空间范围是64MB×64 =4GB,如图5-10所示。图中示出了当系统具有4个任务时的情况。内核代码段和数据段被映射到线性地址空间的开始16MB部分,并且代码和数据段都映射到同一个区域,完全互相重叠。而第1个任务(任务0)是由内核“人工”启动运行的,其代码和数据包含在内核代码和数据中,因此该任务所占用的线性地址空间范围比较特殊。任务0的代码段和数据段的长度是从线性地址0开始的640KB范围,其代码和数据段也完全重叠,并且与内核代码段和数据段有重叠的部分。实际上,Linux 0.12中所有任务的指令空间I(Instruction)和数据空间D(Data)都合用一块内存,即一个进程的所有代码、数据和堆栈部分都处于同一内存段中,也即是I&D不分离的一种使用方式。

按这样的说法,那么系统最多只有126个进程?

论坛徽章:
0
2 [报告]
发表于 2009-10-10 00:51 |只看该作者
是的。我觉得对于Linux 0.12系统,系统最多只有126个进程。有啥好奇怪的?0.12多老啊,那时126个进程估计也够用了。

论坛徽章:
1
申猴
日期:2014-02-11 14:50:31
3 [报告]
发表于 2009-10-10 09:49 |只看该作者
Linux 0.12是哪个年代的内核?

”每个任务逻辑地址范围是64MB“ 感觉表达的有错误,按理来说每个任务的逻辑地址应该是4G啊,怎么会只有64MB?
而且按赵炯书上说的,好像所有的任务都公用一个LDT表,怎么不是每个任务有自己的LDT表吗?

论坛徽章:
0
4 [报告]
发表于 2009-11-27 19:45 |只看该作者
帮顶!!!!

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
5 [报告]
发表于 2009-11-27 21:04 |只看该作者

回复 #1 chenzhanyiczy 的帖子

没看过这么早的代码
它家的系统中进程的地址空间应该是已经限定好了的
所以进程数量也就有所限制了
LZ可以整个这样的系统,fork一些进程看看结果怎样

论坛徽章:
0
6 [报告]
发表于 2009-11-27 23:43 |只看该作者
原帖由 chenzhanyiczy 于 2009-10-10 09:49 发表
Linux 0.12是哪个年代的内核?

”每个任务逻辑地址范围是64MB“ 感觉表达的有错误,按理来说每个任务的逻辑地址应该是4G啊,怎么会只有64MB?
而且按赵炯书上说的,好像所有的任务都公用一个LDT表,怎么不是 ...


每个任务最大是4G逻辑地址~ 但是如果每个任务都用4G逻辑地址的话~ 呢么4G的线性地址就会重复~

呢个时候还没有这么复杂的内核~ 干脆每个任务64MB的线性地址,把线性地址平分掉算了~ 所以每个任务是对应的64MB的逻辑地址~

0.12不清楚~ 0.11是每个任务一个LDT的~ = 3=

0.12好像是93年左右?~ 记不清楚了~

[ 本帖最后由 superfight 于 2009-11-27 23:47 编辑 ]

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
7 [报告]
发表于 2009-11-28 21:39 |只看该作者
原帖由 superfight 于 2009-11-27 23:43 发表


每个任务最大是4G逻辑地址~ 但是如果每个任务都用4G逻辑地址的话~ 呢么4G的线性地址就会重复~

呢个时候还没有这么复杂的内核~ 干脆每个任务64MB的线性地址,把线性地址平分掉算了~ 所以每个任务是对应的6 ...



胡扯,线性地址就CPU来说(当时的CPU也是)和系统无关的,只对来进程有意义,也就是分页内存

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
8 [报告]
发表于 2009-11-28 21:42 |只看该作者
原帖由 folklore 于 2009-11-28 21:39 发表



胡扯,线性地址就CPU来说(当时的CPU也是)和系统无关的,只对来进程有意义,也就是分页内存



此外,LDT(LIst)的确只有一个,但其中的表单(Item)有很多个就可以了~~

我听说Linux只用一个LDT,真是奇怪,因为任务Switch没有CPU支持是不可以的,所以,必然有多个TSS。看了点内核,MS的确是大侠们的误解。

论坛徽章:
0
9 [报告]
发表于 2009-11-29 13:26 |只看该作者
原帖由 folklore 于 2009-11-28 21:39 发表

胡扯,线性地址就CPU来说(当时的CPU也是)和系统无关的,只对来进程有意义,也就是分页内存


请大侠指点一下我理解不正确的地方~

PS:= =a 你这段话我不是很理解~

是不是说线性地址是对于CPU和进程的分页内存来说的~ 对于操作系统是没有意义的~?

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
10 [报告]
发表于 2009-11-29 13:51 |只看该作者
毕竟是早期版本,内核也比较弱
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP