自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(4)
  • 资源 (1)
  • 收藏
  • 关注

原创 linux-0.11中保护模式建立过程的分析[4]

 前面提到,第114行代码 .org 0x1000 之前的代码都将会给页目录表覆盖(这里的覆盖不是指更改了磁盘上system镜像文件,它是指更改了内存中的system镜像文件)。为什么这部分代码可以给覆盖呢?其实这部分代码在整个内核运行当中只是在初始化的时候运行一次而已,在运行完以后,他就处于无用的状态了。以其让它占用这部分内存空间,不如将这部分内存空间挪作它用,所以Linus将它用作了页目录表。

2009-04-18 11:35:00 519

原创 linux-0.11中保护模式建立过程的分析[3]

在SYSTEM模块中,被链接在0x00000处的是head.s代码。由图4可以知道,段寄存器除了CS是更新了以外,其他的段寄存器还是保留着实模式下的段值。因此我们必须先更新其他段寄存器的值,以保证程序有一个正确的运行环境。head.s的头几行代码就是干了这个事情。代码如下:18         movl $0x10,%eax19         mov %ax,%ds20      

2009-04-18 11:33:00 787

原创 linux-0.11中保护模式建立过程的分析[2]

在setup.s代码中没有重新设置栈寄存器,所以在setup.s中使用的栈是在bootsect.s中设置好的栈。程序开始的代码重新设置段寄存器ds,因为现在的CS段值是0x9020,而代码的数据段是与代码段重叠的,所以要重新段寄存器ds,让它等于CS的段值。36         mov     ax,#INITSEG ! this is done in bootsect already, bu

2009-04-18 11:31:00 584 1

原创 linux-0.11中保护模式建立过程的分析[1]

学习linux有一段时间了。在学习过程中,发现赵烔博士编著《linux内核完全注释》是一本很好的linux入门书。该书主要是以linux-0.11的源代码为线索来讲述linux-0.11的实现原理。linux-0.11是Linus写的比较老的一个linux版本,该版本的linux利用了很多80x86的特性,特别是保护模式的一些相关特性。理解保护模式的工作细节是理解linux-0.11的关键。我在理

2009-04-18 11:25:00 968

linux-0.11中保护模式建立过程的分析

linux-0.11是Linus写的比较老的一个linux版本,该版本的linux利用了很多80x86的特性,特别是保护模式的一些相关特性。理解保护模式的工作细节是理解linux-0.11的关键。我在理解这一部分内容时,也花了很长时间,很懊悔当初没有很好的学习《微机原理》这门课啊。在这方面赵烔博士编著《linux内核完全注释》已经写得很详细了,不过我觉得关键细节的地方不够突出,也许这不是《linux内核完全注释》要讲解的重点。所以我从我学习的角度并结合linux-0.11的三个文件bootsect.s、setup.s和head.s来说说80x86实模式和保护模式的一下工作细节。

2009-04-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除