操作系统课程设计报告2(1)_第1页
操作系统课程设计报告2(1)_第2页
操作系统课程设计报告2(1)_第3页
操作系统课程设计报告2(1)_第4页
操作系统课程设计报告2(1)_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、操作系统课程设计实验_进程管理一、实验目的1. 开发一个函数,建立进程控制块和资源控制块结构,并实现 相关数据结构的初始化。2. 开发一系列操作,由进程调用这些操作,达到控制进程申请 或释放各种资源的目的。通过实验理解进程的概念,进程的组成(PCB结构),进程的并 发执行和操作系统进行进程管理的相关原语(主要是进程的创 建、执行、撤消)。二、需求分析用C语言编程模拟进程管理,至少要有:创建新的进程;查 看运行进程;换出某个进程;杀死运行进程以及进程之间通信 等功能。三、实验环境Windows 操作系统、VC+6. 0C 语言(C-free5.0)4、详细设计程序流程图i:开始数据结构:算法设计

2、:statc=O 杀死state=l 就绪state=2 等待state=3运彳亍(1)进程控制块信息struct jincheng_type int pid;int youxian:int daxiao;int state;int message:;(2) 进程信息初始化struct jincheng_type neicun20:int shumu=0, pid_l:int max=0;int number=0:(3) 创建进程的算法void create ( )/*创建一个进程的示例*/if(shumu=20)printf Cn内存已满,请先结束或换出进程n);elseprintf Cn请

3、输入新进程的pidn);scanf(%d,&neicunshumu. pid);printf (n请输入新进程的优先级);scanf(w%d*,&neicunshumu. youxian); printf(*n请输入新进程的大小n);scanf(w%d*,&neicunshumu. daxiao);printfCXn创建进程时令其状态为就绪);scanf(”d, &neicunshumu+l. daxiao);printf Cn创建进程信息n);scanf(”d, &neicunshumu+1. message);neicunshumu. state=l;shumu+;(4) 査看运行进程算法

4、void run()int max=0;int vpid;for(int i=0;ishumu;i+)if (neicuni. flag=l)&(neicuni. youxian=neicunmax. youxian) max=i;neicunmax. flag=3;printf Cn 当前运行进程程序名:n%d, neicunmax. pid);printf (wn 该进程的优先级:n%d, neicunmax, youxian);printf (wn 该进程的运行时间:n%d*, neicunmax, daxiao);printf (wn 该进程的状态:n%d, neicunmax, fl

5、ag);printf (wn 该进程的信息是:n%d, neicunmax, message); vpid=getch();(5) 换出进程算法void huanchuOint i, k, d:for(int i=0;ishumu;i+)if (neicunij. flag=l)&(neicuni. youxian=neicunmax. youxian) max=i;neicunmax. flag=3:if (max=shumu-l)printfC没有处于等待序列的进程);elsefor (k=max+l; kshumu; k+)neicunk. flag=2;printfCXn处于等待序列的

6、进程有:);for (k=max+l: kshumu; k+)printf(n%d, neicunk. pid);printfCn请选择要唤醒的进程:);scanf&k);i=max:while(neicuni. pid!=k)i+;neicun订.flag=l;printf Cn%d进程已被唤醒,k);d=getche();(6) 杀死进程算法void killO/*杀死某个进程*/int i=0, k, b;printf(*n请输入要杀死的进程:”);scanf&k);while(neicuni. pid!=k)i+;neicuni. daxiao=0;neicuni. pid=O:nei

