《操作系统原理linux篇》逻辑地址,线性地址 物理地址

Hogan_pei 2011-06-10 07:40:56
徐德民的《操作系统原理linux篇》里面涉及到的把整个虚拟存储空间的全局地址空间和局部地址空间利用分段机制分成大小不同的全局段和局部段。而逻辑地址转化成物理地址是通过第一级分段机制把逻辑地址空间分成若干个相互独立的线性地址空间。第二级由分页机制把线性地址空间进行分页,把线性地址转化成物理地址。而一个线性地址空间可以包含若干个段。80x86的虚拟地址空间中存在两种性质不同的段:全局段和局部段。
linux下虚拟存储,把虚拟空间通过分段转化成线性空间,又通过分页把线性空间转化成物理地址,而线性空间内又包含若干个全局段、局部段。这是怎么回事,全局段、局部段不是通过分段机制分出来的吗,而线性地址也是分段出来的,但是好像只分了一次段,怎么线性空间可以包含若干个全局段和局部段的, 段和线性空间应该是同一个等级啊,我觉得一个线性空间只能有一个段吧?

就是说 通过第一级 由分段机制把逻辑地址空间分成若干个相互独立的地址空间,它称为线性地址空间, 而在第一级的分段机制,也把逻辑地址空间分成了全局段和局部段,即把全局地址空间 分成最多达8K个全局段,局部地址空间分成最多达8K个局部段。 但随后又说,在每个独立的线性地址空间中都可以有若干个全局段和局部段?? 我觉一个线性地址空间就只能包含一个段,要么一个全局段,要么是一个局部段???
...全文
291 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
unbage1 2011-11-18
  • 打赏
  • 举报
回复
8086�У��ֲ��β���ֻ��һ����ÿ�����̶��оֲ��Σ��������Σ����ݶΣ���ջ�Σ���չ�εȣ���8086�ķֶλ����У�ȫ�ֶεĶα���˴�Ÿ���ȫ�ֶε���ʼ��ַ���������ÿ�����̵ľֲ��ζα�ĵ�ַ����һ�����̵ľֲ��ζα��ִ����������̵ĸ����ֲ��Σ�ÿ���ֲ�����ͨ����ҳ�����ҵ�һ������洢��Ԫ���ڵ������ַ��
���������ֶλ��ơ�
��linux�Ľ��̵ľֲ���ֻ�д���κ����ݶΣ�����linuxֱ�ӽ�������̵������ֲ�����ʼ��ַ�����ȫ�ֶζα��У��м�����˲�ֲ��ζα���衣����linux��һ��������һ���Զ������������ַ����ͨ��ȫ�ֶα�ֱ���ҵ����ݶε���ʼ��ַ�������ݶε����Ե�ַ����ͨ����ҳ�����ҵ������ַ��
unbage1 2011-11-18
  • 打赏
  • 举报
回复
8086�У��ֲ��β���ֻ��һ����ÿ�����̶��оֲ��Σ��������Σ����ݶΣ���ջ�Σ���չ�εȣ���8086�ķֶλ����У�ȫ�ֶεĶα���˴�Ÿ���ȫ�ֶε���ʼ��ַ���������ÿ�����̵ľֲ��ζα�ĵ�ַ����һ�����̵ľֲ��ζα��ִ����������̵ĸ����ֲ��Σ�ÿ���ֲ�����ͨ����ҳ�����ҵ�һ������洢��Ԫ���ڵ������ַ�� ���������ֶλ��ơ� ��linux�Ľ��̵ľֲ���ֻ�д���κ����ݶΣ�����linuxֱ�ӽ�������̵������ֲ�����ʼ��ַ�����ȫ�ֶζα��У��м�����˲�ֲ��ζα���衣����linux��һ��������һ���Զ������������ַ����ͨ��ȫ�ֶα�ֱ���ҵ����ݶε���ʼ��ַ�������ݶε����Ե�ַ����ͨ����ҳ�����ҵ������ַ��
xiaofen8 2011-10-27
  • 打赏
  • 举报
回复
我上面说错了,实模式(dos模式)和保护模式(分段或分页)是可选的。x86的分段是15为一段总共69904段,即可以访问1m的内存
thunder__god 2011-07-12
  • 打赏
  • 举报
回复
路过,看看
海枫 2011-07-09
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 hero1985 的回复:]
引用 8 楼 wyjq395 的回复:

随便看了一下,感觉写书的作者是不是搞错了,自己都没搞清楚就瞎扯
把物理地址,线性地址怎么和分段分页混在一起谈了,而且还要拉扯上“全局地址空间和局部地址空间”

