- 1、本文档共34页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 什么是传染病.ppt
- 什么是回复力.ppt
- 什麽是化学药物治疗化学治疗指的是利用化学药品的治疗。癌症化学.doc
- 什麽是生物晶片.doc
- 今年上半年我国汽车出口大幅萎缩自主品牌汽车生存面临双重-海关总署.doc
- 从史料教学谈起-以中国史为例(杨绪敏).ppt.ppt
- 从金融立法看台湾金融业之发展赖英照-金融研训院.doc
- 仑雅国小-永续校园全球资讯网.doc
- 他把一只价值连城的古董花瓶打得粉碎.ppt
- 他行网银汇入我行指引-长兴联合村镇银行.doc
- 中国行业标准 GM/T 0126-2023HTML密码应用置标语法.pdf
- 《JJF 2121-2024恒转速源校准规范》.pdf
- 餐饮服务中20条处理要点.docx
- 《GM/T 0011-2023可信计算 可信密码支撑平台功能与接口规范》.pdf
- 《JJF 2134-2024旋转流变仪校准规范》.pdf
- JJF 2121-2024恒转速源校准规范.pdf
- 计量规程规范 JJF 2121-2024恒转速源校准规范.pdf
- 《JJF 2118-2024压力式六氟化硫气体密度控制器校验仪校准规范》.pdf
- JJF 2134-2024旋转流变仪校准规范.pdf
- 计量规程规范 JJF 2134-2024旋转流变仪校准规范.pdf
文档评论(0)