III、保护模式下的初始化 (实模式->保护模式,分析了head.s)
2009-03-24 22:26
III、保护模式下的初始化
保护模式下的初始化,是指处理机进入保护模式后到运行系统第一个内核程序过程中系统所做 的一些处理。保护模式下的初始化在内核源码中对应的程序是
/Arch/i386/boot/compressed/head.S 和 /Arch/i386/KERNEL/head.S
;以下部分主要是针对这两个文件进行的分析。
-
几个相关文件:
<1.> /Arch/i386/boot/compressed/head.S
<2.> /Arch/i386/KERNEL/head.S
<3.> //Arch/i386/boot/compressed/MISC.c
<4.> /Arch/i386/boot/setup.S
<5.> /include/ asm/segment.h
<6.> /arch/i386/kernel/traps.c
<7.> /include/i386/desc.h
<8.> /include/asm-i386/processor.h
-
保护模式下的初始化过程分析:
一、/Arch/i386/KERNEL/head.S流程:
二、/Arch/i386/boot/compressed/head.S流程:
- 从流程图中可以看到,保护模式下的初始化主要干了这样几件事:
-
- 解压内核到0x100000处、
- 建立页目录和pg0页表并启动分页功能(即虚存管理功能)、
- 保存实模式下测到的硬件信息到empty_zero_page、初始化命令缓存区、
- 检测cpu类型、检查协处理器、
- 重新建立gdt全局描述符表、和中断描述附表idt;
- 从页目录和pg0页表可以看出,0�;4M物理内存被用作系统区,它被映射到系统段线性空间的0�;4M和3G�;3G+4M;即系统可以通过访问这两个段来访问实际的0�;4M物理内存,也就是系统所在的区域;
- 本来在实模式下初始化时已经建立了全局描述符表gdt,而此处重新建立全局描述符表gdt则主要是出于两个原因:一个就是若内核是大内
核bzimag,则以前建立的gdt,可能已经在解压时被覆盖掉了所以,在这个源码文件中均只采用相对转移指令jxx nf或jxx
nb;二是以前建立的gdt是建立在实地址方式下的,而现在则是在启用保护虚拟地址方式之后建立的,也即现在的gdt是建立在逻辑地址(即线性地址)上
的;
- 每次建立新的gdt后和启用保护虚拟地址方式后都必须重新装载系统栈和重新初始化各段寄存器:cs,ds,es,fs,gs;
- 从实模式下的初始化和保护模式下的初始化过程可以看出,linux系统由实模式进入到保护模式的过程大致如下:
6.由于分页机制只能在保护模式下启动,不能在实模式下启动,所以第一步是必要的;又因为在386保护模式下gdt和idt是建立在逻辑地址(线性地址)上的,所以第三步也是必要的;
7.经过实模式和保护模式下的初始后,主要系统数据分布如下:
初始后主要系统数据分布表
位置
|
系统数据
|
大小
|
0x101000 |
页目录swapper_pg_dir |
4K |
0x102000 |
页表pg0 |
4K |
0x103000 |
empty_bad_page |
4K |
0x104000 |
empty_bad_page_table |
4K |
0x105000 |
empty_zero_page |
4K |
0x105000 |
系统硬件参数 |
2K |
0x105800 |
命令缓冲区 |
2K |
0x106000 |
全局描述附表gdt_table |
4192B |
从上面对Linux系统的初始化过程的分析可以看出,以程序执行流程为线索、一线串珠,就是按照程序的执行先后顺序,弄懂程序执行的各个阶段所进行的处理,及其各阶段之间的相互联系。而流程图应该是这种分析方法最合适的表达工具。
事实上,以程序执行流程为线索,是分析任何源代码都首选的方法。由于操作系统的特殊性,光用这种方法是远远不够的。当然用这种方法来分析系统的初始化过程或用户进程的执行流程应该说是很有效的。
|
分享到:
相关推荐
在使用EndNote的过程中,用户可以将“ZZ_MODIFIED_GEEBINF.ENS”这个样式文件导入到EndNote软件中,然后在撰写论文时选择这个样式,EndNote会自动按照预设的格式生成参考文献列表。这样极大地提高了论文写作的效率,...
cad标高归零,好用的
应用广泛的嵌入式操作系统——ZZ-Linux.pdf
ZZ-B-225B.027815.zip
ZZ051沙盘程序视频讲解.zip
2. **Linux系统安装**:在Linux安装过程中,通常需要至少划分根分区(`/`)和交换分区(`swap`)。可以添加其他普通用户,不安装图形环境,以及使用DHCP自动获取IP地址,但之后仍可手动更改IP。选项D是错误的。 3. **软...
linux-2.6.35.tar.bz2
ZZ016网络建设与运维.zip
ZZ铝业内部控制问题分析.doc
3. 软链接(符号链接)在Linux中用`l`表示,可以链接到文件或目录,但其i节点与原文件不同。B选项是错误的,因为软链接默认权限不是777。 4. 默认情况下,二进制文件具有可执行权限。Vim的配置文件确实是`.vimrc`。...
ZZ561401.CAB ZZ561401.CAB ZZ561401.CAB
在本文档中,主要讲述了如何安装Linux 6.0服务器版,其中涵盖了多个关键知识点,包括Linux内核、安装方式、分区方案、文件系统、LVM、硬盘与分区的表示方法,以及GRUB启动菜单。以下是对这些内容的详细解释: 1. **...
标题中的"ZZ_MODIFIED_GEEBINF.ENS.zip"是一个压缩包文件,暗示其内容可能包含对EndNote引用样式的一种修改。EndNote是一款流行的参考文献管理软件,它允许用户存储、组织和格式化引用文献。"ZZ_MODIFIED_GEEBINF....
根据 7zip 官方版本制作的 deb 安装包,可以直接在Linux 系统上使用 `dpkg...本资源仅仅是为方便安装进行的deb包封装,并对可执行文件 `7zz` 进行了重命名复制为 `7zip`,因此安装后使用时可以直接使用`7zip`作为命令。
3. **长期合同权益**:可能指的是企业在长期合同项目中积累的权益,比如建筑合同中的未完成工程、尚未确认收入的部分。这部分权益会在项目完成或满足收入确认条件时转化为收入。 4. **开发成本**:企业投入的研发...
Linux 内核采用了稳定版本和开发版本并存的版本控制方式,版本号的命名格式为 x.yy.zz,其中 x 为主版本号,yy 为次版本号,zz 表示修订的版本号。 三、GPL 授权许可协议 GPL 授权许可协议是 Linux 操作系统的授权...
它的设计初衷是为了让Linux更加易于使用,尤其是在图形界面和安装过程方面进行了优化。Mandrake Linux以其用户友好的特性而受到欢迎。 #### 二、Linux的发展历程 - **起源与发展:**Linux起源于1991年,最初作为...
在安装Linux 6.0服务器版的过程中,首先要理解Linux的核心组成部分——内核。Linux内核是操作系统的心脏,负责管理硬件资源,提供基础服务。它采用稳定的版本控制系统,以XX, YY, ZZ的形式命名,其中XX为主版本号,...
Linux操作系统和服务器知识总结 Linux是一种开放源代码的操作系统,广泛应用于服务器领域,因其稳定性、安全性和可定制性而受到青睐。以下是对Linux系统和服务器的一些关键知识点的概述。 1. 服务器类型: - 非...
ZZ大厦的商业环境SWOT分析是一项评估其商业潜力和挑战的战略工具。SWOT代表Strengths(优势)、Weaknesses(劣势)、Opportunities(机会)和Threats(威胁)。以下是对这些因素的详细分析: **优势:** 1. 地理...