保护模式下的进程调度.doc

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
保护模式下的进程调度.doc

PAGE  PAGE 34 保护模式下的进程调度 本实验采用C与汇编语言混合编程,利用计时中断实现保护模式下多个进程间的简单切换。 1 程序结构 1.1 运行过程 系统加电或重启 系统初始化 系统BIOS例程 加载引导扇区 控制权交给引导扇区 加载loader 引导扇区(BOOT5) 跳转到loader 获取并显示内存信息 定义并初始化GDT 进入保护模式 装载(LOADER) 启动分页机制 加载kernel 跳转到kernel 切换到内核GDT 内核(KERNEL) 初始化8259A ************************ 初始化IDT protect.c:init_prot() * 在GDT中添加TSS和3个LDT描述符 * 初始化TSS ************************** 初始化进程表 ************************ 设置时钟中断处理程序 * 打开时钟中断 main.c:kerel_main() * 调用restart *************************** 进程切换 1.2 程序目录 下面是我们程序目录ps中的子目录结构及文件的功用。 tree . ├── a.img (FAT12软盘映像:将复制进文件LOADER.BIN和KERNEL.BIN) ├── boot (引导装入) │?? ├── boot.asm (引导扇区:FAT12、装入LOADER.BIN) │?? ├── include (包含汇编程序) │?? │?? ├── fat12hdr.inc (FAT12的常量定义) │?? │?? ├── load.inc (装载地址的常量定义) │?? │?? └── pm.inc (保护模式的常量与宏定义) │?? └── loader. asm (装载程序:获取并显示内存信息、定义并初始化GDT、 ├── include (包含头文件) 进入保护模式、启动分页机制、加载kernel) │?? ├── const.h (定义类型和常量) │?? ├── global.h (定义全局数据结构[数组]) │?? ├── proc.h (定义进程表和任务结构) │?? ├── protect.h (定义保护模式下的数据结构类型和符号常量) │?? ├── proto.h (定义函数的原型) │?? ├── sconst.inc (定义汇编程序用的PCB、时钟控制器常量和选择符常量) │?? ├── string.h (定义memcpy和memset的函数原型) │?? └── type.h (定义无符号整数和函数指针类型) ├── kernel (内核程序) │?? ├── clock.c (定义时钟中断处理程序clock_handler) │?? ├── global.c (定义全局数据结构[数组]) │?? ├── i8259.c (初始化时钟控制器) │?? ├── kernel.asm (切换GDT、装入IDT和TTS、调用main.c中的kerel_main()、 │?? │?? 定义异常和硬件中断处理、定义save和restart函数) │?? ├── main.c (初始化进程表、定义用户进程函数) │?? ├── protect.c (定义异常与硬件中断处理、初始化TSS和LDT描述符) │?? └── start.c (复制GDT、初始化IDT) ├── lib (库函数) │?? ├── kliba.asm (定义显示串、端口I/O和开闭硬件中断的汇编函数) │?? ├── klib.c (定义整数转字符串、显示整数和延时函数) │?? └── string. asm (定义内存复制、内存设置和串复制函数) └── Makefile (定义用于自动编译和软盘挂载/文件复制的Make文件) 1.3 逻辑框图 与实模式下进程调度的类似。 加载内核(含三个应用程序函数) 引导扇区 装载程序 内核程序 进程A 计时器 中断处理程序 进程调度 进程B 进程C 系统启动 启动下一进程 利用PCB保存进程状态 挂起进程 进程调度 进程运行 运行 中断发生 全局逻辑图 (红色为内核模块,绿色为进程调度) 进程切换 1.4 运行结果 2 程序模块 boot.asm与我们的boot5.asm相同,loader.asm及其3个包含文件fat12hdr.inc、load.inc和pm.inc与上次实验中的相同,没有必要重复介绍。下面只是关于内核程序诸模块的功能介绍与代码分析。 2.1 应用程序函数 为了简单,我们在内核程序组中增加了C程序main.c,在其中初始化进程表,并定义3个函数T

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档