7、cuni.youxian=0;neicuni.flag=O;if (i=(shumu-l)shumu;elsefor(int j=i+l;j0&tpidlsuper)(ready-super) /*优先级最大者,插入队首*/p-link=ready;ready=p;else /*进程比较优先级,插入适当的位置中*/first=ready;second=f i rst-link;while(second!=NULL)if (p-super) (second-super) /*若插入进程比当前进程优先数大,*/ /*插入到当前进程前而*/p-link=second:first-link=p;sec

8、ond=NULL;insert=l;else /*插入进程优先数最低,则插入到队尾*/first=first-link;second=second-link;if(insert=0) first-link=p;4. 建立进程控制块,进程撤销函数,进程就绪函数disp(PCB * pr) /*建立进程显示函数,用于显示当前进程*/check() /*建立进程查看函数*/destroy0 /*建立进程撤消函数(进程运行结束,撤消进程)*/running() /*建立进程就绪函数(进程运行时间到,置就绪状态*/5、程序测试过程(截图)输入总共要输入的进程数:输入进程1的信息:输入进程2的信息第一个时

9、间片:将优先级最高的3投入运行,其他处于等待状态:第二个时间片:将3的优先级减一,将优先级第二的2进程投入运行其他处于等待状态:第三个时间片:将进程2的优先级减一,将优先级第一的进程3投入运行,其他处于等待状态:a J:ljinchengdiaodu.exe当前运行进程:3qnane state supei*ndtine3R231当前就绪进程:qnane state superndtine1w11 0qnane state superndtine2w12 1按enter键继续runtineruntineruntine第四个时间片:将进程3的优先级减一,将队列首元进程1投入运行,其他处于等待状态

10、:第五个时间片:将队列首元进程2投入运行,进程3处于等待状态: J:ljinchengdiaodu.exe. ca | 回继续 *当前运行进程:2qnanestatesuperndtineruntine2R121当前就绪进程:qnanestatesuperndtine3u132runtine进程完成.犍继续 .第六个时间片:将进程3投入运行,此时无等待进程: eJ:ljinchengdidodu.exe*进程(2J完成. 按entei键继续当前运行进程:3一qnaraestatesuperndt ine3R132runt ine当前就绪进程:进程I3J完成.按enter键纟囂_二完成,安任意键

11、退出:实验三存储管理1、实验目的:设计一个虚拟存储区和内存工作区,并使用下述算法计算访问命中 率。(1) 先进先出的算法(FIFO)(2 )最近故少使用算法(LRU)(3) 最佳淘汰算法(OPT)(4) 故少访问页面算法(LFU)(5 )故近最不经常使用算法(NUR)(6)时钟算法(CLOCK)命中率二仃一页面失效次数)/页地址流长度二、需求分析程序设计本实验的程序设计基本上按照实验内容进行。即首先用Srand ()和rand ()函数定义和产生指令序列,然后将指令序列变换成相应的页地址流,并针对不同的算法计算出相应的命中率。相关定义如下:1. 数据结构(1) 页面类型typedef stru

12、ctint pn, pfn, counter, time;pl_type;其中pn为页号,pfn为面号counter为一个周期内访问该页面次数,time为访问时间。(2) 页面控制结构struct pfc_structint pn, pfn;struct pfc_struct *next;;typedef struct pfc_struct pfc_type;pfc_typepfctotal_vp, *freepf_head, *busypf_head, *busypf_tail;其中pfctotal_vp定义用户进程虚页控制结构,*freepf_head为空页面头的指针,*busypf_he

13、ad为忙页面头的指针,*busypf_tail为忙页面尾的指针。2. 函数定义(1) void initialize!():初始化函数,给每个相关的页面赋值。voidFIFOO:计算使用FIFO算法时的命中率。voidLRUO:计算使用LRU算法时的命中率。voidOPTO:计算使用OPT算法时的命中率。voidLFUO:计算使用LFU算法时的命中率。voidNURO:计算使用NUR算法时的命中率。3. 变量定义(1) int atatal_instruction:指令流数据组。(2) int pagetotal_instruction:每条指令所属页号。(3) int offset tota

14、l_instruction:每页装入 10 条指令后取模 运算页号偏移值。(4) int total_pf :用户进程的内存页面数。(5) int diseffect :页面失效次数。三、实验环境Windows 操作系统、VC+6.0C 语言(C-free5. 0)4、详细设计程序流程图:模块划分:intinitialize(int);intFIFO(int);intLRU (int);intLFU(int);intNUR(int);intOPT (int);intCLOCK (int);五、程序测试过程(截图)随机生成320个数:p他Z.01L3ZZ0TP969T9T88T99TETCZTS

15、ST9乙TZbl9TE28298308T乙998T08ZSTZ乙6Z乙9Z62TCZSfrZ6乙S69归Z0T8IAZ乙09UZ8frlZUTHZ.82ie9EZ6ZT661izbt必的XVZSTIUl8869?dZTE20169ST?zz61861ceiT0168180EEl6S96T6b环963乙8S619TE8TZ96382220TV96ZT96?0STCTE2ZTT8ZZ9TZST9Z6T8TT608ZT992乙SZEZ9TtZTZ289T乙6TZ2TS0T0?SIT6620ZfrS8908ST8bTZTSSC乙乙T乙ST9ZZJ筋Z68STTTT2TSZ26Tfr9Z.2ZTZ0乙Z

16、T02乙frVZSSZMT8969?ESIT6TS23t-2811ETZZZ091三0639lTH1V918E厶乙乙S6188621381El吹ST?8810TZT9乙SS61乙690?SZZ938ET8337VTTV626TTT6TiZS9乙工08TTH9TZ,xai|upn6nn3unj:f. tJ:lcLjncrugunli.exc?pe&c F i*rt mo n pPIFO = 0.53751.RU =0.5437LfU :(J.S281NURzCJ.SlSGOPT =D5313CI-OCK = R .5 page *es FI PO = 0.5-437LRU :(4.5*43?Lf

17、U =.54G9NURZ0.540GOPT:A.5SHHClock =. 541376 &piFO=U.5GBViRU :0.55G3I-FU =0.55G3NIIR = .575nOPT =0.5719CLOCK = 0.559-1r7 pcfju mmu uFIFO:0.57X9KRII sR-5719Lfu S.SSXNUR=0.56250PT:0.6000CLOCK = W.5VX9p8 pcgu F-a FIFO=H.5719I-RU =0.58751.FU =0.57X9 J:lcunchuguanli.exe*CLOCK:0.865629 pace fuames FIFO:0.8625LRU =08656I.FU 二0 8594NURW 8656OPT =0.8938CLOCK:。.868830 pane i*AfnesF

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论