物理地址和逻辑地址的区分是因为,x86地址总线只有20位,不能表示所有的地址,所以采用了偏移地址加段地址的方式来计算,这些东西别管那么多,有个鸟用,编程的时候碰到的地址都是指逻辑地址。
……
[/Quote]

地址总线20位是实模式大行其道的年代,当前还未有保护模式呢。实模式使用段地址<< 4 +段内地址来形式线性地址的。 而在保护模式下,intel为了兼容老的段寄存器,所以使用段寄段作为选择子。不过linux kernel采用方法跳过了这一复杂的结构。
wyjq395 2011-07-09
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 hero1985 的回复:]
我觉得你没搞清楚。。。
谁给你说的地址总线只有20位
[/Quote]

我说过我搞清楚了吗?
谁给你说的地址总线一开始就超过20位?说给你说的x86没用过地址总线为20位的年代?
如果不是因为16位机不好表示20位地址,而采用段地址偏移4位+偏移地址表示,导致了物理地址和逻辑地址的区分,那么请问您为什么会出现物理地址和逻辑地址的区分?
你以为现在64位机都出来了,作者讲的就是64位机的事情?ri
hero1985 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wyjq395 的回复:]

随便看了一下,感觉写书的作者是不是搞错了,自己都没搞清楚就瞎扯
把物理地址,线性地址怎么和分段分页混在一起谈了,而且还要拉扯上“全局地址空间和局部地址空间”

物理地址和逻辑地址的区分是因为,x86地址总线只有20位,不能表示所有的地址,所以采用了偏移地址加段地址的方式来计算,这些东西别管那么多,有个鸟用,编程的时候碰到的地址都是指逻辑地址。

linux内存分段或者分页,或者段页式管……
[/Quote]

我觉得你没搞清楚。。。
谁给你说的地址总线只有20位
luomoweilan 2011-07-03
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 cenziboy 的回复:]

弱弱地悄悄的问下

什么是 ULK ?
[/Quote]
《深入理解Linux内核》
nehc 2011-07-02
  • 打赏
  • 举报
回复
弱弱地悄悄的问下

什么是 ULK ?
gangyewei 2011-07-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lsshao 的回复:]

x86平台上linux将逻辑地址和线程地址等同;因此在x86上,你可以直接认为只有虚地址和物理地址
[/Quote]

线性地址。。。
gwf2424 2011-06-29
  • 打赏
  • 举报
回复
T T高手都用linux啊 我要好好学习了
xiaofen8 2011-06-29
  • 打赏
  • 举报
回复
说一下我的理解吧,linux的分页是建立在分段上的,所以先分段,然后各个进程就有了独立的地址空间,然后进程自己在分页管理,用二级页表
wyjq395 2011-06-21
  • 打赏
  • 举报
回复
随便看了一下,感觉写书的作者是不是搞错了,自己都没搞清楚就瞎扯
把物理地址,线性地址怎么和分段分页混在一起谈了,而且还要拉扯上“全局地址空间和局部地址空间”

物理地址和逻辑地址的区分是因为,x86地址总线只有20位,不能表示所有的地址,所以采用了偏移地址加段地址的方式来计算,这些东西别管那么多,有个鸟用,编程的时候碰到的地址都是指逻辑地址。

linux内存分段或者分页,或者段页式管理是用于内存管理。

全局地址空间和局部地址空间,应该是程序设计的事情。

就如4楼大哥说的一样,最好看老外的书
Hogan_pei 2011-06-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lsshao 的回复:]

x86平台上linux将逻辑地址和线程地址等同;因此在x86上,你可以直接认为只有虚地址和物理地址
[/Quote]

现在也觉得,不过我只是先了解一下基本概念,然后再看基于内核代码来解读linux内核
Hogan_pei 2011-06-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lsshao 的回复:]

x86平台上linux将逻辑地址和线程地址等同;因此在x86上,你可以直接认为只有虚地址和物理地址
[/Quote]

哦,原来这样啊
Kyph 2011-06-15
  • 打赏
  • 举报
回复
x86平台上linux将逻辑地址和线程地址等同;因此在x86上,你可以直接认为只有虚地址和物理地址
Wenxy1 2011-06-15
  • 打赏
  • 举报
回复
看ULK, 太经典的书。

国产书,大部分比较差。
wickyboy 2011-06-15
  • 打赏
  • 举报
回复
不知道,分段是INTEL中推荐的机制,但Linux中主要是通过分页机制来实现对虚拟内存的管理的。

什么TSS 之类的主要是为了符合INTEL CPU中的限制,全局段和局部段感觉和线性地址空间是两个不同的概念

Hogan_pei 2011-06-12
  • 打赏
  • 举报
回复
晕啦,怎么没高手解答了?
WangBoJing 2011-06-11
  • 打赏
  • 举报
回复
顶一个

4,438

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