当前位置:  技术问答>linux和unix

LINUX内存管理疑问,求高手解答!!

    来源: 互联网  发布时间:2017-05-05

    本文导语:  用户程序经过汇编编译后形成二进制指令和数据,运行之前,这些指令和数据所存放的地点是外部FLASH或硬盘,运行后,代码被调入内存。而CPU在执行代码的时候需要取线性地址,然后根据线性地址找到指令或数据,...

用户程序经过汇编编译后形成二进制指令和数据,运行之前,这些指令和数据所存放的地点是外部FLASH或硬盘,运行后,代码被调入内存。而CPU在执行代码的时候需要取线性地址,然后根据线性地址找到指令或数据,那么这些线性地址CPU从哪取?难道是从硬盘里取?还是内存有这些线性地址的拷备?求解答,被这问题困扰了好久了!

|
个人理解,程序启动,相关的数据和指令复制到内存。寻址:CPU->MMU->内存。MMU是CPU一部分。如果没有MMU或没启用,CPU直接寻址,也就所直接操作内存的物理地址,如果CPU启用了MMU,CPU发出的内存地址将被MMU截获,MMU将CPU发出的“虚拟地址”转换为内存的物理地址,然后操作内存。如果把CPU透明化,可以理解为CPU直接操作物理地址,其中经过”程序->内核->CPU(MMU)->内存“。我理解的CPU获取的内存地址为经过转换之后的物理地址,操作内存时也是直接操作内存物理地址。要是你想了解如何管理或映射内存的,可以看下内存管理方面的东西。

|
这个是内核和MMU共同转换的得来的, cpu仅仅会看到线性地址, 然后去TLB中查找, 如果TLB命中, 那么就是用已经缓存的地址, 如果没有, 那么会产生中断,MMU和内核共同将物理地址转换成线性地址然后传递给CPU。

具体细节请参考《深入理解linux内核》第二章

|

lz学习过汇编吗?要想理解这个问题,去看一下汇编吧,要不然是理解不透的。
这些地址应该说都是程序定的,比如kernel的起始地址是0xc0000000,在uboot里你要指定cpu跳到这个地址去执行,这样子才能开始运行kernel.

|
肯定是内存啊。运行的时候就会吧程序拷贝到内存的。

|
程序都在内存里。

|
线性地址和物理地址的转换是另外一个问题了。具体怎么转换的我目前还没搞懂。
cpu取指令是从线性地址取的,不过有的时候(比如说没有MMU的时候)线性地址和物理地址是一样的。

    
 
 

您可能感兴趣的文章:

  • 虚拟机里linux系统下输入l,k,m三个字母不能正常显示,求解答
  • Linux创建进程的问题,请高手帮忙解答一下?
  • linux 中 困惑的地方,求解答。
  • linux下的mib读取问题?大虾帮解答下
  • linux 毕业设计求解答
  • 操作系统 iis7站长之家
  • SSH 无法登陆LINUX,什么问题?帮忙解答下啊
  • 安装linux~~~~有点棘手,请给解答
  • 请高手解答linux无法启动的问题
  • 嵌入式Linux使用外挂Vsftpd不能正常使用, 请高手解答,谢谢。
  • 几个linux问题,求高手解答
  • linux下的swap分区与虚拟内存有什么关系,请高手解答
  • linux 下安装FTP 问题,求解答
  • 用虚拟机安装红旗Linux6.0出现的问题,希望高手解答。
  • 小妹请教一下 linux的网卡 问题!望解答!
  • linux 几个问题 求解答
  • linux qt4环境下,界面显示不了图片,往高手解答
  • 如何给装好的linux 进行分区,在线等。解答后马上给分
  • 初学linux命令时 遇到的一个小问题, 麻烦各位进来帮我解答下。。。。。
  • --Raid绝对难题,请linux高手解答--
  • 菜鸟的Linux练习疑问……
  • Linux文件系统结构的疑问
  • Linux 初学者的疑问 (各位老鸟进来看看)
  • linux C编程中使用make时对 内部规则的疑问
  • 关于Linux内核的疑问
  • 关于linux runlevel的疑问
  • 由Turbo C 转入 Linux C的疑问
  • linux初学疑问
  • 关于LINUX下图形界面显示字符的疑问
  • linux不做嵌入式的,好找工作吗,疑问中!
  • 关于linux内核链表的疑问
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux下free命令显示的内存使用情况分析
  • 哪位前辈给解释下linux下虚拟内存和物理内存的关系!
  • Linux内存文件系统(ramdisk)的三种实现方式
  • linux下内存泄露检测工具 mtrace 如果记录.so文件中的内存信息
  • linux内存文件系统ramfs实现原理
  • 有人熟悉DMA吗?我要实现内存中的内存的“搬动”。(LINUX)
  • linux下进程占用内存空间详解
  • 如何让linux没有到达内存瓶颈时回收内存页并占用最少资源
  • Linux 共享内存介绍及实现代码
  • 请教关于linux内存管理问题,如何给定义的变量指定固定内存段
  • Linux/Centos/Ubuntu清除系统缓存释放内存命令介绍
  • 在Linux上用C语言编写的函数里面申请了一块内存,并且返回这块内存,最终它需要释放吗?
  • linux下进程间通信:共享内存原理及具体用法举例(基于c/c++语言)
  • 大家好,我想问下有人用过"linux进程的内存使用解析"中推荐使用的"Ben Maurer写的perl脚本"查看内存么
  • 在SUSE linux下jar文档的运行,提示内存泄露,指定最大最小内存后只能在十几分钟才能打开,求各位大虾指点!
  • 我的redhat linux7.3因为内存有些少,所以我想随时查看内存的使用情况该如何去做,还有我想关掉(而不是切换)图形界面应该用什么命令
  • 请教!Linux系统C开发的程序,为什么我的程序运行时内存持续增长,程序退出后内存也没有降低?
  • 虚拟机上的Linux怎么修改Linux内存
  • 问个LINUX内存分配的问题。
  • linux9.0下内存占用一直是95%以上怎么解决
  • linux下查看java项目虚拟内存很大,请高手指点下
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,