程序的动态加载和执行
内核结构 内核分为四个部分,分别是初始化代码,内核代码,内核数据段和公共例程段,主引导程序也是初始化代码的组成部分。 初始化代码用于从BIOS那里接管处理器和计算机硬件的控制权,安装最基本的段描述符,初始化最初的执行环境。然后,从硬盘上读取和加载内核的剩余部分,创建组成内核的各个内存段。 内核的代码用于分配内存,读取和加载用户程序,控制用户程序的执行。 内核数据段提供了一段可读写的内存空间,供内核自己使用。 公共例程用于提供各种用途和功能的子过程以简化代码的编写。这些例程既可以用于内核,也供用户程序调用。 除了以上的内容以外,内核文件还包括一个头部,记录了各个段的汇编位置,这些统计数据用于告诉初始化代码如何加载内核。 代码清单 用户程序 ;代码清单13-3 ;文件名:c13.asm ;文件说明:用户程序 ;=============================================================================== SECTION header vstart=0 program_length dd program_end ;程序总长度#0x00 head_len dd header_end ;程序头部的长度#0x04 stack_seg dd 0 ;用于接收堆栈段选择子#0x08 stack_len dd 1 ;程序建议的堆栈大小