欢迎来到天天文库
浏览记录
ID:58590199
大小:953.56 KB
页数:39页
时间:2020-10-18
《一个小型的操作系统设计与实现.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、,.南通大学计算机科学与技术学院操作系统课程设计报告专业:计嵌151学生姓名:王志宏学号:1513052018时间:2017/6/28;.,.设计一个小型的操作系统设计要求将本学期三次的实验集成实现:1.中断处理2.作业调度3.PV原语4.死锁5.页面替换6.磁盘调度(一)设计流程图主流程图开始的图形界面中断处理作业调度PV原语死锁页面替换磁盘调度哲时先银先L先学钟来行来家进R先家先吃先U服服通算出算务法务;.心算法,.1.中断处理模拟时钟中断的产生及设计一个对时钟中断事件进行处理的模拟程序。计算机系统工作过程中,若出现中断事件,硬件就把它记录在中断寄存器中。中断寄存器的每一
2、位可与一个中断事件对应,当出现某中断事件后,对应的中断寄存器的某一位就被置成―1‖。处理器每执行一条指令后,必须查中断寄存器,当中断寄存器内容不为―0‖时,说明有中断事件发生。硬件把中断寄存器内容以及现行程序的断点存在主存的固定单元,且让操作系统的中断处理程序占用处理器来处理出现的中断事件。操作系统分析保存在主存固定单元中的中断寄存器内容就可知道出现的中断事件的性质,从而作出相应的处理。本实习中,用从键盘读入信息来模拟中断寄存器的作用,用计数器加1来模拟处理器执行了一条指令。每模拟一条指令执行后,从键盘读入信息且分析,当读入信息=0时,表示无中断事件发生,继续执行指令;当读入
3、信息=1时,表示发生了时钟中断事件,转时钟中断处理程序2.作业调度1)先来先服务FCFS开始初始化进程控制块,让进程控制块按进程到达先后顺序让进程排队调度数组中首个进程,并让数组中的下一位移到首位计算并打印进程的完成时刻、周转时间、带权周转时间其中:周转时间=完成时间-到达时间带权周转时间=周转时间/服务时间更改计时器的当前时间,即下一刻进程的开始时间当前时间=前一进程的完成时间+其服务时间N数组为空;.,.Y结束先来先服务算法流程3.PV原语1)哲学家吃通心面问题哲学家吃通心面:在这道题目里,每把叉子必须互斥使用,当一位哲学家吃通心面之前必须执行两个P操作,获得自己左右两边
4、的叉子,在吃完通心面后必须执行两个V操作,放下叉子。;.,.4.死锁1)银行家算法5.页面替换;.,.1)先进先出FIFO开始FIFO的缺页中断处理查主存分块表Y有空闲块分配一块可用?NJ=p[HEAD]NJ的修改标志=1?Y输出“将J页复写入交换区”输出“装入L页”调整FIFO队列,将L插入队尾(HEAD=(HEAD+1)modM)修改主存分块表和页表终止FIFO淘汰算法流程2)LRU开始LRU的缺页中断处理;.,.查主存分块表Y有空闲块分配一块可用?N找到栈底元素:J=p[M-1]NJ的修改标志=1?Y输出“将J页送到入交换区”输出“装入L页”调整堆栈,使HEAD所指元素
5、及以下的元素下移P[HEAD]=L修改主存分块表和页表终止LRU淘汰算法流程6.磁盘调度1)先来先服务算法FCFS);.,.(二)实现原理主界面设计一个框架分别去链接处理机管理、存储器管理和缺页调度相关的程序。1.中断;.,.2.作业调度1)先来先服务FCFS(一)任务先来先服务的调度算法实现处理机调度。(二)要求1.实现对FCFS算法的模拟实现2.计算出该算法的平均作业周转时间、平均带权作业周转时间。(三)原理按作业到达CPU时间先后顺序进行非剥夺式调度,先到达CPU的作业先被执行。(四)数据结构structtask_struct{charname;/*进程名称*/intn
6、umber;/*进程编号*/floatcome_time;/*到达时间*/floatrun_begin_time;/*开始运行时间*/floatrun_time;/*运行时间*/floatrun_end_time;/*运行结束时间*/intpriority;/*优先级*/intorder;/*运行次序*/intrun_flag;/*调度标志*/}tasks[MAX];intfcfs()/*先来先服务算法*/进程名链接指针到达时间估计运行时间进程状态进程控制块结构(五)实现方法建立一个链表按照到达CPU的时间从小到大排列,只需从第一个作业(头结;.,.点)依次调度到最后一个作业
7、(尾结点)。(六)运行界面测试数据:作业名到达时间运行时间A028B09C03执行FCFS算法如下:3.死锁假定本系统中的各个所需资源均是独占型资源,在进程运行的过程中不再释放,故只需要遍历链表将各个进程中所需的资源统计出来,只要不大于系统中预设的即可,一旦进程所需的资源大于系统中的最大量,给予用户选择kill一进程,已达到释放资源的目的。死锁检测函数:voidsisuo()死锁解除函数:voidsafe();.,.4.缺页调度1)先进先出FIFO(一)任务采用先进先出FIFO算法实现分页管理的缺页调度
此文档下载收益归作者所有