操作系统存储管理与进程管理课程论文设计.doc_第1页
操作系统存储管理与进程管理课程论文设计.doc_第2页
操作系统存储管理与进程管理课程论文设计.doc_第3页
操作系统存储管理与进程管理课程论文设计.doc_第4页
操作系统存储管理与进程管理课程论文设计.doc_第5页
免费预览已结束,剩余20页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学年论文(课程设计)题目: 操作系统存储管理与进程管理学 院 学科门类 工 学 2012 年 05 月 26 日12010级操作系统论文(课程设计)操作系统存储管理与进程管理摘要此系统实现了存储管理和进程管理。存储管理部分主要实现主存空间的分配和回收。存储管理采用可移动的可变分区存储管理方式。采用数组来模拟主存,大小为512个字节。进程管理主要包括进程调度,进程的创建和撤销、进程的阻塞和唤醒,中断作用的实现。其中硬件中的中央处理器用不断循环的函数cpu( )模拟,重要寄存器(如:程序状态寄存器psw、指令寄存器ir)用全局变量模拟,中断的发现是在函数cpu中加检测psw的方式来模拟,时钟的模拟通过timer控件实现。进程控制块的模拟通过数组,本系统最多容纳10个。进程调度时采用时间片轮转调度算法,时间片为5。关键词: 存储管理; 进程管理; 时间片operating system memory management and process managementabstractobjective to determine whether treatment with atorvastatin, 80 mg/d, initiated 24 to 96 hours after an acute coronary syndrome, reduces death and nonfatal ischemic events.design and setting a randomized, double-blind trial conducted from may 1997 to september 1999, with follow-up through 16 weeks at 122 clinical centers in europe, north america, south africa, and australasia.patients a total of 3086 adults aged 18 years or older with unstable angina or non-q-wave acute myocardial infarction.interventions patients were stratified by center and randomly assigned to receive treatment with atorvastatin (80 mg/d) or matching placebo between 24 and 96 hours after hospital admission.keywords: storage management; process management; time slice目录1引言11.1性质11.2教学目的11.3任务和要求11.4意义11.5论文结构安排1系统分析与设计22.1此次课程设计总体把握22.2存储管理的要求22.3进程管理的要求22.3.1进程控制块22.3.3进程创建22.3.4进程撤销22.3.5进程阻塞32.3.6进程的唤醒33系统实现43.1全局变量43.2内存分配53.3内存回收63.4创建进程73.5撤销进程83.6进程调度93.7进程阻塞103.8cpu函数124结束语15参考文献16致 谢171引言1.1性质操作系统是计算机科学与技术专业的主要专业基础课和主干课。操作系统对计算机系统资源实施管理,是所有其他软件与计算机硬件的唯一接口,所有用户在使用计算机时都要得到操作系统提供的服务。本课程使学生掌握操作系统的基本概念、基本原理、设计方法和实现技术,具有初步分析实际操作系统的能力 ,训练分析和解决实际问题能力,为其今后在相关领域开展工作打下坚实的基础。 1.2教学目的本科程通过模拟操作系统原理的实现,应使学生加深对操作系统工作原理和操作系统实现方法的理解,系统科学地受到分析问题和解决问题的训练,提高运用理论知识解决实际问题的能力。为学生从事科学研究和独立负担计算机及其应用方面的工作打好扎实的基础。1.3任务和要求此系统为基于时间片轮转调度算法的进程管理系统,主要实现存储管理,设备管理和进程管理。存储管理部分主要实现主存空间的分配和回收、存储保护。设备管理主要包括设备的分配和回收。进程管理主要包括进程调度,进程的创建和撤销、进程的阻塞和唤醒,中断作用的实现。1.4意义通过本模拟系统的设计,可以加深学生对操作系统的原理的理解,明白操作系统的各项功能的具体实现和具体操作,提高学生的动手能力。1.5论文结构安排第二章为系统分析与设计,写出系统要求,分析出包含哪些功能模块、每个模块的计划采用的实现方法和原理。第三章为系统实现,写出主要模块的实现,包括全局变量说明和主要功能的实现流程。第四章为结束语,总结课程设计的体会。系统分析与设计2.1此次课程设计总体把握我此次主要实现的是对设备管理与进程管理,在设备管理中加入了一些小的知识点,如设备的分配,撤销,显示等等,对进程也是,有等待进程的管理,执行设备的管理,阻塞进程的管理,进程调度等2.2存储管理的要求存储管理的功能在多道程序环境中,存储管理的目的是:一是提高资源的利用率,尽量满足多个用户对内存的要求,而是能方便用户使用内存。2.3进程管理的要求进程管理主要包括进程调度,进程的创建和撤销、进程的阻塞和唤醒,中断作用的实现。2.3.1进程控制块进程控制块内容包括进程标识符、主要寄存器内容、进程状态、阻塞原因等等。本模拟系统最多容纳10个进程块。pcb区域用数组模拟。进程控制块根据内容的不同组成不同的队列,空白进程控制块链、就绪队列和阻塞队列,正在运行的进程只有一个,系统初始时只有空白进程控制块链。2.3.2进程调度采用时间片轮转调度算法,时间片为5。 进程调度函数的主要工作是:第一步,将正在运行的进程保存在该进程对应进程控制块中;第二步,从就绪队列中选择一个进程;第三步,将这个进程中进程控制块中记录的各寄存器内容恢复到cpu各个寄存器内。2.3.3进程创建进程创建creat的主要工作是:第一步,申请空白进程控制块;第二步,申请主存空间,申请成功,装入主存;第三步,初始化进程控制块;第四步,将进程链入就绪队列,根据情况决定是否转向进程调度。2.3.4进程撤销进程撤销destory的主要工作是:第一步,回收进程所占内存资源;第二步,回收进程控制块;第三步,在屏幕上显示进程执行结果,进程撤销2.3.5进程阻塞进程阻塞block的主要工作是:第一步,保存运行进程的cpu现场;第二步,修改进程状态;第三步,将进程链入对应的阻塞队列,然后转向进程调度。2.3.6进程的唤醒进程唤醒的主要工作是第一步,将进程由阻塞队列中摘下;第二步,修改进程状态为就绪;第三步,链入就绪队列,根据情况决定是否转向进程调度。系统实现3.1全局变量系统代码中定义了一些全局变量namespace myos class pcb public string name = null; publicstringcontent =null; public int numberp = -1;/记录断点 namespace myos class process static public void processcreate(int n) readyq.readyqreadyq.countp = new pcb(); readyq.readyqreadyq. = menustructure. + .exe; readyq.readyqreadyq.countp.content = file.readalltext(e: + menustructure. + .txt); readyq.countp+; static public void processdestory(int n) readyq. = null; readyq.readyqn.content = null; readyq.readyqn.numberp = -1; public void processblock() public void processwakeup() namespace myos class readyq public static pcb readyq = new pcb 8; public static int countp = 0; 3.2内存分配可变分区方式的内存分配流程如图3-1所示图3-1内存分配算法流程图内存分配后,内存区颜色有改变。如图3-2所示图3-2内存分配后的界面显示3.3内存回收归还内存区域的流程如图3-3所示。图3-3内存回收后的界面显示内存回收后颜色恢复如图3-4所示。图3-4内存回收后的界面显示3.4创建进程当执行可执行文件时,把指令传过来,调用creat函数。private void processsrun(string p) if (p.contains(!设备1) string arrayt1 = p.split(1); butd1.backcolor = color.lime; if (p.contains(!设备2) string arrayt2 = p.split(1); butd2.backcolor = color.lime; private void listbox1_selectedindexchanged(object sender, eventargs e) /对应内容 if (listbox1.selecteditem != null) for (int n = 0; n readyq.countp; n+) if (readyq. != null) if (readyq..equals(listbox1.selecteditem) filecontent = readyq.readyqn.content; string array0 = filecontent.split(;); for (int i = 0; i array0.length; i+) listbox2.items.add(array0i); 3.5撤销进程进程结束时,即读到end指令后,传递指向当前正在运行的指针,撤销当前进程。 public void destroy(int r) int a, i, t; t = reclaim(r); if (t = 0) /回收内存资源不成功 messagebox.show(内存资源回收不成功!); else /回收内存资源成功,然后回收进程控制块 a = dr; / 记录结果if (empty.tail = -1 & empty.head = -1) /将进程控制块挂入空闲队列 empty.tail = empty.head = r; pcbempty.head.next = -1; else pcbempty.tail.next = r; pcbr.next = -1; empty.tail = r; messagebox.show(x= + a);if (ready.head = -1) for (i = 0; i 10; i+) readysi.text = ; 3.6进程调度当前一进程结束时,cpu会调度就绪队列中的进程。 public int sheduling() int i, j, s, h; char a = new char4;if (ready.tail = -1 & ready.head = -1) /就绪队列中无进程可调度 return 0; else /有进程可调度 i = ready.head;/记录取走的 if (pcbready.head.next = -1)/就绪队列只有一个进程了,取走后为空 ready.tail = ready.head = -1; else /就绪队列中不只剩下一个进程 ready.head = pcbready.head.next; j = 0; /显示就绪队列中的进程h = ready.head; if (ready.head != -1)/有进程 while (pcbh.next != -1)/不是唯一的 readysj.text = .tostring(); h = pcbh.next; j+; readysj.text = .tostring(); j+; for (s = j; s 10; s+) readyss.text = ; time = 5;/设置时间片 textbox12.text = time.tostring(); timer3.enabled = true;/控制时间片的/恢复该进程现场信息ax = pcbi.ax; bx = pcbi.bx; cx = pcbi.cx; dx = pcbi.dx; pc = pcbi.pc; dr = pcbi.dr; run = i; /修改指向运行进程的指针runreturn 1; 3.7进程阻塞进程申请设备不够时,则阻塞该进程。public void block(int r, char equipment) int j, h, s; /保存现场信息 pcbr.dr = dr; pcbr.ax = ax; pcbr.bx = bx; pcbr.cx = cx; pcbr.dx = dx; pcbr.pc = pc; pcbr.reason = equipment; /填写阻塞原因 /将进程链入阻塞队列 if (wait.tail = -1 & wait.head = -1)/阻塞队列为空 wait.tail = wait.head = run; pcbwait.tail.next = -1; else = run; pcbrun.next = -1; wait.tail = run; /转入新的进程调度 run = -1; /阻塞队列的显示 j = 0; h = wait.head; if (wait.head != -1)/不空 while (pcbh.next != -1) waitsnj.text = .tostring(); waitsrj.text = 缺少设备 + pcbh.reason.tostring(); h = pcbh.next; j+; waitsnj.text = .tostring(); waitsrj.text = 缺少设备 + pcbh.reason.tostring(); j+; for (s = j; s 10; s+) waitsns.text = ; waitsrs.text = ; 由于缺少设备进程被阻塞后,在阻塞队列区域显示阻塞的进程名和阻塞原因。如图3-5所示图3-5 进程阻塞后的界面显示3.8cpu函数namespace myos public partial class fos : form public fos() initializecomponent(); static int i = 3; /文件夹名字变量 static public string filecontent = null;/文件内容 static public int x = 0;/传值变量 static int number1 = 0; static int number2 = 0; static public int fatnum1 = 0; static public int fatnum2 = 0; static public int fatnum3 = 0; static public int countr = 0;/readyq的参数 static public int l = 0;/listbox2的焦点 static public int flag = 0; static public int time = 0; private void treeview_nodemouseclick(object sender, treenodemouseclickeventargs e) /显示contextmenustrip位置 if (e.button = mousebuttons.right) treeview.selectednode = e.node; point pos = new point(e.node.bounds.x + e.node.bounds.width, e.node.bounds.y + e.node.bounds.height); bool bl =e.node.text.contains(.txt) | e.node.text.contains(.exe); i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论