如图:

一些说明:

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虚拟空间)的顶部而且向下增长。操作系统检测到对已分配的最低栈空间附近未映射的存储器访问时,会自动映射更多的页已满足栈的增长。

同时,新的共享库或者直接用malloc()分配的用户数据及其后代从用户空间底部向上增长。只要这些空间的总和不超过2GB,什么事都没有:除了最大型的服务器以外,这个限制基本不成问题。

5.512MB以内的存储器:可以通过kseg()经过高速缓存访问或者通过kseg1不用高速缓存访问。历史上,linux内核假定自己可以直接访问机器的全部屋里内存。对于用512MB或者更少物理内存范围的小MIPS系统,这是对的;在这种情况下,全部内存都可以在kseg0(用高速缓存)和kseg1(不用高速缓存)区访问。

6.512MB以上的高位存储器:现在512MB即使对于嵌入式系统也已经不够了,Linux有一个独立于硬件体系结构的高位存储器概念----要用特殊的、依赖于硬件体系结构的方式处理的物理存储器,对于32位linux/mips系统,512MB以上的屋里内存就是高位存储器。当我们要访问时,需要创建适当的地址转换数据项并且即使复制到TLB。

mips 内存 linux,MIPS 在linux中的内存映射相关推荐

  1. C++中运行一个程序的内存分配情况及qt中的内存管理机制

    一个由c/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)- 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈. 2.堆区(heap) - 一 ...

  2. Linux驱动学习--android中的内存管理机制ION(二)--ION的使用

    目录 一.引言 二.ION框架 ------> heap类型 ------> ion特性 三.ion的使用 ------> 基本数据结构 ------> 具体的使用 四.ion ...

  3. linux java 进程内存_linux – 在java进程中消耗内存的是什么?

    我们正在尝试在中等负载下研究 java进程的内存使用情况. PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 12663 test 20 0 ...

  4. 从内存溢出看Java 环境中的内存结构

    作为有个java程序员,我想大家对下面出现的这几个场景并不陌生,倍感亲切,深恶痛绝,抓心挠肝,一定会回过头来问为什么为什么为什么会这样,嘿嘿,让我们看一下我们日常在开发过程中接触内存溢出的异常: Ex ...

  5. new arraylist内存_如何避免内部类中的内存泄漏

    我先假设读者已经熟悉在Java代码中使用嵌套类的基础知识.在本文里,我将展示嵌套类的陷阱,内部类在JVM中引起内存泄漏和内存不足错误的地方.之所以会发生这种类型的内存泄漏,是因为内部类必须始终能够访问 ...

  6. java 内存堆和栈_java中堆内存与栈内存的知识点总结

    一.概述 在Java中,内存分为两种,一种是栈内存,另一种就是堆内存. 二.堆内存 1.什么是堆内存? 堆内存是Java内存中的一种,它的作用是用于存储Java中的对象和数组,当我们new一个对象或者 ...

  7. Linux驱动学习--android中的内存管理机制ION(一)--简单介绍

    目录 一.引言 二.ION的介绍及使用 ------> ION介绍 ------> ION的使用 ------> HEAP种类 三.接口分析 ------> 主要数据结构 -- ...

  8. Linux 在 TOP 命令中切换内存的显示单位

    2019独角兽企业重金招聘Python工程师标准>>> 顶部的内存信息可以在top运行时按E切换,每次切换转换率为1000,只是没有单位,切换的单位为 k,m,g,t,p: 底下的进 ...

  9. 获取计算机内存镜像文件,计算机取证中的内存镜像获取的研究与实现

    摘要: 随着计算机科学技术的迅猛发展和网络普及,以计算机信息系统为工具和j巳罪对象的各式新型j巳罪案件频繁发生,造成的巨大危害也越来越大.怎么可以最大程度地获取计算机j巳罪相关的计算机证据,将犯罪人员 ...

  10. 程序的内存分配----变量在可执行文件中的内存区分配

    一. 预备知识-程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分: 程序代码区(.text) -    存放函数体的二进制代码 文字常量区(.rodata) -   常量字符串就是 ...

最新文章

  1. WPF技术触屏上的应用系列(二): 嵌入百度地图、API调用及结合本地数据库在地图上进行自定义标点的实现...
  2. android cpp做成so库,Android增量更新(二)—制作合成文件so库
  3. JSTL 格式化 BigDecimal对象
  4. Arduino的光敏传感器和超声波测距传感器测试代码
  5. 周永亮 《我是职业人》
  6. Python list,tuple,dict,set高级变量常用方法
  7. 斐讯k1潘多拉专版固件_斐讯K1刷专版潘多拉固件以及教程(使用感受)
  8. rm ,rm -rf , rm -f,rm -r 以及rm 命令的其他参数命令
  9. Java Web学习总结(44)—— RESTful 架构和 RESTful API 设计总结
  10. JAVA 面向对象的一些基础理解
  11. UVA10602 Editor Nottoobad【贪心】
  12. 【基础教程】关于matlab GUI重命名的问题【739期】
  13. 拆机清灰重装系统数据恢复——心得汇总
  14. selenium+crop+chaojiying 之模拟登录超级鹰
  15. 【matlab 图像处理】图像锐化
  16. 一起学习Spring boot 2.1.X | 第十五篇:登陆拦截器
  17. python 打印乘法表各种形式_Python使用while循环花式打印乘法表
  18. AD生成BOM表_材料清单 (Bill of Material)
  19. 安诺伦代理iduron品牌——为学术研究和制药行业提供独特的糖胺聚糖产品系列
  20. 办公软件excel表格_推荐这个免费的Excel共享编辑办公软件,操作很灵活、功能很全...

热门文章

  1. IPSEC ×××实验六:ASA SSL ×××
  2. “tel.xls.exe病毒”解决方法
  3. 马克.扎克伯格的执行力
  4. MPLS 典型应用场景——Vecloud
  5. SDN的实现思路—Vecloud微云
  6. QoS策略及通过BGP传播—Vecloud微云
  7. vs2013编译apr时遇到的疑难杂症
  8. 关于Timer的用法,先简单记下,稍后编辑
  9. 理解 RXSwift:单元测试(四)
  10. python实现抓取必应图片设置桌面