一个小型的操作系统设计与实现资料

上传人:w****i 文档编号:96403358 上传时间:2019-08-26 格式:DOC 页数:39 大小:2.81MB
返回 下载 相关 举报
一个小型的操作系统设计与实现资料_第1页
第1页 / 共39页
一个小型的操作系统设计与实现资料_第2页
第2页 / 共39页
一个小型的操作系统设计与实现资料_第3页
第3页 / 共39页
一个小型的操作系统设计与实现资料_第4页
第4页 / 共39页
一个小型的操作系统设计与实现资料_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《一个小型的操作系统设计与实现资料》由会员分享,可在线阅读,更多相关《一个小型的操作系统设计与实现资料(39页珍藏版)》请在金锄头文库上搜索。

1、操作系统课程设计报告南通大学计算机科学与技术学院操作系统课程设计报告专业:计嵌151学生姓名:王志宏学号:1513052018时间:2017/6/28设计一个小型的操作系统设计要求将本学期三次的实验集成实现:1. 中断处理2. 作业调度3. PV原语4. 死锁5. 页面替换6. 磁盘调度(一)设计流程图主流程图开始的图形界面 作业调度PV原语死锁页面替换磁盘调度中断处理哲学家吃通心面先来先服务时钟银行家算法先进先出算法LRU算法先来先服务1. 中断处理模拟时钟中断的产生及设计一个对时钟中断事件进行处理的模拟程序。计算机系统工作过程中,若出现中断事件,硬件就把它记录在中断寄存器中。中断寄存器的每

2、一位可与一个中断事件对应,当出现某中断事件后,对应的中断寄存器的某一位就被置成1。处理器每执行一条指令后,必须查中断寄存器,当中断寄存器内容不为0时,说明有中断事件发生。硬件把中断寄存器内容以及现行程序的断点存在主存的固定单元,且让操作系统的中断处理程序占用处理器来处理出现的中断事件。操作系统分析保存在主存固定单元中的中断寄存器内容就可知道出现的中断事件的性质,从而作出相应的处理。本实习中,用从键盘读入信息来模拟中断寄存器的作用,用计数器加 1 来模拟处理器执行了一条指令。每模拟一条指令执行后,从键盘读入信息且分析,当读入信息=0 时,表示无中断事件发生,继续执行指令;当读入信息=1 时,表示

3、发生了时钟中断事件,转时钟中断处理程序2.作业调度 1)先来先服务FCFS开始初始化进程控制块,让进程控制块按进程到达先后顺序让进程排队调度数组中首个进程,并让数组中的下一位移到首位计算并打印进程的完成时刻、周转时间、带权周转时间其中:周转时间 = 完成时间 - 到达时间带权周转时间=周转时间/服务时间更改计时器的当前时间,即下一刻进程的开始时间当前时间=前一进程的完成时间+其服务时间数组为空NY结束 先来先服务算法流程3.PV原语 1)哲学家吃通心面问题哲学家吃通心面:在这道题目里,每把叉子必须互斥使用,当一位哲学家吃通心面之前必须执行两个P操作,获得自己左右两边的叉子,在吃完通心面后必须执

4、行两个V操作,放下叉子。4. 死锁1) 银行家算法5.页面替换 1)先进先出FIFO开始FIFO的缺页中断处理查主存分块表有空闲块可用?Y分配一块NJ=pHEADJ的修改标志=1?NY输出“将J页复写入交换区”输出“装入L页”调整FIFO队列,将L插入队尾(HEAD=(HEAD+1)modM)修改主存分块表和页表终止FIFO淘汰算法流程 2)LRU开始LRU的缺页中断处理查主存分块表有空闲块可用?Y分配一块N找到栈底元素:J=pM-1J的修改标志=1?NY输出“将J页送到入交换区”输出“装入L页”调整堆栈,使HEAD所指元素及以下的元素下移PHEAD=L修改主存分块表和页表终止LRU淘汰算法流

