ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:268.50KB ,
资源ID:4097373      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4097373.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(OS实验报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

OS实验报告.docx

1、OS实验报告操作系统实验报告学院:计算机与软件系:计算机科学与技术实验一进程调度设计一、实验目的:进程是操作系统的重要概念之一,进程调度是操作系统的主要内容此实验要求学生独立使用高级语言编写一个进程调度程序,调度算法可任意选择,本实验加深学生对进程调度及其算法的理解。二、实验内容:设计一个有几个进程并行的进程调度程序,每个进程有一个进程控制块pcb表示,进程控制块通常包括以下内容:进程名,进程优先数,进程需要运行的时间。站用cpu的时间一起运行状态等,并且可以按照调度算法的不同而增删。三、实验要求:1 调度程序应包含2-3种的不同的调度算法,运行时可以任意选取一种,以利于各种方法的比较分析。2

2、 系统应能显示或打印各进程的状态和参数变化情况,便于观察。四、实验环境:dev-c +;五、实验步骤:1 本程序可选用优先数法或简单轮转法对5个进程进行调度,每个进程处于运行(R),就绪(W)和完成(F)三种状态之一,并假设起始状态为就绪状态(W)。2 为了便于处理,程序中进程的运行时间以时间片为单位计算,各进程的优先数或轮转时间片数以及进程需要运行的时间片数,均由伪随机数发生器产生。3 优先数法。进程就绪按优先数大小从小到大排列,链首进程首先投入运行。每过一个时间片运行进程所需要的时间片数减1,优先数也减3。接着比较现行进程和就绪链首进程的优先数,若仍是现有进程的高或者相同。则现有进程继续运

3、行,否则调度就绪队列首进程投入运行,原进程按优先数大小插入就绪队列并且改变相应的进程状态。直至所有进程运行完各自的时间片数。4 简单轮转法。进程就绪链按各自进入的先后顺序排列,进程每次占用处理机的时间按其重要程度等等入进程控制快的轮转时间片书记录项,每过一个时间片。运行进程占用处理机德时间片书加1,然后比较占用处理机德时间片数是否与该进程的轮转时间片书相等。若相等说明已经达到轮转时间应将进程排到就绪链末尾,调度链首进程占用处理机,并且改变进程状态直至所有进程完成各自的时间片。程序流程框图如下;否是5 源程序如下:#include #include #define furthest 5struc

4、t process int id; int priority; int cputime; int alltime; char state; int next; prochainfurthest+1; int procnum; int rand(); int algo; int run,head,tail,j;void print() int k,p; for(k=1;k=40;k+)printf(=); printf(nrunning proc ); printf(waiting queue); printf(n %d,prochainrun.id);/ ? p=head; while(p!=

5、0) printf(%5d,p); p=prochainp.next; printf(n); for(k=1;k=40;k+) printf(=); printf(n); for(k=1;kfurthest+1;k+) printf(%5d,prochaink.id); printf(n); printf(priority ); for(k=1;kfurthest+1;k+) printf(%5d,prochaink.priority); printf(n); printf(cputime ); for(k=1;kfurthest+1;k+) printf(%5d,prochaink.cput

6、ime); printf(n); printf(alltime ); for(k=1;kfurthest+1;k+) printf(%5d,prochaink.alltime); printf(n); printf(stste ); for(k=1;kfurthest+1;k+) printf(%5c,prochaink.state); printf(n); printf(next ); for(k=1;kfurthest+1;k+) printf(%5d,prochaink.next); printf(n); insert(q) int p,s; p=head; s=prochainhead

7、.next; while(prochainq.priority prochains.priority)&(s!=0) s=prochains.next; p=s; prochainp.next=q; prochainq.next=s; void insert2() prochaintail.next=run; tail=run;prochainrun.next=0; void init() int i; if(algo=2) for(i=1;ifurthest+1;i+) prochaini.id=i; prochaini.priority=(rand()+1)%4+1; prochaini.

8、cputime=0; prochaini.alltime=(rand()+1)%7+1; prochaini.state=w; prochaini.next=0; if(prochaini.priorityprochainhead.priority)&(head!=0) insert(prochaini.id); else prochaini.next=head; head=prochaini.id; else for( i=1;ifurthest+1;i+) prochaini.id=i; prochaini.priority=(rand()+1)%3)+1; prochaini.cputi

9、me=0; prochaini.alltime=(rand()+1)%7+1; prochaini.state=W; prochaini.next=(i+1)%(furthest+1); head=1; tail=furthest; prochainfurthest.next=0; run=head; prochainrun.state=R; head=prochainhead.next; prochainrun.next=0; print(); void prisch() while(run!=0) prochainrun.cputime+=1; prochainrun.priority-=

