- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统课程设计报告
题目:一个小型的操作系统
班级:计122(杏)
学号:1213023075
姓名:贾苏
日期:2014/06/23
实验平台
(1)软件平台:
开发系统平台:Windows 7 (64)
Microsoft visual c++ 6.0
测试系统平台:Windows 7 (64)
硬件平台:
cpu:AMD A6-3420 APU
内存:4GB
硬盘:500G
2.所需实现的功能及相应的阐述:
(1)进程调度管理
为了贴切现实中的os,采用RR(轮转调度算法),且不提供用户显式的选择调度算法,即对用户是透明的。
现实中的处理器主频为1Ghz~3Ghz,选取中间点为1.5Ghz,得时间片大小为0.7ns ,为方便计算*10,则时间片大小定为7ns。
假设进程之间的调度和切换不耗费cpu时间。
(2)死锁的检测与处理
检测当然采用的是 银行家算法
处理:让用户选择kill一个进程,释放他所占有的所有资源。
(3)虚拟分页调度管理
虚拟分页:给出的是逻辑值 访问磁盘 将那个数据块放入到内存中
内存中的地址采用一定的算法相对应于磁盘的地址。
特规定 访存采用的是 按字节寻址
内存的大小 128KB
外存的大小 1MB
即整个系统可以提供1MB的逻辑地址空间供进程进行访问(在地址总线足够扫描内存的情况下)。
虚拟地址映射采用:直接映射法
规定的8kB为一个页面,故内存有16个页面,外存有128个页面。
如果产生了内存已满,便会产生缺页中断,淘汰采用FIFO算法,利用一个队列来做。
部分内外存的对应表
0 0,128,2*128+0....... 1 1,129,2*128+1....... 2 2,130,2*128+2.......
16 127,128+16,2*128+16.........
(4)I/O中断处理
设中断来自两个方面:
1.DMA输送开始和结束时的中断
设定一个宏 定义为DMA一次传输的数据量的大小-DmaNum
假定为10kb每次
DMA开始:耗费1ns cpu时间进行中断处理
DMA结束:耗费2ns cpu时间进行中断处理
由操作系统课程知,DMA传输数据时不需要CPU的干预。
随机的中断
发生外部随机中断,cpu无条件的立即响应,并执行中断处理程序,同样的假设中断处理程序的调度和切换不耗费cpu时间。
(5)内存地址越界或内存不足
进程访问内存时超过了进程所要的最大值,此时发生中断,已达到内存保护的功能。
内存不足时即为当前的动态地址重定位寄存器中的值+进程所需的内存大小超过了内存的上限,此时进行内存紧凑,同时修改被移动的进程中的各个有关参数。
3.总体设计
4.程序所需的数据结构及其抽象过程
先定义本次操作系统外设的资源,假设有A类资源10个,B类资源5个,C类资源6个-NeedRescourse;
作业中的各个进程都需要一个代号-ProcessName,各个进程到来的时间不同,故需要记录一下-ArriveTime,每个进程所需要的cpu时间是不够的-NeedCpuTime,每个进程所需的内存空间大小是不一样的-NeedMem。
各个进程中的任务是不同的故需要预先设定本进程中所要执行的操作类型-OpKind,如果是计算型的直接给出所需要的cpu时间即可,如果是I/O型的还需要给出所传输的数据量的大小-NeedTranDataNum,在此可以给OpKind做一个union型的结构。
多道程序程序在运行的过程中需要对进程所需内存的地址进行动态地址重定位,故在系统之中需要设置一个动态地址重定位寄存器,其中的内容是下次进程可以使用的内存始址-DynReg。
抽象结果:
struct Process{
char ProcessName[10];//进程的名字
int ArriveTime; // ns级别
int NeedCpuTime; //此进程所需要的时间
int NeedMem; //所需要的cpu时间
FlagForOp OpKind; //用于指示是何种操作
int NeedTranDataNum; //给IO用的数据块
int OpCpus; //计算类型的操作所需的cpu时间
int NeedRescourse[3] ;//需要资源的数目 NULL代表不需要使用
Process *next;
};
5.详细设计
原创力文档


文档评论(0)