5、程6. 磁盘调度1)先来先服务算法FCFS)(二)实现原理主界面设计一个框架分别去链接处理机管理、存储器管理和缺页调度相关的程序。1. 中断2.作业调度 1)先来先服务FCFS(1) 任务先来先服务的调度算法实现处理机调度。(2) 要求1. 实现对FCFS算法的模拟实现2. 计算出该算法的平均作业周转时间、平均带权作业周转时间。(3) 原理按作业到达CPU时间先后顺序进行非剥夺式调度,先到达CPU的作业先被执行。(4) 数据结构 struct task_struct char name; /*进程名称*/ int number; /*进程编号*/ float come_time; /*到达时间

6、*/ float run_begin_time; /*开始运行时间*/ float run_time; /*运行时间*/ float run_end_time; /*运行结束时间*/ int priority; /*优先级*/ int order; /*运行次序*/ int run_flag; /*调度标志*/ tasksMAX;int fcfs()/*先来先服务算法*/进程名链接指针到达时间估计运行时间进程状态进程控制块结构(5) 实现方法建立一个链表按照到达CPU的时间从小到大排列,只需从第一个作业(头结点)依次调度到最后一个作业(尾结点)。(6) 运行界面测试数据:作业名到达时间运行时间

7、A028B09C03执行FCFS算法如下:3. 死锁假定本系统中的各个所需资源均是独占型资源,在进程运行的过程中不再释放,故只需要遍历链表将各个进程中所需的资源统计出来,只要不大于系统中预设的即可,一旦进程所需的资源大于系统中的最大量,给予用户选择kill一进程,已达到释放资源的目的。死锁检测函数:void sisuo() 死锁解除函数:void safe()4.缺页调度 1)先进先出FIFO(1) 任务采用先进先出FIFO算法实现分页管理的缺页调度,并输出每次调入调出的页号和运行结果。(2) 要求1.实现对FIFO算法的模拟实现2.输出每次执行的结果。(3) 原理基于程序总是按线性顺序来访问

8、物理空间这一假设,总是淘汰最先调入主存的页面,即淘汰在主存中驻留时间最长的页面,认为驻留时间最长的页不再使用的可能性较大。(4) 数据结构void FIFO()int length;int fifo100=0;int pageLength;int fifoPage100=0;int i,j;cout *先进先出算法*endl;pageLength=3;length=9; for(i=1;i=length;i+)int flag=0;for(j=1;j=pageLength;j+)if(fifoi=fifoPagej)flag=1;j=pageLength+1;else if(fifoPagej

9、=0)fifoPagej=fifoi;j=pageLength+1;flag=1; if(flag=1)elsecout 淘汰fifoPage1endl;for(j=1;j=pageLength;j+)fifoPagej=fifoPagej+1;fifoPagepageLength=fifoi;(5) 实现方法当采用先进先出算法时,用一个数组构成先进先出队列,数组中各个元素为进程已在主存的页号,其队列头指针初始化为0.假设分配给每个进程的内存块数固定。当队列满需淘汰时,淘汰最先进入主存的一页。若该页修改过,还有存入磁盘。然后要把当前访问的页装入该块,并修改页表和存储分块表的对应标志。(6) 运

10、行界面测试数据:页表长度:9;页框长度:3;页面请求数列:4,4,3,5,1,1,2,3,2执行先进先出FIFO算法结果如下:2)LRU(1) 任务采用先进先出LRU算法实现分页管理的缺页调度,并输出每次调入调出的页号和运行结果。(2) 要求1.实现对LRU算法的模拟实现2.输出每次执行的结果。(3) 原理最近最少使用页面替换算法淘汰的页面是在最近一段时间内最久未被访问的那一页,它是基于程序局部性原理来考虑的,认为那些刚被使用过的页面可能还有立即被使用,而那些在较长时间内未被使用的页面可能不会立即使用。在分页虚拟存储系统中,当硬件发出缺页中断后转操作系统处理缺页中断。如果主存中已无空闲块,可采

11、用LRU算法进行缺页处理。(4) 数据结构void LRU()int length;int lru100=0;int pageLength;int lruPage100=0; int i,j;cout *最近最少使用LRU算法*endl;pageLength=3;length=9; for(i=1;i=length;i+)int flag=0;for(j=1;j0;cc-)lruPagecc=lruPagecc-1;lruPage1=lrui;flag=1;j=pageLength+1;else if(lruPagej=0)for(int vv=j;vv0;vv-)lruPagevv=lruPagevv-1;lruPage1=lrui;j=pageLength+1;flag=1; if(flag=1)elsecout 淘汰lruPagepageLength0;j-)lruPagej=lruPagej-1;lruPage1=lrui;(5) 实现方法当采用LRU算法时,用一个数组构成堆栈,堆栈中各个元素为进程已在主存的页号,为了进行页面置换,可设置一个栈指针,初始化为0.假定分配给每个进程的内存块数固定不变。当队列满需淘汰时,操作系统选择

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号