linux内核屏蔽内存地址,关于linux内核地址分配问题

最近看关于linux内核方面的书,一直有个问题,就是linux内核加载到内存之后,它的各个详细部分是什么,

比如,开始的是内存页目录,页表,内核代码段,数据段,然后就是内存管理啊,文件系统啊,还有一些基本数据结构  比如进程描述的,tss等。疑问就是这些部分详细的物理内存地址多少,谢谢。

|

你问的确实太广了 试着回答你最后的问题

首先 所有无力内存都是内核来调度的。假定你板子的内存物理地址是0x00000000(一般是),那么从这个头到最大内存地址(其实不是最大地址,有另外的限制,常见的板子可以这么认为),都是内核可以直接管的物理地址,内核本身处在内存从开头(或离开头某个偏移处),包括内核的代码,数据等等。

内核的虚地址固定位于0xC0000000开始,然后就有一个值定义从物理地址到虚拟地址的偏移,这个板子那就是0xC0000000,任何一个物理地址x的虚拟地址就是x+0xC0000000 = 0xC000000x.

如果物理地址不是从0开始比如某些TI板子,如内存物理地址是0x80000000,那这个偏移就是0xC0000000-0x80000000=0x40000000.

|

你可以看system.map  这个编译内核的时候会产生的

各个函数的地址

各个segment的分布

都有

如果想了解很清楚  建议可以看下赵炯的 linux内核注释 系列(再版了很多次 名字都不一样)

讲的很全面 而且很细  不过是争取低版本的

|

本帖最后由 wenxy1 于 2010-04-06 11:14:16 编辑

[root@localhost proc]# cat iomem

00000000-0009f7ff : System RAM

0009f800-0009ffff : reserved

000a0000-000bffff : Video RAM area

000c0000-000c7fff : Video ROM

000ca000-000cafff : Adapter ROM

000f0000-000fffff : System ROM

00100000-0feeffff : System RAM

00100000-00375ab5 : Kernel code

00375ab6-004223ff : Kernel data

0fef0000-0fefefff : ACPI Tables

0feff000-0fefffff : ACPI Non-volatile Storage

0ff00000-0fffffff : System RAM

e8000000-e87fffff : 0000:00:0f.0

e8800000-e8800fff : 0000:00:11.0

e8801000-e880101f : 0000:00:10.0

e8900000-e8900fff : 0000:02:02.0

e8900000-e8900fff : ehci_hcd

f0000000-f7ffffff : 0000:00:0f.0

fec00000-fec0ffff : reserved

fee00000-fee00fff : reserved

fffe0000-ffffffff : reserved

System.map文件也描述了内核函数的逻辑地址。

|

工作量挺大的,搞懂了也就不要在中国呆了,呵呵。startup函数描述的内核启动过程就是这些空间分配建立的过程。以x86为例,内核加到0x1000000处,临时分配页目录在0x10001000和0x10002000。。。。。太多了,说不清了

|

觉得这个没什么大的意义

你要真想得到内核空间的虚拟地址的物理地址,一个__pa()宏就搞定了

|

呵呵!其实这个问题主要在setup.s文件中建立起来的,setup.s文件主要是对内存初始化,初始化了段页式存储管理,建立起了页表和段表。GDT和IDT,这里面的东西好多的哦!段描述符又分为全局和局部的,再细分为数据段,代码段和状态段...这些东西在赵炯老师的那本linux内核中有详细讲解,楼主要细学的话可以参考一下那本书!

|

学习学习。

|

哦,学习学习,学无止境……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值