下载此文档

操作系统课程设计报告题目及代码.pdf


文档分类:办公文档 | 页数:约11页 举报非法文档有奖
1/11
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/11 下载此文档
文档列表 文档介绍
该【操作系统课程设计报告题目及代码 】是由【青山代下】上传分享,文档一共【11】页,该文档可以免费在线阅读,需要了解更多关于【操作系统课程设计报告题目及代码 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..模拟操作系统设计设计一个模拟操作系统管理程序,实现以下管理功能::设计一个虚拟存储区和内存工作区,通过产生一个随机数的方法得到一个页面序列,假设内存给定的页面数由键盘输入,分别计算使用下述各方法时的内存命中率:先进先出算法〔FIFO〕、最近最少使用算法〔LRU〕、最正确淘汰算法〔OPT〕、最少页面算法〔LFU〕等。题目三文件系统设计通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。内容:为Linu*系统设计一个简单的二级文件系统,以实现以下功能:(1)login用户登录(2)dir文件目录列表(3)creat创立文件(4)delete删除文件(5)open翻开文件(6)close关闭文件(7)read读文件(8)〔1〕首先确定文件系统的数据构造:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放在磁盘,这样便于查找和修改。〔2〕用户创立的文件,可以编号存储于磁盘上。如file0、file1、file2……等,并以编号作为物理地址,在目录中进展登记。[清华大学?操作系统教程?*丽芬编著题目四设计一个按时间片轮转法进程CPU调度的程序。提示:〔1〕假设系统有5个进程,每个进程用一个进程控制块PCB来代表,PCB中包含进程名、指针、到达时间、估计运行时间、进程状态表。其中,进程名即为进程进标识。〔2〕为每一个进程设计一个要示运行时间和到达时间。〔3〕按照进程到达的先后顺序排成一个循环队列,再设一个队首指针指向第一个到达的进程首址。〔4〕执行处理机调度时,开场选择队首的第一个进程运行。另外再设一个当前运行进程指针,指向当前正运行的进程。〔5〕由于本实验是模拟实验,所以对被选中进程并不实际启运运行,只是执行:。用这两个操作来模拟进程的一次运行。〔6〕进程运行一次后,以后的调度则将当前指针依次下移一个位置,指向下一个进程,即:..以指示应运行进程。同时还尖判断该进程的剩八运行时间是否为零。假设不为零,则等待下一轮的运行;假设该进程的剩余运行时间为零,则将该进程的状态置为完成态C,并退出循环队列。〔7〕假设就绪队列不空,则重复上述的〔%〕和〔6〕步,直到所有进程都运行完为止。(9)在所设计的调度程序中,应包含显示或打印语句,以便显示或打印每次选中进程的名称及运行一次后队列的变化情况。题目5设计一个按先来先效劳调度的算法题目5设计一个按优先级调度的算法题目6设计一个用银行家算法进程资源分配的程序题目7模拟内存管理,实现内存块的分配与回收。内存管理方法可以取以下之一:〔1〕可变分区〔2〕页式存储管理内存分配算法可以取以下之一:〔1〕首次适应算法〔2〕最正确适应算法题目8设计一个SPOOLING假脱机输出的模拟程序题目9模拟设计MS-DOS操作系统中磁盘文件的存储构造题目10模拟设计Linu*。请求页式管理是一种常用的虚拟存储管理技术。本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。〔1〕通过随机数产生一个指令序列,共320条指令。指令的地址按下述原则生成:1〕50%的指令是顺序执行的;2〕25%的指令是均匀分布在前地址局部;3〕25%的指令是均匀分布在后地址局部;具体的实施方法是:1〕在[0,319]的指令地址之间随机选取一起点m;2〕顺序执行一条指令,即执行地址为m+1的指令;3〕在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m';4〕顺序执行一条指令,其地址为m'+1;5〕在后地址[m'+2,319]中随机选取一条指令并执行;6〕重复上述步骤1〕-5〕,直到执行320次指令。〔2〕将指令序列变换成为页地址流设:1〕页面大小为1k;2〕用户内存容量为4页到32页;3〕用户虚存容量为32k;:..按每k存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为:第0条-第9条指令为第0页〔对应虚存地址为[0,9]〕;第10条-第19条指令为第1页〔对应虚存地址为[10,19]〕;...第310条-第319条指令为第31页〔对应虚存地址为[310,319]〕;按以上方式,用户指令可组成为32页。〔3〕计算并输出以下各种算法在不同内存容量下的命中率。1〕先进先出的算法〔FIFO〕;2〕最近最少使用算法〔LRR〕;3〕最正确淘汰算法(OPT):先淘汰最不常用的页地址;4〕最少页面算法〔LFR〕;5〕最近最不经常使用算法〔NUR〕。其中3〕和4〕为选择内容。命中率=1-页面失效次数/页地址流长度在本实验中,页地址流长度为320,页面失效次数为每次相应指令时,该指令所对应的页不在内存的次数。,Linu*或Uni*系统提供函数srand()和rand(),分别进展初始化和产生随机数。例如:srand();语句可初始化一个随机数;a[0]=10*rand()/32767*319+1;a[1]=10*rand()/32767*a[0];..语句可用来产生a[0]与a[1]中的随机数。提示:首先用Srand()和rand()函数定义和产生指令序列,然后将指令序列变换成相应的页地址流,并针对不同的算法计算出相应的命中率。命中率=1-页面失效次数/页地址流长度1、数据构造〔1〕页面类型typedefstruct{intpn,pfn,counter,time;}pl-type;其中pn为页号,pfn为页面号,count为一个周期内该页面的次数,time为时间。〔2〕页面控制构造pfc_struct{intpn,pfn;structpfc_struct*ne*t;};typedefstructpfc_structpfc_type;:..pfc_type*busypf_tail;其中,pfc[total_vp]定义用户进程虚页控制构造,*freepf_head为空页面头的指针,*busypf_head为忙页面头的指针,*busyf_tail为忙页面尾的指针。2、函数定义〔1〕Voidinitialize():初始化函数,给每个相关的页面赋值。〔2〕VoidFIFO():计算使用FIFO算法时的命中率。〔2〕VoidLRU〔〕:计算使用FIFO算法时的命中率。〔4〕VoidOPT〔〕:计算使用OPT算法时的命中率。〔5〕VoidLFU〔〕:计算使用LFU算法时的命中率。〔6〕VoidNUR〔〕:计算使用NUR算法时的命中率。3、变量定义(1)inta[tatal_instruction]:指令流数据组。(2)intpage[total_instruction]:每条指令所属页号。(3)intoffset[total_instruction]:每页装入不敷出0条指令后取模运算页号偏移量。(4)inttotal_pf:用户进程的内存页面数。(5)intdiseffect:页面失效次数。程序清单程序:程序:*RUE1*defineFALSE0*defineINVALID-1*definenull0*otal_instruction320/*指令流长*/*otal_vp32/*虚页长*/*defineclear_period50/*清0周期*/typedefstruct{intpn,pfn,counter,time;}pl_type;pl_typepl[total_vp];/*页面数据构造*/structpfc_struct{/*页面控制构造*/intpn,pfn;:..};typedefstructpfc_structpfc_type;pfc_typepfc[total_vp],*freepf_head,*busypf_head,*busypf_tail;intdiseffect,a[total_instruction];intpage[total_instruction],offset[total_instruction];voidinitialize();voidFIFO();voidLRU();voidOPT();voidLFU();voidNUR();main(){intS,i,j;srand(getpid()*10);/*由于每次运行时进程号不同,故可用来作为初始化随机数队列的种子*/S=(float)319*rand()/32767+1;for(i=0;i<total_instruction;i+=4)/*产生指令队列*/{a[i]=S;/*任选一指令点*/a[i+1]=a[i]+1;/*顺序执行一条指令*/a[i+2]=(float)a[i]*rand()/32767;/*执行前地址指令*/a[i+3]=a[i+2]+1;/*执行后地址指令*/}for(i=0;i<total_instruction;i++)/*将指令序列变换为页地址流*/{page[i]=a[i]/10;offset[i]=a[i]%10;}for(i=4;i<=32;i++)/*用户内存工作区从4个页面到32个页面*/{FIFO(i);LRU(i);:..LFU(i);NUR(i);getchar();}}voidFIFO(total_pf)/*FIFO*/inttotal_pf;/*用户进程的内存页面数*/{inti,j;pfc_type*p,*t;initialize(total_pf);/*初始化相关页面控制用数据构造*/busypf_head=busypf_tail=null;/*忙页面队列头,队列尾*/for(i=0;i<total_instruction;i++){if(pl[page[i]].pfn==INVALID)/*页面失效*/{diseffect+=1;/*失效次数*/if(freepf_head==null)/*无空闲页面*/{p=busypf_head->ne*t;pl[busypf_head->pn].pfn=INVALID;freepf_head=busypf_head;/*释放忙页面队列中的第一个页面*/freepf_head->ne*t=null;busypf_head=p;}p=freepf_head->ne*t;/*按FIFO方式调新页面入内存页面*/freepf_head->ne*t=null;freepf_head->pn=page[i];pl[page[i]].pfn=freepf_head->pfn;if(busypf_tail==null)busypf_head=busypf_tail=freepf_head;else{busypf_tail->ne*t=freepf_head;busypf_tail=freepf_head;:..}freepf_head=p;}}}voidLRU(total_pf)/*LRU*/inttotal_pf;{intmin,minj,i,j,present_time;initialize(total_pf);present_time=0;for(i=0;i<total_instruction;i++){if(pl[page[i]].pfn==INVALID)/*页面失效*/{diseffect++;if(freepf_head==null)/*无空闲页面*/{min=32767;for(j=0;j<total_vp;j++)if(min>pl[j].time&&pl[j].pfn!=INVALID){min=pl[j].time;minj=j;}freepf_head=&pfc[pl[minj].pfn];pl[minj].pfn=INVALID;pl[minj].time=-1;freepf_head->ne*t=null;}pl[page[i]].pfn=freepf_head->pfn;pl[page[i]].time=present_time;freepf_head=freepf_head->ne*t;}elsepl[page[i]].time=present_time;present_time++;}:..voidNUR(total_pf)/*NUR*/inttotal_pf;{inti,j,dp,cont_flag,old_dp;pfc_type*t;initialize(total_pf);dp=0;for(i=0;i<total_instruction;i++);{if(pl[page[i]].pfn==INVALID)/*页面失效*/{diseffect++;if(freepf_head==null)/*无空闲页面*/{cont_flag=TRUE;old_dp=dp;while(cont_flag)if(pl[dp].counter==0&&pl[dp].pfn!=INVALID)cont_flag=FALSE;else{dp++;if(dp==total_vp)dp=0;if(dp==old_dp)for(j=0;j<total_vp;j++)pl[j].counter=0;}freepf_head=&pfc[pl[dp].pfn];pl[dp].pfn=INVALID;freepf_head->ne*t=null;}pl[page[i]].pfn=freepf_head->pfn;freepf_head=freepf_head->ne*t;}else:..if(i%clear_period==0)for(j=0;j<total_vp;j++)pl[j].counter=0;}}voidOPT(total_pf)/*OPT*/inttotal_pf;{inti,j,ma*,ma*page,d,dist[total_vp];pfc_type*t;initialize(total_pf);for(i=0;i<total_instruction;i++){if(pl[page[i]].pfn==INVALID){diseffect++;if(freepf_head==null){for(j=0;j<total_vp;j++)if(pl[page[j]].pfn!=INVALID)dist[j]=32767;elsedist[j]=0;d=1;for(j=i+1;j<total_instruction;j++){if(pl[page[j]].pfn!=INVALID)dist[page[j]]=d;d++;}ma*=-1;for(j=0;j<total_vp;j++)if(ma*<dist[j]){ma*=dist[j];ma*page=j;}freepf_head=&pfc[pl[ma*page].pfn];freepf_head->ne*t=null;pl[ma*page].pfn=INVALID;:..pl[page[i]].pfn=freepf_head->pfn;freepf_head=freepf_head->ne*t;}}}voidLFU(total_pf)/*LFU*/inttotal_pf;{inti,j,min,minpage;pfc_type*t;initialize(total_pf);for(i=0;i<total_instruction;i++){if(pl[page[i]].pfn==INVALID){diseffect++;if(freepf_head==null){min=32767;for(j=0;j<total_vp;j++){if(min>pl[j].counter&&pl[j].pfn!=INVALID){min=pl[j].counter;minpage=j;}pl[j].counter=0;}freepf_head=&pfc[pl[minpage].pfn];pl[minpage].pfn=INVALID;freepf_head->ne*t=null;}pl[page[i]].pfn=freepf_head->pfn;freepf_head=freepf_head->ne*t;}elsepl[page[i]].counter++;}:..voidinitialize(total_pf)/*初始化相关数据*/inttotal_pf;/*用户进程的内存页面数*/{inti;diseffect=0;for(i=0;i<total_vp;i++){pl[i].pn=i;pl[i].pfn=INVALID;/*置页面控制构造中的页号,页面为空*/pl[i].counter=0;pl[i].time=-1;/*页面控制构造中的次数为0,时间为-1*/}for(i=1;i<total_pf;i++){pfc[i-1].ne*t=&pfc[i];pfc[i-1].pfn=i-1;}pfc[total_pf-1].ne*t=null;pfc[total_pf-1].pfn=total_pf-1;freepf_head=&pfc[0];}

操作系统课程设计报告题目及代码 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数11
  • 收藏数0 收藏
  • 顶次数0
  • 上传人青山代下
  • 文件大小801 KB
  • 时间2024-04-17