MIPS 在linux中的内存映射

如图:




一些说明:

1.内核从什么地方开始运行:MIPS Linux内核的代码构建为在kseg0区运行;虚拟地址从0x80000000向上。这个范围的地址仅仅是一个到物理内存低512MB的窗口,无需TLB管理。

2.异常入口点:大多数MIPS CPU中,这都是由硬件布线固化到kseg0底部附近。最新的CPU可以提供EBase寄存器,对异常入口重新定位。主要是让多个共享内存的CPU能用不同的异常处理程序而不用费力去作特殊的存储器译码。在linux内核中,就算有多个CPU也都运行同一个异常处理代码,所以这个特性在linux中不大可能用到。

3.用户程序从什么地方开始运行:MIPS Linux应用程序(运行与低特权级的用户态)虚拟地址从0到0x7FFF FFFF。该区的地址在用户态可以访问,要经过TLB地址转换。

应用程序的主程序构建时自接近0的地址开始运行。不会真为零-----从虚拟0地址开始的一两页不做地址映射,这样企图使用空指针就会被当作内存管理错误捕获。应用程序的库函数部分,在加载或者更晚的时候递增加载到用户空间。这样做可以是因为库函数构建为位置无关类型,可以根据实际被加载的地址空间自动调整。

4.用户堆和栈:应用程序的栈初始设置到用户可以访问的空间(约2G虚拟空间)的顶部而且向下增长。操作系统检测到对已分配的最低栈空间附近未映射的存储器访问时,会自动映射更多的页已满足栈的增长。

同时,新的共享库或者直接用m

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值