收藏 分享(赏)

进程管理74314.doc

上传人:scg750829 文档编号:6933895 上传时间:2019-04-27 格式:DOC 页数:15 大小:114.50KB
下载 相关 举报
进程管理74314.doc_第1页
第1页 / 共15页
进程管理74314.doc_第2页
第2页 / 共15页
进程管理74314.doc_第3页
第3页 / 共15页
进程管理74314.doc_第4页
第4页 / 共15页
进程管理74314.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、河北大学 2008 级操作系统学年论文(课程设计):进程管理系统摘 要本系统根据在操作系统理论课上所学习的关于进程管理部分的所有内容和实现方法,采用抢占式优先级调度方法实现单用户的进程管理,主要包括:进程的创建和撤销、进程的阻塞和唤醒,中断的实现。本论文主要阐述并说明本次操作系统课程设计的背景、目的以及论文的结构安排;对系统中的主要功能模块以及每个模块计划采用的实现方法和原理进行了说明;并通过流程图等工具描述了主要模块的实现流程;最后在结束语部分分析了系统各功能的实现和不足之处、改进方案和在课程设计中的实际感受。关键词:操作系统 进程管理河北大学 2008 级操作系统学年论文(课程设计)目 录

2、1 引言 .11.1 背景 .11.2 实验目的 .11.3 论文结构安排 .12 系统分析与设计 .22.1 系统要求 .22.2 实现方法和原理 .22.2.1 CPU 的模拟 22.2.2 主要寄存器的模拟 .22.2.3 中断的模拟 .22.2.4 时钟的模拟 .32.2.5 进程控制块 .32.2.6 进程调度 .32.2.7 进程控制 .33 系统实现 .53.1 主要变量和数据结构说明 .53.1.1 主要变量说明 .53.1.2 主要数据结构说明 .63.2 主要函数的说明 .73.2.1 CPU 的模拟 7河北大学 2008 级操作系统学年论文(课程设计)3.2.2 进程创建

3、 .83.2.3 进程撤销 .93.2.4 进程唤醒 103.2.5 进程阻塞 103.2.6 优先级函数 103.2.7 中断 114 运行截图 115 结束语 12河北大学 2008 级操作系统学年论文(课程设计)11 引言1.1 背景操作系统是计算机学科中的主要专业基础课和主干课。是一个计算机系统中硬、软件资源的总指挥部,是所有其他软件与计算机硬件的唯一接口,没有操作系统任何应用软件都无法运行,所有用户在使用计算机时都要得到操作系统提供的服务。1.2 实验目的通过对操作系统的全部或者部分功能的模拟实现,加深对操作系统实现方法和工作原理的理解,在模拟中同时练习编程,并通过自身实践不断提高能

4、够运用理论知识分析问题、解决问题的能力,为将来学生就业或从事科学研究时能够独立承担并解决计算机及其应用方面的工作打下扎实的基础。1.3 论文结构安排本论文共分五部分,分别为前言、系统分析与设计、系统实现、运行截图、结束语。对操作系统的主要功能模块以及每个模块采用的实现方法和原理进行了说明;并通过流程图,过程描述语言等工具描述主要模块的实现流程;最后在结束语部分分析了系统各功能的实现和不足之处、改进方案和在课程设计中的实际感河北大学 2008 级操作系统学年论文(课程设计)22 系统分析与设计2.1 系统要求本模拟系统要求实现进程调度,进程的创建和撤销、进程的阻塞和唤醒,中断的实现。2.2 实现

5、方法和原理2.2.1 CPU 的模拟用函数 CPU()(该函数不能有参数)模拟中央处理器。该函数主要负责解释可执行文件中的命令。可执行文件要包括如下命令:X=?; 给 X 赋值一位数X+; X 加 1X-; X 减 1!?; !表示申请设备,第一个?为要申请哪个设备,第二个?表示使用设备的时间end; 表示命令结束CPU 只能解释指令寄存器 IR 中的指令。一个进程的运行时要根据进程执行的位置,将对应的指令存放到指令寄存器中。2.2.2 主要寄存器的模拟用全局变量来模拟重要寄存器,如 cpu 重要寄存器,指令寄存器 IR,程序计数器PC,程序状态寄存器 PSW,数据缓冲寄存器 DR 等。2.2

