当前位置:网站首页 > 编程语言 > 正文

本地回环地址是多少(本地回环地址作用)



     本文主要简介在X86体系结构下和在ARM体系结构下,Linux内存布局的概况,力求简单明了,不过多深入概念,多以图示的方式来记忆理解,一图胜万言。

Technorati 标签: 内存 布局

     在X86体系结构下,物理内存地址一般从0x0000_0000开始,而Linux内核主要按照在物理地址0x0010_0000开始的地方,即物理地址1M以上的空间。那最开始的1M空间是用来干什么的呢?

      考虑到通用的IBM-PC体系结构,最开始的1M空间由BIOS例程和映射ISA图形卡的内存,这块区域为了所有IBM兼容PC从640K到1M的物理地址,始终存在,但无法被操作系统使用。

image

主要内存布局如上图所示:

     mmap映射区向下扩展,堆向上扩展,两者相对扩展,直到耗尽虚拟地址空间中的剩余区域。

     BSS段用来存放程序中未初始化的全局变量,该段内容只记录数据所需空间大小,并不分配真实空间。

     DATA段用来存放程序中已初始化的全局变量,为数据分配空间,数据具体值保持在目标文件中。

     CODE段用来存放程序中执行代码的内存区域,通常为大小确定的只读段,包括只读常量、只读代码等。

     image

参考资料:http://blog.csdn.net/huangzhipeng/article/details/

     以S3C2410为例子,假设物理内存为64M,映射到ARM的起始物理地址为【0x3000_0000~0x3200_0000】,这个由硬件接线决定。我们可以通过查看内核编译输出的System.map文件来了解内核虚拟地址空间布局,结果类似如下:

     image image

   可以看出内核镜像大小为3.7M,虚拟地址空间起始地址为0xc000_0000(这是开启MMU之后的虚拟地址空间),在内核head.S文件中,有内核线性地址和物理地址的描述,见下图:

image

     PAGE_OFFSET为0xC000_0000,为内核虚拟地址相对偏移(相对于0地址的偏移),PHYS_OFFSET为内核载入实际物理地址相对偏移,不同的硬件板子,ARM访问的内存物理地址不一样,这里以0x3000_0000(这由硬件接线决定)为假设。TEXT_OFFSET为0x0000_8000,为编译时指定的代码段偏移,所以,uboot最后启动内核的地址为内核代码指定的KERNEL_RAM_PADDR(0x3000_8000),这样才能正常运行,而内核的入口地址和载入地址,最好设置成一样。而uboot加载kernel的实际地址设置为0x3000_7fc0,比KERNEL_RAM_PADDR少64个字节,这可以避免拷贝内核,64个字节为uImage内核镜像针对uboot添加的特定头部信息。

     从上面的检查宏可以看出,内核开始的物理地址,必须开始在0xXXXX_8000的地址空间。

      swapper_pg_dir 为内核全局页表的起始地址,stext为内核的入口虚拟地址,因此,可以看出,全局页表占据16K的空间。

     head.S文件的功能,主要获取处理器类型和机器类型信息,创建临时页表,然后开启MMU,并进入第一个C语言函数start_kernel。

     更加详细的可以参见:

给出一个整体的内核结构图:

arch

参考链接:http://blog.csdn.net/linyt/article/details/

Linux 内存布局

到此这篇本地回环地址是多少(本地回环地址作用)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 苹果电脑装了双系统怎么恢复(苹果电脑双系统重装系统全部都恢复吗)2026-02-01 18:27:07
  • 文件目录下打开命令行(windows命令行打开文件目录)2026-02-01 18:27:07
  • 电脑ip换了后,打印机怎么重新共享(共享打印机换了ip不打印)2026-02-01 18:27:07
  • 如何打开目录(如何打开目录对话框)2026-02-01 18:27:07
  • m301h强刷固件下载(m301h zn刷机)2026-02-01 18:27:07
  • 进程控制基本原理(进程控制的原理)2026-02-01 18:27:07
  • udp广播接收和发送qt(udp广播接收和发送 stm32)2026-02-01 18:27:07
  • mt19937原理(mt7741原理图)2026-02-01 18:27:07
  • ssh免密码登录配置不起作用(ssh设置了免密登陆但还是要输入密码)2026-02-01 18:27:07
  • jvm内存模型(JVM内存模型的理解)2026-02-01 18:27:07
  • 全屏图片