计算机操作系统实验报告_第1页
计算机操作系统实验报告_第2页
计算机操作系统实验报告_第3页
计算机操作系统实验报告_第4页
计算机操作系统实验报告_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

X大学数学与计算机科学(软件)学院实验报告课程名称:计算机操作系统学号:姓名:专业:软件工程年级:202X级学期:202X年第2学期202X年10月24日

试验一Linux操作系统的使用和分析一、试验目的本试验重要学习和掌握Linux操作系统的主线应用。通过本试验,学生可以纯熟掌握Linux环境下多种主线操作命令接口的应用。从系统平安角度出发,学习掌握系统的主线平安优化和配置,在操作系统层次进行有效平安加固,提高Linux系统的平安性能。通过本次试验,有助于学生深入理解操作系统原理中的有关内容,加深认识。二、试验规定1、纯熟掌握Linux系统的主线操作命令。2、熟悉Linux系统的主线配置。3、完毕Linux系统的平安加固。4、掌握一种以上的网络应用软件的安装、配置与应用。三、试验内容系统的启动,如图:关闭使用shutdowm尚有列出文献夹内的信息ls,cp复制拷贝,touch创立文献命令等等.gz,解压如图:然后修改安装途径:之后用make编译文献在安装途径/home/liaoenrui/11里的etc中修改文献的组名和顾客名:将groud命名ftp,user也命名为ftp,然后用groudadd和useradd命令将这两个添加在该目录的sbin目录下:最终运行文献,./profile即可四、试验总结通过本次的操作系统的上机试验,我纯熟了Linux系统的主线操作命令,并且对安装文献有更深刻的理解,比方在上述安装过程中对于通过froftpd来架构linux的ftp,由于之前都是用window系统,因此对于这些非常的生疏,因此在请教了多人和上网查询之后,总算有所理解,并且成功的将此试验顺利完毕。在本次试验中,我发现自己的动手能力又有很大的提高,信任后来继续努力的话会有更大的进步,当然这也要归功于老师的教导。参照文献[1]NeilMaththewRichardStonesLinux程序设计第四版人民邮电出版社[2]周茜,赵明生.中文文本分类中的特性选择研究[J].中文信息学报,202X,Vol.18No.3试验二Linux进程通信一、试验目的1〕理解有关Linux系统调用;2〕学习有关Linux的进程创立,理解进程创立后两个并发进程的执行。二、试验内容在Linux环境下,用C/C++言语编程,使用系统调用fork创立进程多种子进程。(1)调试并完毕如下程序,完毕试验规定:#include

"stdio.h"#include

"sys/types.h"#include

"unistd.h"int

