


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、哈尔滨学院实验报告课程名称:计算机操作系统专业:软件工程班级:12-8学号:12031801姓名:常燕如教务处制实验一 进程管理【实验目的与要求】1. 加深对进程概念的理解,明确进程与程序的区别。2. 掌握Linux进程创建及撤销的方法,进一步认识并发执行的实质。3. 掌握Linux系统下守护进程的创建方法。【实验原理】1 Linux 进程管理命令进程查瞧进程终止进程优先级设置2 Linux 进程控制函数创建与修改进程设置进程属性获取进程属性进程的退出3 Linux 守护进程独立启动守护进程超级守护进程守护进程的编写流程守护进程的编写遵循特定的流程 ,主要包括五个步骤 :Step 1 创建子进
2、程 , 退出父进程Step 2 在子进程中创建新会话Step 3 改变当前目录为根目录Step 4.重设文件权限掩码 Step 5.关闭文件描述符【实验主要仪器与材料】1. 带Linux操作系统的PC机2 GCC编译器【实验内容】1 获取进程信息通过管理命令 , 获取系统当前执行进程的信息 , 包括进程名称与 ID、PID 与 PGID 等。2 创建进程编程程序 , 实现父进程创建一个子进程 , 返回后父子进程都分别循环输出字 符串 “ I ampare nt、” 或 “I amchild、” 5 次,每输出一次延时 1 秒(sleep(1), 然后进入下一次循环。 观察并分析运行结果。 然后
3、将程序改为父子进程同步执行 : 子进程循环输出字符串“ I am child 、”5 次, 然后父进程再循环输出字符串“ I am parent 、”5 次。再次观察并分析运行结果。【实验步骤及实验结果分析】1 实验内容 1通过进程实现及验证父进程及子进程的 id 号的命令ps -lg2. 实验内容2实现父进程创建一个子进程 , 返回后父子进程都分别循环输出字符串 “I am parent ”或 “ I am child、” 5 次,每输出一次延时 1 秒(sleep(1),然后进 入下一次循环。#include<sys/types、 h>#include<unistd、 h
4、>#include<stdio、 h>int main()pid_t pt;printf("Hello world!n");int i;pt=fork();for(i=0;i<5;i+)if(pt=-1)printf("Fork error、 n");else if printf("I am a parent、 n"); Sleep(1);elseprintf("I am a child、 n");Sleep(1);return 0;父子进程同步执行:子进程循环输出字符串“lam child
5、、5次,然后父 进程再循环输出字符串 “ I am paren、 t ”5次。#include<sys/types、 h>#include<unistd、 h>#include<stdio、 h>int main()pid_t pt;printf("Hello world!n");int i;pt=fork();for(i=0;i<5;i+)if(pt=-1)printf("Fork error、n");else ifprin tf("I am a pare nt、n");elseprintf
6、("I am a child、n");return 0;【思考题】1. 程序与进程的区别。(1) 程序就是动态的,程序就是静态的:程序就是有序代码的集合;进程就是程序的执行。通常进程不可在计算机之间迁移;而程序通常对应着文件、静态与可以复制。(2) 进程就是暂时的,程序就是永久的:进程就是一个状态变化的过程,程 序可长久保存。(3) 进程与程序的组成不同:进程的组成包括程序、数据与进程控制块(即进程状态信息)。(4) 进程与程序的对应关系:通过多次执行,一个程序可对应多个进程;通 过调用关系,一个进程可包括多个程序。2. Linux操作系统下有哪些进程类型。交互进程;批处理
7、进程;守护进程;3. 进程创建函数fork与vfork的区别。(1) fork()用于创建一个新进程。由fork()创建的子进程就是父进程的副本。即子进程获取父进程数据空间,堆与栈的副本。父子进程之间不共享这些存储空间的部分。而vfork()创建的进程并不将父进程的地址空间完全复制到子进 程中,因为子进程会立即调用exec(或exit)于就是也就不会存放该地址空间。相 反,在子进程调用exec或exit之前,它在父进程的空间进行。(2) vfork()与fork()另一个区别就就是:vfork保证子进程先运行,在调用 exec或exit之前与父进程数据就是共享的,在它调用exec或exit之后
8、父进程才可 能被调度运行。(3) vfork与fork之间的还有一个区别就是:vfork保证子进程先运行,在她 调用exec或exit之后父进程才可能被调度运行。如果在调用这两个函数之前子 进程依赖于父进程的进一步动作,则会导致死锁。4. 进程的退出函数有哪些?有何区别?C程序就是如何被启动终止的?exit函数;return函数;abort函数 _exit函数。exit与_exit函数用于正常终止一个程序exit先执行一些清除处理、然后进入内核清除操作包括调用执行各终 止处理程序,关闭所有标准I/O流_exit立即进入内核abort函数用于异常终止一个程序exit就是一个函数,有参数,把控制权
9、交给系统return就是函数执行完后的返回,将控制权交给调用函数实验二 进程通信【实验目的与要求】1. 了解基于信号的进程通信机制。2. 熟悉LINUX系统中进程之间软中断通信的基本原理。【实验原理】一、信号1 信号的基本概念2 信号的发送3. 对信号的处理二、所涉及的中断调用1 kill()2 signal()3 wait()4. waitpid()5. Iockf()【实验主要仪器与材料】1. 带Linux操作系统的PC机2 GCC 编译器 【实验内容】1. 编写程序:用fork()创建两个子进程,再用系统调用signal()让父进程捕捉 键盘上来的中断信号(即按Ac键);捕捉到中断信号后
10、,父进程用系统调用kill()向 两个子进程发出信号 , 子进程捕捉到信号后分别输出下列信息后终止 :Child process1 is killed by parent!Child process2 is killed by parent!父进程等待两个子进程终止后 ,输出如下的信息后终止 :Parent process is killed!2 分析利用软中断通信实现进程同步的机理。 【实验步骤及实验结果分析】1.编写程序:用fork()创建两个子进程,再用系统调用signal()让父进程捕捉 键盘上来的中断信号(即按Ac键);捕捉到中断信号后,父进程用系统调用kill()向 两个子进程发出
11、信号 , 子进程捕捉到信号后分别输出下列信息后终止 :Child process1 is killed by parent!Child process2 is killed by parent!父进程等待两个子进程终止后 ,输出如下的信息后终止 :Parent process is killed!2 对软中断信号的处理分三种情况进行 :(1) 如果进程收到的软中断就是一个已决定要忽略的信号,不做处理便立即返回。(2) 进程收到软中断后便退出。(3) 执行用户设置的软中断处理程序。【思考题】实验内容的参考程序如下 ,请仔细阅读、调试、分析 ,回答下述问题 :#include <stdio、
12、h>#include <signal、h> #include <unistd、h> #include <stdlib 、h> #include <sys/wait、h>void waiting(),stop();int wait_mark;int main()int p1, p2, stdout=1;while(p1=fork() = -1); /* 创建子进程 p1*/if (p1 > 0) while(p2=fork() = -1); /* 创建子进程 p2*/ if(p2 > 0) wait_mark=1; signal(
13、SIGINT, stop);/*接收到 Ac 信号,转 stop*/ waiting();kill(p1, 16);/*向pl发软中断信号16*/kill(p2, 17);/*向p2发软中断信号17*/wait(0);/*同步*/wait(0);printf("Parent process is killed!n"); exit(0);else wait_mark=1;signal(17, stop); /*接收到软中断信号 17,转 stop*/ waiting();lockf(stdout, 1, 0); printf("Child process 2 is
14、killed by parent!n"); lockf(stdout, 0, 0);exit(0);else wait_mark=1;signal(16, stop);/*接收到软中断信号 16,转 stop*/waiting();lockf(stdout, 1, 0); printf("Child process 1 is killed by parent!n");lockf(stdout, 0, 0);exit(0);return 0;void waiting()while(wait_mark != 0);void stop()wait_mark=0;1. 参
15、考程序段前面部分用了两个 wait(O),它们起什么作用?作用:wait(O)函数作用就是等待子进程结束,父进程有两个子进程,所以两个 wait 函数。2. 参考程序段中每个进程退出时都用了语句exit(O),为什么?作用: 就是为了让子进程正常自我终止 , 正常退出。3. 参考程序的运行结果就是什么?Parent process is killed!4. 参考程序就是否符合实验要求?为什么?不符合。原因:p1,p2都会捕捉中断信号。对于父进程,当它捕捉到中断信号 时就会转向指定的函数stop()函数,之后父进程被唤醒,从被中断处继续执行。对 于子进程 , 由于没有给它们指定的收到中断信号后的
16、动作 , 就会执行默认的动作 , 结束自己。所以当我们发出中断信号后 , 父进程按预计的方式正常执行 , 而 p1,p2 自己结束了自己 , 所以不会有预计的结果。5. 参考程序该如何修改才能得到正确结果?第一种方法:在fork()语句创建子进程之前捕捉中断信号,既signal(SIGINT, stop);。第二种方法 :在每个子进程前添加忽略中断信号的语句 ,既 signal(SIGINT,SI G_IGN);。第三种方法 :打开两个界面 ,一个界面正常编译 ,另一个界面执行 :ps -aps -a|grep a、 out kill -s INT 11313实验三 内存管理【实验目的与要求】
17、1了解虚拟存储技术的特点。2掌握请求页式存储管理的页面置换算法。3、了解页面大小与内存实际容量对命中率的影响 。 【实验原理】分页存储管理将一个进程的逻辑地址空间分成若干大小相等的片,成为页面或页。在进程运行过程中 ,若其所要访问的页面不在内存而需要把她们调入内存 但内存已无空闲时 ,为了保证该进程能正常运行 ,系统必须从内存中调出一页程序 或数据 ,送磁盘的对换区中。但应将哪个页面调出 ,须根据一定的算法来确定。通 常,把选择换出页面的算法称为页面置换算法 (Page Replacement Algorithm)。一个好的页面置换算法 ,应具有较低的页面更换频率。 从理论上讲 ,应将那些 以
18、后不再会访问的页面换出 ,或将那些在较长时间内不会再访问的页面调出。 最佳置换算法 OPT(Optimal)2 先进先出页面置换算法 FIFO3. 最近最久未使用置换算法LRU4. 最少访问页面置换算法LFU5. 最近最不经常使用算法 NUR【实验主要仪器与材料】1带Linux操作系统的PC机。2 GCC 编译器。【实验内容】1、通过随机数产生一个指令序列 ,共 320条指令。指令的地址按下述原则生 成:50%的指令就是顺序执行的 25%的指令就是均匀分布在前地址部分 25%的指令就是均匀分布在后地址部分具体的实施方法就是 :在【 0,319】的指令地址之间随机选取一起点 m; 顺序执行一条指
19、令 , 即执行地址为 m+1 的指令 ;在前地址【0,m+1】中随机选取一条指令并执行,该指令的地址为m ; 顺序执行一条指令 , 其地址为 m' +1;在后地址m' +2,319中随机选取一条指令并执行; 重复上述步骤 , 直到执行 320 次指令。2、将指令序列变换成为页地址流设:页面大小为 1K;用户内存容量为 4页到 32页; 用户虚拟容量为 32K。在用户虚存中,按每K存放10条指令排列虚拟地址,即320条指令在虚存中 的存放方式为 :第0条第9条指令为第 0页(对应虚存地址为【 0,9】 );第10条第19条指令为第1页(对应虚存地址为【10,19】);第310条第
20、319条指令为第31页(对应虚存地址为【310,319】)。按以上方式,用户指令可组成32页。3、计算并输出下列各种算法在不同内存容量下的命中率。先进先出的算法(FIFO); 最近最少使用算法(LRU);最佳淘汰算法(OPT):先淘汰最不常用的页地址;其中OPT为选作内容。命中率=1 -页面时效次数/页地址流长度在本实验中,页地址流长度为320,页面失效次数为每次访问相应指令时,该 指令所对应的页不在内存的次数。【实验步骤及实验结果分析】首先用srand()与 rand()函数定义与产生指令序列,然后将指令序列变换成相 应的页地址流,并针对不同的算法计算出相应的命中率。/*利用先进先出算法(F
21、IFO)与最近最久未使用算法(LRU)*/#includevstdio、h>#include<stdlib、h>#includevunistd、h>#include<string、h>#defi ne NULL_1 10000const int ty=320;int d320; in t page320; in t p32;/指令序列/页地址流/内存页面int que;缺页次数int time32;记录页面距离上次被访问的时间void creat(i nt leng)le ng 为内存页面数量int i;que=0;for(i=0;i<le ng;i+
22、) pi=NULL_1;/让内存页面置空timei=0;*先进先出算法void FIFO(i nt leng)/le ng 为内存页面数量int i,j,k;int n;n为要被替换的页面号,按0,1,2、leng,0,1,2、leng循环变化creat(leng); /初始化内存页面n=0;for(i=0;i<ty;i+)k=0;for(j=0;j<le ng;j+)if(pj=NULL 1)break;que+;P n=pagei; n+;|if(n=le ng)n=0;printf("%-7、3ft",1-(float)que/ty);/*最近最久未使用算
23、法void LRU(i nt leng)/le ng 为内存页面数量int i,j,k;int tmax;存time的最大值int t;/t为要被访问的页面号creat(le ng);/初始化内存页面for(i=0;i<ty;i+)k=0;for(j=0;j<le ng;j+) if(pj=NULL 1)break;else if(pj=pagei)/ 在内存中有该页k=1;t=j;break if(k=O)que+;tmax=time0;t=0;for(j=0;j<leng;j+)/查找最久没访冋的页面号赋予tif(tmax<time|j)tmax=timej;t=j
24、; pt=pagei; ifor(j=0;j<leng;j+)/将每个页面 time 自增timej+;timet=O;/将这次被访问的页面time清零printf(" %-7、3ft",1-(float)que/ty);void mai n()int m,i;srand(10*getpid();用来作为初始化随机数队列的"种子"m=(int)(float)(ty-1)*(rand()/(RAND_MAX+1、0);选0-319中一数for (i=0; i<ty; i+=4) / 产生指令队列di=m;任选一指令访问点mdi+1=di+1;
25、顺序执行一条指令m+1 di+2=(int)(float)di*(rand()/(RAND_MAX+1、0);执行前地址指令m',即选择(0,m+1)之间的数di+3=di+2+1;顺序执行一条指令m= (int)(float)(ty-1)-di+2)*(rand()/(RAND_MAX+1、0) + di+2;/选(m'+2,319)之间数for(i=0;i<ty;i+)将指令序列变换成页地址流pagei=di/10;printf("PAGEtFIFOt LRUtn");for(i=4;i<=32;i+)/ 内存从 4 页到 32 页print
26、f(" %2dt",i); FIFO(i);LRU(i);匚prin tf("n"); |程序运行结果:PACEFIFOLRU4队沾&趴別5B.5M°0.581氛啥78.5»1e.Me书9ft.fina.63a1Gmg.110.64e .54712130.C75“15皐也140.73B6.731170.7442铀169.7551S0,7609,766210.7S1e.79477&.77e.79723243.334e.siz25e.0220.U47e.si427&一时ZU296-969側0.S81284a.w6.
27、B9732zoo000【思考题】1. 在内存页面较少(45个)的情况时,各种页面置换算法的命中率有何差 别?FIFO算法与LRU算法命中率都在55流右,相差不大。2. 在内存页面为712个页面时,各种页面置换算法的命中率有何差异?FIFO算法命中率在59%-67%,LRl算法命中率在60%-70陆间,相对来说,最 近最久未使用算法效率更好一些。3. 在内存页面为2532个页面时,各种页面置换算法的命中率有何差异?两种算法命中率都在 80%-90陆间,当内存中中页面数逐渐增加时,访问的 都已装入内存,从而命中率都较大。实验四 文件系统【实验目的与要求】1、熟悉 Linux 文件系统的文件与目录结
28、构 , 掌握 Linux 文件系统的基本特征。2、掌握命令行方式下文件操作命令与程序中文件操作函数的使用方法。3、掌握 Linux 文件系统的加载与卸载方法。【实验主要仪器与材料】1、带Linux操作系统的PC机2、GCC 编译器 【实验内容】1、熟悉 Linux 下的文件操作命令 , 如查瞧文件系统的分区与设备文件、查 瞧文件系统目录结构、创建文件夹、复制文件、更改文件权限等 , 观察 Linux 文 件系统的特点。2、对比实验一的文件拷贝代码 , 利用不同的文件操作函数实现文件的输出 与拷贝。3、实现对光盘的加载与访问 , 然后卸载设备。4、加载Windows文件系统,实现对Windows数据的访问与共享。 【实验步骤及实验结果分析】实验内容:1、df:查瞧文件系统的状态信息,显示各分区容量、硬盘占用空间、目前剩余 空间及挂载点等信息du:统计目录或文件所占磁盘空间的大小mkdir: 创建文件夹cp:复制文件chmod:更改文件权限2、(1) #include <unistd、 h> #include <stdio、 h> #include <stdlib、 h>int main() FILE *fp; char ch; char fname30; pri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 加工行业合同范本
- 买买废铁合同范本
- 个人转正述职报告
- 个人研修培训的心得体会
- 个人工作总结煤质工作总结
- 个人代办委托书
- 厨房耗材合同范本
- 业务合作协议书
- 烹饪原料知识题库
- 分批注资合同范本
- 高考英语一轮复习知识清单(全国版)专题01++定语从句十大考点归纳(清单)+含答案及解析
- 培训机构收费退费管理规定
- 爱学习平台登录入口
- 临床癫痫MR成像与常见疾病
- 《基岩标建设技术导则》
- 2024年急危重症患者鼻空肠营养管管理专家共识
- 2024年机动车驾驶员考试《科目一》试卷及解答参考
- 2024人工智能开源大模型生态体系研究报告
- DL∕T 974-2018 带电作业用工具库房
- 《多元统计分析-基于R(第3版)》课件全套 费宇 第1-13章-多元统计分析与R简介-多维标度分析
- 现代家谱名人录范文
评论
0/150
提交评论