6、.3 中断的模拟在 CPU()函数中,每执行一条指令之前,需要先判断有无中断,若有进行中断处理,然后再运行解释指令。中断种类有三种,分别为程序结束中断、I/O 中断和因为出现更高优先级的进程而产生的中断。如果是程序结束中断,则将结果写入文件河北大学 2008 级操作系统学年论文(课程设计)3out,其中包括文件路径名和 x 的值,对进程进行撤销,然后进行进程调度。如果是I/O 中断,则将输入输出完成的进程唤醒,将等待该设备的一个进程同时唤醒,并进程放入阻塞队列中。如果是出现更高优先级的进程,则将正在运行进程的 cpu 现场保存在进程控制块中,并将进程重新放到就绪队列的队尾,等待下次执行。2.2

7、.4 时钟的模拟系统中的绝对时钟和相对时钟用全局变量模拟。系统时钟用来记录开机以后的时间。相对时钟用来存放进程可执行的时间,在进程调度时设置初值为 0,随系统时间的增值 1 而增 1,直到发生中断。2.2.5 进程控制块进程控制块是进程存在的唯一标志。进程控制块包含四个方面的信息:进程标识符信息,处理机状态信息,进程调度信息,进程控制信息。本模拟系统 PCB 内容包括内部标识符,外部标识符,指令计数器,程序和数据地址等信息。本模拟系统最多容纳 10 个进程块。进程控制块根据内容的不同组成不同的队列:空白进程控制块链、就绪队列和阻塞队列,正在运行的进程只有一个,系统初始时只有空白进程控制块链。2

8、.2.6 进程调度本次实验采用抢占式优先级调度算法。该算法按照优先级原则调度就绪队列中的进程。进程调度函数的主要工作是:将正在运行的进程保存在该进程对应进程控制块中;从就绪队列中选择一个进程;将这个进程控制块中记录的各寄存器内容恢复到cpu 各个寄存器内。2.2.7 进程控制1、进程创建进程创建的主要工作是:第一步,申请空白进程控制块;第二步,申请主存空间,申请成功,装入主存;第三步,初始化进程控制块;第四步,将进程链入就绪队列,根据情况决定是否转向进程调度。2、进程撤销河北大学 2008 级操作系统学年论文(课程设计)4进程撤销的主要工作是:第一步,回收进程所占内存资源;第二步,回收进程控制

9、块;第三步,在屏幕上显示进程执行结果,进程撤销3、进程阻塞进程阻塞的主要工作是:第一步,保存运行进程的 CPU 现场;第二步,修改进程状态;第三步,将进程链入对应的阻塞队列,然后转向进程调度。4、进程的唤醒进程唤醒的主要工作是:第一步,将进程由阻塞队列中摘下;第二步,修改进程状态为就绪;第三步,将进程链入就绪队列,根据情况决定是否转向进程调度。3 系统实现3.1 主要变量和数据结构说明3.1.1 主要变量说明public enum Interrupt /中断类型IO, /IO中断End, /程序结束No /优先级抢占public enum ProcessState /进程状态Block, /阻

10、塞 Ready, /就绪Execute, /执行White /空白public enum DeviceType /设备类型a,b,河北大学 2008 级操作系统学年论文(课程设计)5c,no public struct PCBpublic int ProcessID; /进程块的编号(0-9)public string ProcessName; /使用该进程块的进程名public int PageAdress; /页表的首地址public int Sum; /页表的长度 public int PC; /各个寄存器的状态public string IR;public int DR;public

11、Interrupt PSW;public int Pri; /优先级public int WaitTime; /要使用设备多长时间public int GetDeviceTime; /获得设备的时间public int ExecuteTime; /开始执行的时间public DeviceType NeedDevice; /申请失败的设备类型public DeviceType HaveDevice; /正在使用的设备类型public int DN; /使用的是哪个设备public string BlockReason; /阻塞的原因public int Next;3.1.2 主要数据结构说明cl

12、ass CPUpublic int PC;public int DR;public string IR;public Interrupt PSW;public Interrupt PSW1;public PCB PCBArray=new PCB10;public DateTime XTTime;public int XDTime;public int White;public int Ready;public int Block;public int Execute;private DeviceType type;private int time;public OS.ClassFolder.M