main(){pid_tpid1;pid_tpid2;pid1

=

fork();pid2

=

fork();printf("pid1:%d,pid2:%d\n",pid1,pid2);}规定:请说出执行这个程序后,将一共运行几种进程。观测运行成果,并给出分析与解释。答:A.执行这个程序后,将一共运行4个进程。运行成果如下:分析与解释:fork()函数可以建立子进程,且使得子进程得到父进程地址空间的一种复制;并且,当创立成功时,假如是父进程则返回0,子进程则返回子进程的ID,不过,fork()创立的进程并不是从该程序开头开始执行,它只是和父进程同样继续执行后续代码,因此在之后的语句中,父子进程同步创立一种进程,就形成了四个进程,如图上所示。因此,,在上面的截图中,第一次fork()函数时成功产生了父子进程pid分别为2775和0,第二次使用fork()函数时父子进程又各产生了一对父子进程父进程产生的父子进程的pid分别为2776和0,子进程产生的父子进程的pid分别为0和2777。由于进程是并发的,他的调度我们无法干预,因此出现的成果并非都是一成不变的,执行一再后,输出的次序有也许不一样样。(2)参照下面的有关程序实例,编写一种管道试验程序,完毕两个进程之间的数据通信。规定:父进程次序写入假设干个字符串,子进程次序读出内容,并写入文献piple.txt,并显示出来。〔写出设计环节、数据构造、关键代码、试验成果及其分析阐明〕答:①设计环节:用pipe()创立一种管道fd,用fork调用产生两个进程〔父进程和子进程〕;将父进程将要传播给子进程的信息写在readbuffer;然后使子进程通过读端用write函数从缓存中读取父进程传播的消息。②数据构造:定义一种字符数组string用于寄存父进程将要传播给子进程的消息,使用read函数和write函数配对完毕管道的运行。③关键代码:#include<unistd.h>#include<stdlib.h>#include<fcntl.h>#include<sys/stat.h>#include<sys/types.h>intmain(void){ intfd[2],out; pid_tchildpid; charstring[]={"abcdefghijklmnopqrstuvwxyz"}; charreadbuffer[27]; pipe(fd); childpid=fork(); if(childpid==-1) { printf("forkerror"); exit(1); } elseif(childpid!=0) { close(fd[0]); write(fd[1],string,sizeofstring); exit(0); } else { close(fd[1]); read(fd[0],readbuffer,27); printf("%s\n",readbuffer); out=open("pipo.txt",O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR); write(out,readbuffer,80); } return0;}④试验成果:⑤分析阐明:管道是用于进程间通信的一种通信机制。Pipe函数在两个程序之间传递数据不需要启动shell来解释祈求的命令,同步还提供了对数据的更多操纵,因此用它来创立管道非常以便。三、试验总结在做这个试验之前,一直觉得这是一种非常复杂的试验,一直不太情愿去碰它。总算不得不做了,发现其实没有想象中的那么难。并且,通过这个试验,让我理解了有关页面调度方面的某些知识,对于系统是怎样调度页面的愈加的清晰明了。通过这次的试验,使我学到了不少有用的知识,更重要的是,做试验的过程,思索问题的措施,这与做其他的试验是通用的,真正使我们受益匪浅。在试验课上,由于时间关系以及考虑不全面,因此导致试验初始时的不完善,这启发了我要进行多方面的思索和研究,尤其是对于进程并发执行这种具有不确定性的问题,更要从多角度进行思索,并动手进行实际操作以及检查,才能验证自己的想法与否对的。四、参照文献[1]中国IT试验室[2]陈向群,马洪兵.现代操作系统[M].X:机械工业出版社,202X.7[3]黄志洪,钟耿扬,Linux操作系统[B].X:冶金工业出版社,202X.[4]周巍松.Linux系统分析与高级编程技术[M].X:机械工业出版社,202X

