网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
05月12日
漏签
0
天
linux吧
关注:
501,159
贴子:
2,567,696
看贴
图片
吧主推荐
视频
游戏
12
回复贴,共
1
页
<<返回linux吧
>0< 加载中...
求助,关于linux的线性地址问题
只看楼主
收藏
回复
嘿yoluis
------wx
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
最近看了很多网上关于linux内存管理的帖子,有的会说在linux系统下,逻辑地址就是线性地址,也就是说,所有的段起始线性地址是0x0000 0000,为什么会有这种说法,如果要是这样的话,那么在内核中定义的GDT,还有什么意义呢?求大神指教
嘿yoluis
------wx
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
自顶
2025-05-12 15:36:02
广告
fuhz2013
----x---
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
不光是linux,unix和windows都这样,每个用户进程的内存地址空间都是虚拟地址,操作系统负责把虚拟地址映射到硬件地址。
lypat2008
-------x
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
《深入理解计算机系统 [1] 》是2016年机械工业出版社的图书,作者是(美)布赖恩特(Bryant,R.E.)。
-Hork-
----x-wx
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
linux有paging和segment两种方式,linux偏向于paging
嘿yoluis
------wx
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
我想请问一下,因为我一直在看linux0.11版本的内核代码,在linux0.11中,段式存储管理应该还在使用,所以我会有如上的问题,是不是在之后的linux版本中,段式存储是不是被废弃了?
你看不到我的
-----rwx
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
gdt里的内核代码项、内核数据项、用户代码项、用户数据项都写的是0
嘿yoluis
------wx
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
还有就是,比如这一段代码,
其中的free_page_tables函数,他在处理的时候是这样的:
如果在执行do_exit的时候,不论是哪个任务,它的ldt基地址都是0x0,那么free_page_tables的入口第一个参数就是0,在执行第二个if语句的时候,必是发生错误啊,这是怎么一回事,为啥会提示我们试图去清缓冲区内存空间?
2025-05-12 15:30:02
广告
嘿yoluis
------wx
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
1
a126285
----xr-x
13
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
分段管理机制过时了,x86自己在升级到64位模式时,也基本弃用了(但不能完全关闭)。对跨各种硬件架构的linux来说,早就不很依赖分段管理机制,主要使用分页管理。故有各种简化处理,如base = 0
关于10F代码,我没看过0.11版的,看代码大意,ldt的base应该不是恒为0,既然有get_base,应有对应的set_base,看看set了什么。如果不是恒为0,也不和顶楼的描述矛盾,从0.11到某个里程碑版本(如2.4、2.6),以至于当前的版本,经历了太多改变。0.11版本也许很依赖分段机制也说不定
贴吧用户_0VEU8ee
-------x
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
linux 定义gdt 主要是兼容ai-32架构的cpu,实现分段机制
由于历史原因,intel独创了内存分段机制访问方式,为了向下兼容,intel保留了这种方式,
并且是强制性的,也就是mmu会强制使用分段机制,无法屏蔽,逻辑地址首先会通过分段机制的方式计算出线性地址,然后才是线性地址转换成物理地址
逻辑地址的段基地址被linux巧妙的整成了0,所以逻辑地址的偏移量就和计算出的线性地址一样,所以就有了逻辑地址就是线性地址
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示