13、ainRam ram = new MainRam();public OS.ClassFolder.Device Dev = new Device();private void Init()河北大学 2008 级操作系统学年论文(课程设计)6/初始化PCB块/White = 0;Ready =Block=Execute=10;for (int i = 0; i 10; i+)PCBArrayi.ProcessID = i;PCBArrayi.Next = i + 1;/初始化寄存器/PC = 0;PSW = Interrupt.No;PSW1 = Interrupt.No;IR = “;/初始化

14、时间/XTTime = Convert.ToDateTime(“00:00:00“);XDTime = 0;/构造函数/public CPU()Init();3.2 主要函数的说明3.2.1 CPU 的模拟本系统中将进程管理的大部分代码都写在了 CPU()中,在此只写出模拟CPU 功能的过程描述以及代码。Public void cpu() If 就绪队列空,函数结束,什么也不执行河北大学 2008 级操作系统学年论文(课程设计)7Else选择优先级高的进程执行If 有新进程进入就绪队列且优先级高于正在运行进程,结束本进程执行,调度新的适合调度的进程取指令IF(指令是 x= “数值“ “;“格式

15、)则将 x 赋值为该数值,ELSE IF(指令是 i+格式)则指令执行加 1 操作,此时显示到中间结果框体中ELSE IF(指令是 i-格式)ELSE IF(指令是 i-格式)则指令执行减一操作,此时显示到中间结果框体中IF(指令是!?格式)则进程阻塞,把进程放入阻塞队列,记录阻塞时间IF(指令是 end;格式)则程序结束3.2.2 进程创建河北大学 2008 级操作系统学年论文(课程设计)8开始是否有可用 PCB?是 否申请空白 PCB修改 PCB将进程插入就绪队列中结束3.2.3 进程撤销开始进程是否有结果数据?是 否将结果保存输出释放资源将进程从就绪队列中移出结束回收 PCB河北大学 2

16、008 级操作系统学年论文(课程设计)93.2.4 进程唤醒开始阻塞队列是否空?否 是修改阻塞队列将进程插入就绪队列中结束3.2.5 进程阻塞开始修改 PCB,保存现场将进程插入阻塞队列中结束3.2.6 优先级函数设置一个变量 k,用于存放优先级最高数的进程号,也就是正在执行的进程,没有一个进程插入就绪队列则将新进程的优先级与 k 进行比较,如果大于 k,则将新进程号赋给 k,否则不变,最后返回 k 的值。河北大学 2008 级操作系统学年论文(课程设计)103.2.7 中断过程描述语言如下:中断寻找中断原因;If(申请设备中断)将进程放入阻塞队列中;保存好此进程的 CPU 现场信息;再从就绪

17、队列头部取出一个新的进程执行;/使用进程阻塞代码If(优先级抢占中断)将执行的进程插入到就绪队列尾部;应保存好此进程的 CPU 现场;再从就绪队列头部取出优先级最高的进程执行;If(程序正常结束)进程正常结束,则把进程名和运行结果显示到最终结果显示框中;再从就绪队列头部取出一个新的进程执行;/使用进程撤销代码 三个进程运行结束后,从已结束进程和结果表中可看到运行完的进程名以及结果。5 结束语通过这次模拟操作系统的课程设计,我对操作系统有了更深的认识和理解。在编写过程中我遇到了很多的问题,通过遇到问题,解决问题的过程,我增长了经验,收获了很多东西。河北大学 2008 级操作系统学年论文(课程设计

18、)11在编写代码前我把书上的原理性的知识看了一遍,想了想如何去实现。在头脑中想的倒很容易实现,但是在具体编写代码过程中却不是这样,越往后写代码,越感到细节性的东西很多,感觉就越来越难编写。看来想是一回事,做又是另一回事。由于急于求成,在编写代码前我只考虑了大方面的设计,在编写代码过程中才去想具体的细节,使得头脑中无法形成整体感,编写效率不高,这是一个教训。总之,通过这次实验设计,我增长了很多知识,不仅加深了对操作系统的内部原理的了解,更大大提高了我的编程技巧和分析解决问题的能力。参考文献操作系统 王煜 张明 刘振鹏 中国铁道出版社 2010Visual C#通用范例开发金典 王超 潘杨 张维维 电子工业出版社 2008操作系统实验教程(Windows 版) 姚卫华 清华大学出版社 2005河北大学 2008 级操作系统学年论文(课程设计)12

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报