网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数: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
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 12回复贴,共1页
<<返回linux吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示