欢迎来到天天文库
浏览记录
ID:47535485
大小:1.92 MB
页数:26页
时间:2020-01-13
《操作系统课程设计(小型的操作系统)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、操作系统课程设计报告题目:一个小型的操作系统班级:计122(杏)学号:1213023075姓名:贾苏日期:2014/06/231.实验平台(1)软件平台:开发系统平台:Windows7(64)Microsoftvisualc++6.0测试系统平台:Windows7(64)(2)硬件平台:cpu:AMDA6-3420APU内存:4GB硬盘:500G2.所需实现的功能及相应的阐述:(1)进程调度管理为了贴切现实中的os,采用RR(轮转调度算法),且不提供用户显式的选择调度算法,即对用户是透明的。现实中的处理器主频为1Ghz~3Ghz,选取中间点为1.5G
2、hz,得时间片大小为0.7ns,为方便计算*10,则时间片大小定为7ns。假设进程之间的调度和切换不耗费cpu时间。(2)死锁的检测与处理检测当然采用的是银行家算法处理:让用户选择kill一个进程,释放他所占有的所有资源。(3)虚拟分页调度管理虚拟分页:给出的是逻辑值访问磁盘将那个数据块放入到内存中内存中的地址采用一定的算法相对应于磁盘的地址。特规定访存采用的是按字节寻址内存的大小128KB外存的大小1MB即整个系统可以提供1MB的逻辑地址空间供进程进行访问(在地址总线足够扫描内存的情况下)。虚拟地址映射采用:直接映射法规定的8kB为一个页面,故内存
3、有16个页面,外存有128个页面。如果产生了内存已满,便会产生缺页中断,淘汰采用FIFO算法,利用一个队列来做。部分内外存的对应表00,128,2*128+0.......11,129,2*128+1.......22,130,2*128+2.......16127,128+16,2*128+16.........(4)I/O中断处理设中断来自两个方面:1.DMA输送开始和结束时的中断设定一个宏定义为DMA一次传输的数据量的大小->DmaNum假定为10kb每次DMA开始:耗费1nscpu时间进行中断处理DMA结束:耗费2nscpu时间进行中断处理由
4、操作系统课程知,DMA传输数据时不需要CPU的干预。2.随机的中断发生外部随机中断,cpu无条件的立即响应,并执行中断处理程序,同样的假设中断处理程序的调度和切换不耗费cpu时间。(5)内存地址越界或内存不足进程访问内存时超过了进程所要的最大值,此时发生中断,已达到内存保护的功能。内存不足时即为当前的动态地址重定位寄存器中的值+进程所需的内存大小超过了内存的上限,此时进行内存紧凑,同时修改被移动的进程中的各个有关参数。3.总体设计开始内存管理查看运行情况开始运行外存空间查看查看cpu运行内存空间查看死锁检测与解除进程信息查看4.程序所需的数据结构及其
5、抽象过程先定义本次操作系统外设的资源,假设有A类资源10个,B类资源5个,C类资源6个->NeedRescourse;作业中的各个进程都需要一个代号->ProcessName,各个进程到来的时间不同,故需要记录一下->ArriveTime,每个进程所需要的cpu时间是不够的->NeedCpuTime,每个进程所需的内存空间大小是不一样的->NeedMem。各个进程中的任务是不同的故需要预先设定本进程中所要执行的操作类型->OpKind,如果是计算型的直接给出所需要的cpu时间即可,如果是I/O型的还需要给出所传输的数据量的大小->NeedTranDa
6、taNum,在此可以给OpKind做一个union型的结构。多道程序程序在运行的过程中需要对进程所需内存的地址进行动态地址重定位,故在系统之中需要设置一个动态地址重定位寄存器,其中的内容是下次进程可以使用的内存始址->DynReg。抽象结果:structProcess{charProcessName[10];//进程的名字intArriveTime;//ns级别intNeedCpuTime;//此进程所需要的时间intNeedMem;//所需要的cpu时间FlagForOpOpKind;//用于指示是何种操作intNeedTranDataNum;//
7、给IO用的数据块intOpCpus;//计算类型的操作所需的cpu时间intNeedRescourse[3];//需要资源的数目NULL代表不需要使用Process*next;};5.详细设计1.进程信息查看依次遍历全部的链表,并将它们的信息依次打印出来。实现函数名:voidShowProcessInfo()2.死锁的检测和解除假定本系统中的各个所需资源均是独占型资源,在进程运行的过程中不再释放,故只需要遍历链表将各个进程中所需的资源统计出来,只要不大于系统中预设的即可,一旦进程所需的资源大于系统中的最大量,给予用户选择kill一进程,已达到释放资源
8、的目的。死锁检测函数:voidDeedLock()voidDeedLock_LookNeedRescours
此文档下载收益归作者所有