Chinaunix

标题: 段式管理最多支持4096个进程吗? [打印本页]

作者: wLiu2007    时间: 2014-09-01 16:10
标题: 段式管理最多支持4096个进程吗?
自己关于分段的理解,帮忙看看是否正确;

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,不用每次去读外存;

作者: humjb_1983    时间: 2014-09-02 14:00
差不多~,呵呵~
另外,虚拟地址和物理地址间的转换效率还依赖于TLB。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2