LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1012|回复: 8

内核板块人气太少,无人理会,只好发这里了……

[复制链接]
发表于 2005-12-4 20:38:07 | 显示全部楼层 |阅读模式
我正在看老师发给我们的关于Linux内核分析的课件,准备期末考试,但是课件讲的实在是太简单,看的我一头雾水,下面几个问题请大大们帮忙解惑:
1.虚拟空间与物理内存地址空间之间究竟是怎么映射的?
2.CPU是如何转入内核空间,完成从实模式到保护模式的平稳过渡的?我原来上计算机体系结构的时候,书上说程序运行时,还要从虚拟地址空间的虚页转换到实地址空间,而课件中又说在 Linux 中,CPU不能按物理地址来访问存储空间,而必须使用虚拟地址。这是咋回事?
3.Slab分配机制具体是怎么回事?
小弟才疏学浅,望大大们不吝赐教……
发表于 2005-12-4 22:08:56 | 显示全部楼层
1。两级映射,分页式管理,从高到底10位页目录索引,可从页目录中找到一个页表,接下来10位页表索引,在页表中找到一个页指针,可获得一个虚地址页,剩下12位是地址在野中的偏移。在前两步完成后得到一个虚地址页,这个就要靠MMU映射成一个物理地址。物理页被称作页框(你可以将其当作一个容器),当虚地址页被映射到这个物理页上的时候,就叫装入页框。好像系统保存了一个表,来记录虚地址也是否被装入页框,以及装入到那个物理地址。所以,前两步找到虚地址页完成后,实际上就得到了一个装入了页框的物理地址(或者发生缺页中断)。这个映射是透明的,由MMU完成。好像,似乎,就记得这些了.....可能有出入....
其他且听下回分解...
睡觉去鸟~~~
回复 支持 反对

使用道具 举报

发表于 2005-12-5 09:14:01 | 显示全部楼层
推荐同济大学赵炯博士写的《linux内核完全注释》,看完了阁下的问题应该没问题
btw:这种问题也不是几个贴能回答的了,还是找本好书读通,个人愚见!
回复 支持 反对

使用道具 举报

发表于 2005-12-5 09:19:42 | 显示全部楼层
支持楼上....
回复 支持 反对

使用道具 举报

发表于 2005-12-5 11:51:32 | 显示全部楼层
说说我的理解,不一定正确啊:
物理地址需要被"格式化"才能被使用,就像硬盘一样,通过格式化建立段页式(现在好像一般都用这种策略)存储机制,然后分配的是这些格式化好了的物理内存.

你说的虚拟空间是指虚拟内存么?如果是的话那么虚拟内存和物理内存是没有映射的,程序在访问某一段内存的时候它并不知道将要在虚存里取还是物理内存里取,它也没必要知道,操作系统在收到这一请求之后回去页表查找,如果查找不到就发生缺页中断,这时候就需要从硬盘(就是虚拟内存)上读取数据.

另外我估计你说的虚拟地址应该是经过段页编码的地址,比如说在1234页表的5678号地址.
Slab,.....不知道

这些问题基本上不是linux独有的,看看os的内存管理一段应该有所帮助

Post by Freesnake
我正在看老师发给我们的关于Linux内核分析的课件,准备期末考试,但是课件讲的实在是太简单,看的我一头雾水,下面几个问题请大大们帮忙解惑:
1.虚拟空间与物理内存地址空间之间究竟是怎么映射的?
2.CPU是如何转入内核空间,完成从实模式到保护模式的平稳过渡的?我原来上计算机体系结构的时候,书上说程序运行时,还要从虚拟地址空间的虚页转换到实地址空间,而课件中又说在 Linux 中,CPU不能按物理地址来访问存储空间,而必须使用虚拟地址。这是咋回事?
3.Slab分配机制具体是怎么回事?
小弟才疏学浅,望大大们不吝赐教……
回复 支持 反对

使用道具 举报

发表于 2005-12-5 12:33:38 | 显示全部楼层
还是找本书看看
回复 支持 反对

使用道具 举报

发表于 2005-12-5 13:04:02 | 显示全部楼层
首先是CPU有专门的地址转换单元MMU, 负责物理地址与虚拟空间的地址转换。
其次OS的虚拟内存管理负责整个虚拟空间到物理空间(可能使内存、硬盘或其它)的转换管理
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-5 16:00:16 | 显示全部楼层
还有两周考试……前天老师才把课件公布……临时抱佛脚ing……感谢各位……
回复 支持 反对

使用道具 举报

发表于 2005-12-6 13:32:07 | 显示全部楼层
1.由于x86历史遗留的文体,存在两种虚拟内存到物理内存的映射方式,即分页(线性)和分段(逻辑地址)一般是:逻辑地址->(段映射)->线性地址->(线性映射)->物理地址.在linux中,基本不用段映射的(基于可移植性的考虑),主要通过分页将虚拟内存地址映射为实际物理内存地址.而此步又是通过查页目录(10bit MSB)和页表(10bit)两步加上页内位移(12bit)完成
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表