10、3; prochainrun.alltime-=1; if(prochainrun.alltime=0) prochainrun.state=F; prochainrun.next=0; if(head!=0) run=head; prochainrun.state=R; head=prochainhead.next; else prochain0.id=prochainrun.id; run=0; else if(prochainrun.priorityprochainhead.priority)&(head!=0) prochainrun.state=W; insert(run); run

11、=head; prochainrun.state=R; head=prochainhead.next; print(); void timesch() while(run!=0) prochainrun.alltime-=1; prochainrun.cputime+=1; if(prochainrun.alltime=0) prochainrun.state=F; prochainrun.next=0; if(head!=0) run=head; prochainrun.state=R; head=prochainrun.next; else prochain0.id=prochainrun

12、.id; run=0; else if(prochainrun.cputime=prochainrun.priority)&(head!=0) prochainrun.state=W; prochainrun.cputime=0; insert2(); run=head; prochainrun.state=R; head=prochainrun.next; print(); main() /*MAIN PROGRAM*/agan:printf(type the algorithm is(1:RR,2:PRIO):); scanf(%d,&algo); if (algo=2) printf(o

13、utput of priority.n); init(); prisch(); else if(algo=1) printf(output of round robin.n); init(); timesch(); else printf(try again,pleasen); goto agan; for(j=1;j=40;j+) printf(=); printf(nn); for(j=1;j=40;j+) printf(=); printf(nn); printf(system finishedn); getch();6运行过程及实验结果截图如下:时间片轮转结果:优先级算法结果:六 思考

14、题进程调度算法包括:适于长作业的先来先服务算法,适于短作业的短作业优先调度算法。优先权调度算法,响应系统及时的分时系统中的轮转调度算法。实验二存储管理一、实验目的:存储管理的主要功能之一是合理的分配空间,请求页式管理是一种常用的虚拟存储管理技术。此实验要求学生通过请求页式管理的页面置换算法的模拟设计来了解虚拟存储技术的特点,掌握请求页式管理的页面置换算法。二、实验内容:1 页表中增加是否修改过的标志。2 设计地址转换程序来模拟硬件的地址转换和缺页中断。3 编制一个先进先出算法的调度程序 4 自行确定指令序列检查程序的正确性。三、实验要求:模拟页式虚拟存储管理中硬件的地址转换和缺页中断,并用先进

15、先出算法(FIFO)处理缺页中断。四、实验步骤::当装入一个页面必须置换列一个页面时,被选中的页面未被修改则不必重新写入磁盘,因此在页面中增加修改标志:0表示未被修改,1表示执行过修改。2 地址转换程序:当所访问的页在主存时形成绝对地址,可以使用输出转换后的绝对地址来表示一条指令的完成。当所访问的页不再主存时则输入此页页号表示一次缺页中断。3 先进先出调度程序。4 试验流程控制如下;5 6 源代码如下:#includeusing namespace std;int pagenum=0; /内存的页面数int total=0; /要访问的叶面总数int lacknumber=0; /缺页的总数i

16、nt main() int array120; int y=0,x=0; /0代表没有内容 for(y=0;y2;y+) for(x=0;x20;x+) arrayyx=-1;/初始化为-1 int seque20=0;/访问序列 coutpagenum; coutput in xulie(input -1 end):; for( int i=0;inum; if(num!=-1) sequei=num; total+;/总共序列数 else sequei=num;break; couttatal number is totalendl; /总的页面数 int j=0; for(i=0;ipa

17、genum;i+) /刚开始置换前pagenum个空页面 if(ipagenum) array0i=sequei; coutye miansequeiput inendl; coutnoe the xuelie is ; for(int j=0;jpagenum;j+) coutarray0j ; cout(-1 standfor nothing)endl; coutendl; /xiuliehao 小于页号结束 int kk=0;for(i=pagenum;itotal;i+) int flag=0; for(int k=0;kpagenum;k+) if(array0k=sequei) f

18、lag=1;break; coutendl; if(flag=1) coutye mian sequei put inendl; coutnow the xuelie is; for(int j=0;jpagenum;j+) coutarray0j ; coutendl; if(flag=0) int tem=array0kk; array0kk=sequei; coutye mian sequei put inendl; coutlackpage tem insteadendl; coutnoe the xuelie is ; for(int j=0;jpagenum;j+) coutarray0j ; coutendl; kk+; lacknumber+; /缺页数 if(kk=pagenum) kk=0; coutlack =lacknumber/total=float(lacknumber)/float(total)endl; 5实验运行结果:五 思考题。请求分页存储管理每次调入和换出的都是固定长度的页面,相比较请求分段存储管理比较简单,因此请求分页比较常用。在请求分页管理中需要有页表机制,地址变换机构以及缺页中断机制的支持。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1