试验三页面置换算法一、试验目的本试验重要对操作系统中祈求分页式内存治理及其应用的某些关键算法进行模拟。学生通过设计与完毕Clock算法,可以强化对对应理论的理解,并对理解操作系统内部的主线处理原理与过程也有诸多益处。二、试验规定主线规定:描述Clock算法的主线原理、必要的数据构造、算法执行流程图、编码完毕。1〕初始化:输入作业可占用的总页框数,初始化置空。2〕输入序列:输入一种页号访问祈求序列,依次占用对应页框,直至所有占用;3〕Clock算法:当页框所有占用后,对于后续新的页号访问祈求,执行Clock算法,淘汰1个页面后装入新的页号。4〕显示目前分派淘汰序列:显示淘汰的页号序列。描述Clock算法的主线原理、必要的数据构造、算法执行流程图、编码完毕。三、试验内容主线原理:时钟页面置换算法是把所有的页面都保留在一种类似钟面的环形链表中,一种表针指向最老的页面,在采纳祈求分页机制的操作系统中,当运行一种程序的时候,假设要访问的页面不在内存中而需要把它们调入内存,但此时内存已无空闲空间,为了保证该进程能正常运行,需选择内存中临时不用的页面调出到磁盘互换区。选择调出哪个页面,由页面算法决定。页面置换算法的好坏,直接影响系统的性能,因此一种好的页面置换算法,应尽量选择调出较长时间内不会再访问的页面,以保证较低的缺页率。如下图。当发生缺页中断时,算法首先检查表针指向的页面,假如它的R位是0就淘汰该页面,并把新的页面插入这个位置,然后把表针前移一种位置;假如R位是1就清除R位并把表针前移一种位置,反复这个过程直到找到了一种R位为0的页面为止改良型的Clock算法的思想:如图:在将一种页面换出时,假如该页已被修改正,便须将它重新写到磁盘上;但假如该页未被修改正,则不必将它拷回磁盘。同步满足这两条件的页面作为首先淘汰的页。由访问位uesbit和修改位change可以组合成下面四种类型的页面:1类〔usebit=0,change=0〕:该页近来既未访问、又未修改,是最对的淘汰页。2类〔usebit=0,change=1〕:该页近来未访问,但被修改,并不是好的淘汰页。3类〔usebit=1,change=0〕:近来已被访问,但未被修改,该页有也许再被访问。4类〔usebit=1,change=1〕:近来已被访问且被修改,该页有也许再被访问。在内存中的每个页必然是这四类页面之一,在进行页面置换时,可采纳与简朴Clock算法相类似的算法,其差异在于须同步检查访问位和修改位,以确定该页是四类页面中的哪一种。此算法称为改良型Clock算法。其执行过程可提成如下三步:〔1〕从指针所从目前位置开始扫描循环队列,寻觅usebit=0且change=0的页面,将碰到的第一种页面作为所选中的淘汰页。在第一次扫描间不变化访问位usebit。〔2〕假如第一步失败,即查找一周后未碰到第一类页面,则开始第二轮扫描,寻觅usebit=0且change=1的第二类页面,将所碰到的第一种此类页面作为淘汰页。在第二轮扫描期间,将所有通过的页面的访问位置0。〔3〕假如第二步也失败,即未找到第二类页面,则将指针返回到开始的位置,并将所有的访问位复0。然后,反复第一步,假如仍失败,必要时再反复第二步,此时就肯定可以找到被淘汰的页。算法流程设计:STEP1:输入分派的页框数,页面访问次数和要访问的页面号序列

,在目前途径下建一种in.txt的文献作为输入使用。STEP2:内存页面初始化。内存中页面的int数据构造为数组,用余项具有页号值now和访问位值usebit,修改位change。开始时页号均为-1,访问位为0,修改位也为0。

STEP3:测试数据。详细算法是依要访问的页面号,运用写在main〔〕函数里的clock算法查找与否已经存在于内存中。假设存在,则修改其访问位为1.假设不存在,触发缺页中断。最终,打印目前内存状态。如此循环直至测试串都访问完毕重要函数完毕://CLOCK算法 if(mark[num]){ printf("命中页%d*",num); usebit[num]=1; if(work[now]==num)now=(now+1)%len;//假设是目前指针所在位置则移位,否则不变}else{ miss++; mark[num]=usebit[num]=1;change[num]=cha; if(work[now]==-1){//推断与否尚有空的内存块 work[now]=num;now=(now+1)%len; printf("插入页%d*",num);} else { while(true){//循环的查找最对的的替代块for(inti=0;i<len;i++){//超找usebit=0,change=0的块 if(usebit[work[now]]==0&&change[work[now]]==0){f1=true;break;} now=(now+1)%len; } if(!f1){//查找usebit=0.change=1的块,查找过程中将不符合的usebit置0 for(intj=0;j<len;j++){if(usebit[work[now]]==0&&change[work[now]]==1){f2=true;break;} usebit[work[now]]=0; now=(now+1)%len;} } if(!f2){//将所有访问页置0 for(intk=0;k<len;k++){ usebit[work[now]]=0; now=(now+1)%len;} } if(f1||f2)break; } printf("淘汰页%d,插入页%d*",work[now],num); mark[work[now]]=0; work[now]=num; now=(now+1)%len;}测试数据:在这个模拟算法中我将所有的输入放在in.txt之中,并在文献中输入如下的数据:3005110304121204131001051输出的成果如图:成果分析:由上图输出成果可以看到在第四个访问页时,需要淘汰页号,从总页框总看分别为:0号的访问页和修改位为1:0,5号的访问位

温馨提示

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

评论

0/150

提交评论