免费注册 查看新帖 |

Chinaunix

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

[内存管理] 段式管理最多支持4096个进程吗? [复制链接]

论坛徽章:
2
射手座
日期:2014-09-03 00:18:022015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-09-01 16:10 |只看该作者 |倒序浏览
自己关于分段的理解,帮忙看看是否正确;

1,段式管理是x86平台才涉及到的概念,涉及到逻辑地址-》线性地址-》物理地址的转换;
对于arm这样的处理器来说,应该没有分段的概念,也没有gdt这些东西吧,只有页表相关的东西,地址概念也只有VA和PA的概念;

2,网上看到一些资料:段式管理系统支持的最大进程数只能有4096个,因为gdtr中段选择子index只有13个bit,所以GDT最多只能有2^13=8192个段,一个进程需要占用2个段,所以最多只能8192/2=4096个任务;
对于这个观点在针对286年代应该是正确的,因为当时还没有分页机制,转换出来线性地址就是物理地址,所以不同任务之间的物理地址隔离就只有靠不同的段来区分,任务切换就只能更改对应的CS和DS;因此每个任务在GDT中需要占用2个段,所以这里也就限制了系统最大支持4096个任务;

但是到了386引入了分页机制以后,这个观点就是错误的了,因为引入分页机制以后,分段机制已经是形同虚设,所有的任务都公用1个CS和DS,转换出来的线性地址都是一样的,任务之间隔离靠页表来完成,所以任务切换只需要更改页表即可,CS和DS不用变;所以系统支持测最大进程数与GDT支持段个数已经没有任何关系了;

3,x86平台上目前应该都是段页式的管理方式吧,虽然分段形同虚设,但是该走的流程还是需要走吧,
逻辑地址-》线性地址: 要读1次GDT表;
线性地址-》物理地址: 根据采用页表级数,如果是3级页表,就需要访问3次内存吧;
这样访问一个地址,要先读4次内存,不知道理解是否这样,还好有cache,不用每次去读外存;

论坛徽章:
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
2 [报告]
发表于 2014-09-02 14:00 |只看该作者
差不多~,呵呵~
另外,虚拟地址和物理地址间的转换效率还依赖于TLB。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP