




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验报告课程名称 操作系统 实验项目名称 操作系统 班 级 0411003 实验室名称 S331A 专 业 计算机科学与技术 任课教师 XXX 学 号: XXX 姓 名: XXX 实验日期: 2012年12月5 日 姓名 实验报告成绩 完成情况项目很好好一般及格差实验目的实现实验内容完成实验步骤和操作是否符合要求分析与思考总成绩 指导教师(签名) 年 月 日实验一 Linux基本环境1、实验目的 (1)熟悉Linux下的基本操作,学会使用各种Shell命令去操作Linux,对Linux有一个感性认识。 (2)学会使用vi编辑器编辑简单的C语言程序,并能对其编译和调试。2、实验预备内容(1)参阅相关Linux操作系统的安装手册,熟悉Linux的基本安装和配置;(2)参阅相关Linux的命令参考手册,熟悉Linux下的操作命令。3、实验内容以普通用户身份登陆,并使用“ls”,“cat”“cd”等命令来实现基本的文件操作并观察Linux文件系统的特点;使用vi编辑器编写一个C程序,并用gcc命令进行编译和链接,并用a.out来进行输出结果。4、思考 (1)Linux系统在用户登陆和操作界面以及文件系统上有哪些特点?linux是真正的多用户:同一时刻可以有多个用户同时登陆一台linux,而且linux下的大多程序是支持多用户的。linux操作界面是命令行式的,黑底白字的DOS样子。linux最重要的特点是支持多个不同的文件系统,在linux中,一个分离的文件系统不是通过设备标识来访问,而是把它合到一个单一的目录树结构中,通过目录来访问。5、实验步骤(3)进行如下常用命令练习:n 练习使用命令ls(注意Linux命令区分大小写。)u 使用ls 查看当前目录内容;使用ls 查看指定目录内容,如/目录,/etc目录u 使用ls all 查看当前目录内容;使用dir 查看当前目录内容n 使用cd改变当前目录u cd . 回到上层目录 ;cd / 回到根目录n pwd 显示当前路径 n 建立目录mkdiru mkdir 目录名 ; mkdir /home/s2001/newdir n 删除目录:rmdir;n 复制文件cp: 如 cp 文件名1 文件名2n 移动文件或目录: mv n 删除文件 rmn 显示文件内容:more (分页显示); n 显示文件:cat 文件名 建立文件:cat 文件名,ctrl+d结束输入(4)使用编辑器vi 编辑文件1. 进入linux的文本模式之后,在命令行键入vi filename.c 然后回车。在此作一些简单的解释:首先vi命令是打开vi编辑器。后面的filename.c是用户即将编辑的c文件名字,注意扩展名字是.c;当然,vi编辑器功能很强,可以用它来编辑其它格式的文件,比如汇编文件,其扩展名字是.s;也可以直接用vi打开一个新的未命名的文件,当保存的时候再给它命名,只是这样做不很方便。2. 最基本的命令i :当进入刚打开的文件时,不能写入信息,这时按一下键盘上的字母“I”键(insert的第一个字母),插入的意思,就可以进入编辑模式了。如下图所示: 3. 当文件编辑完后,需要保存退出,这时需要经过以下几个步骤:1)按一下键盘上的Esc 键;2)键入冒号(:),紧跟在冒号后面是wq(意思是保存并退出)。如果不想保存退出,则在第二步键入冒号之后,键入q!(不带w,机尾部保存)。如下图所示:4. 退出vi编辑器的编辑模式之后,要对刚才编写的程序进行编译。编译的命令是:gcc filename.c -o outputfilename.out,其中gcc是c的编译器。参数:filename.c 是要编译的源文件的名称,outputfilename表示输出文件名称,中括号表示括号内部的内容可输入也可以不输入(中括号本身不再命令行中出现)。如果不输入outputfilename.out,默认的输出文件是a.out 。5. 最后一步是运行程序,方法如下:./outputfilename.out实验2 进程管理(上)1、实验目的 (1)加深对进程概念的理解,明确进程和程序的区别。 (2)进一步认识并发执行的实质。3、实验内容 (1)首先分析该段程序输出结果,然后再输入该段代码编译并运行,看看结果和自己的分析有没有不同,如果有不同,分析其原因。#include int main(void) int i; i = fork(); printf(i = %dn, i); return 0;:bca(有时会出现abc的任意的排列) 分析:从进程执行并发来看,输出abc的排列都是有可能的。 原因:fork()创建进程所需的时间虽然可能多于输出一个字符的时间,但各个进程的时间 片的获得却不是一定是顺序的,所以输出abc的排列都是有可能的。(2)进程的创建 编写一段源程序,使系统调用fork()创建两个子进程,当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。试观察纪录屏幕上的显示结果,并分析原因。程序#includemain()int p1,p2;if(p1=fork() /*子进程创建成功*/ putchar(b);else if(p2=fork() /*子进程创建成功*/ putchar(c); else putchar(a); /*父进程执行*/bca(有时会出现abc的任意的排列)分析:从进程执行并发来看,输出abc的排列都是有可能的。原因:fork()创建进程所需的时间虽然可能多于输出一个字符的时间,但各个进程的时间片的获得却不是一定是顺序的,所以输出abc的排列都是有可能的。 (3)进程的控制 修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕出现的现象,并分析原因。程序1#includemain()int p1,p2,i;if(p1=fork() for(i=0;i500;i+) printf(parent%dn,i); wait(0); /* 保证在子进程终止前,父进程不会终止*/exit(0);else if(p2=fork() for(i=0;i500;i+) printf(son %dn,i); wait(0); /* 保证在子进程终止前,父进程不会终止*/ exit(0); /*向父进程信号0且该进程推出*/ else for(i=0;i500;i+) printf(“grandchild %dn,i); exit(0);运行结果parent.songrandchildgrandchild或grandchildsongrandchildsonparent分析:由于函数printf()输出的字符串之间不会被中断,因此,每个字符串内部的字符顺序输出时不变。但是 , 由于进程并发执行时的调度顺序和父子进程的抢占处理机问题,输出字符串的顺序和先后随着执行的不同而发生变化。这与打印单字符的结果相同。 如果在程序中使用调用lockf()来给每一个子进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。4、思考 (1)系统是怎样创建进程的?linux 系统创建进程都是用 fork() 系统调用创建子进程由 fork() 系统调用创建的新进程被称为子进程。该函数被调用一次,但返回两次。如果 fork()进程调用成功,两次返回的区别是子进程的返回值是0,而父进程的返回值则是新子进程的进程号。实验3 进程管理(下)1、实验目的 (1)加深对进程概念的理解,明确进程和程序的区别。 (2)进一步认识并发执行的实质。 (3)分析进程竞争资源现象,学习解决进程互斥的方法。 (4)了解Linux系统中进程通信的基本原理。2、实验预备内容 (1)阅读Linux中fork,signal,lockf等系统调用的功能和用法。 (2)了解什么是管道,了解进程间通信的常用方法。3、实验内容 (1)编写一段程序,使其现实进程的软中断通信。 要求:使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上来的中断信号(即按DEL键);当捕捉到中断信号后,父进程用系统调用Kill()向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止: Child Processll is Killed by Parent! Child Processl2 is Killed by Parent! 父进程等待两个子进程终止后,输出如下的信息后终止 Parent Process is Killed!程序#include #include #include void waiting( ),stop( ),alarming( ); int wait_mark; main() int p1,p2; if(p1=fork() /*创建子进程p1*/ if(p2=fork() /*创建子进程p2*/ /父进程 wait_mark=1; signal(SIGINT,stop); /*接收到c信号,转stop*/ signal(SIGALRM,alarming);/*接受SIGALRM waiting(); kill(p1,16); /*向p1发软中断信号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); signal(SIGINT,SIG_IGN); /*忽略 c信号*/ while (wait_mark!=0); lockf(1,1,0); printf(child process2 is killed by parent!n); lockf(1,0,0); exit(0); else wait_mark=1; signal(16,stop); signal(SIGINT,SIG_IGN); /*忽略c信号*/ while (wait_mark!=0); lockf(1,1,0); printf(child process1 is killed by parent!n); lockf(1,0,0); exit(0); void waiting() sleep(5); if (wait_mark!=0) kill(getpid(),SIGALRM); void alarming() wait_mark=0; void stop() wait_mark=0; :不做任何操作等待五秒钟父进程会在子进程先退出后再退出,并打印退出的顺序; 或者点击ctrl+C后程序退出并打印退出的顺序。 (2) 编制一段程序,实现进程的管理通信。 使用系统调用pipe()建立一条管道线;两个子进程P1和P2分别向管道中写一句话: Child 1 is sending a message! Child 2 is sending a message! 而父进程则从管道中读出来自于两个子进程的信息,显示在屏幕上。 要求父进程先接收子进程P1发来的消息,然后再接收子进程P2发来的消息。#include #include #include int pid1,pid2; /定义两个进程号参数 int main() int fd2; /*定义一个数组作为sys_pipe()的参数*/char OutPipe100, InPipe100;pipe(fd); /*调用sys_pipe()创建管道线*/while(pid1 = fork() = -1);if( pid1 = 0) /*/*根据sys_pipe()函数的定义fd1用于向管道写数据*/ lockf( fd1, 1, 0 ); /*锁定管道写入端fd1*/*进程1向管道写入要输出的句子*/sprintf(OutPipe, /n Child process 1 is sending message!/n);write( fd1, OutPipe, 50);sleep(5);lockf(fd1, 0 , 0);exit(0);elsewhile(pid2 = fork() = -1);if( pid2 = 0)lockf( fd1, 1, 0 ); /*锁定管道写入端fd1*/*进程2向管道写入要输出的句子*/sprintf(OutPipe, /n Child process 2 is sending message!/n);write( fd1, OutPipe, 50); /*调用pipe_write()函数写管道*/sleep(3);lockf(fd1, 0 , 0);exit(0);elsewait(0);read(fd0, InPipe, 50); /*调用pipe_read()函数读管道*/printf(%s/n, InPipe);wait(0); read(fd0, InPipe, 50); /*调用pipe_read()函数读管道*/printf(%s/n, InPipe);exit(0); return 0;实验5 存储管理(上)1、实验目的 存储管理的主要功能之一是合理地分配空间。 本实验的目的是通过存储管理中FIFO页面置换算法模拟设计,了解虚拟存储技术的技术特点,掌握请求页式存储管理的页面置换算法。2、实验内容 (1)通过随机数产生一个指令序列,共320条指令。指令的地址按下述原则生成: 50%的指令是顺序执行的; 50%的指令是均匀分布在前地址部分; 50%的指令是均匀分布在后地址部分。 具体的实施方法是: 在 0,319 的指令之间随即选取一起点m; 顺序执行一条指令,即执行地址为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条指令为第一页(对应虚存地址为10,19); 第310条第319条指令为第31页(对应虚地址为310,319)。 按以上方式,用户指令可组成32页。 (3)计算并输出FIFO算法在不同内存容量命中率。命中率=(1-页面失效次数)/页地址流长度 在本实验中,页地址流长度为320,页面失效次数为每次访问相应指令时,该指令所对应的页不在内存的次数。3、随机数产生办法,Linux或UNIX系统提供函数srand()和rand(),分别进行初始化和产生随机数。例如: srand (); 语句可初始化一个随机数; a0=10*rand()/65535*319+1; a1=10*rand()/65535*a0;语句可用来产生a0与a1中的随机数。4、实验任务:(1)源代码memory.c已经给出部分代码,请运行,并分析运行结果。(2)在源代码memory.c中,有很多注释部分,请分析那些用一连串问号所标示的语句的作用。#includeinclude#define TRUE 1#define FALSE 0#define INVALID -1#define total_instruction 320 /*指令流长*/#define total_vp 32 /*虚页长*/#define clear_period 50 /*清0周期*/typedef struct /*页面结构*/int pn; /页号 logic numberint pfn; /页面框架号 physical frame numberint counter; /计数器int time; /时间pl_type;pl_type pltotal_vp; /*页面线性结构-指令序列需要使用地址*/typedef struct pfc_struct /*页面控制结构,调度算法的控制结构*/ int pn;int pfn;struct pfc_struct *next;pfc_type;pfc_type pfctotal_vp, *freepf_head, *busypf_head, *busypf_tail;int diseffect, atotal_instruction; /* a为指令序列*/int pagetotal_instruction, offsettotal_instruction;/*地址信息*/int initialize(int);int FIFO(int);int main( )int s,i,j;srand(10*getpid(); /*?初始化随机队列的“种子”?*/s=(float)319*rand( )/32767/32767/2+1; /*正态分布*/for(i=0;itotal_instruction;i+=4) /*产生指令队列*/if(s319)printf(When i=%d,Error,s=%dn,i,s);exit(0); ai=s; /*任选一指令访问点m*/ai+1=ai+1; /*顺序执行一条指令*/ai+2=(float)ai*rand( )/32767/32767/2; /*执行前地址指令m*/ai+3=ai+2+1; /*顺序执行一条指令*/s=(float)(318-ai+2)*rand( )/32767/32767/2+ai+2+2;if(ai+2318)|(s319)printf(a%d+2,a number which is :%d and s=%dn,i,ai+2,s);for (i=0;itotal_instruction;i+) /*将指令序列变换成页地址流*/pagei=ai/10;offseti=ai%10;for(i=4;i=32;i+) /*用户内存工作区从4个页面到32个页面*/printf(-%2d page frames-n,i);FIFO(i);return 0;/*初始化相关数据结构 total_pf表示内存的块数 */int initialize(int total_pf) int i;diseffect=0;for(i=0;itotal_vp;i+)pli.pfn=INVALID; /*置页面控制结构中的页号,页面为空*/pli.counter=0; /*页面控制结构中的访问次数为0*/pli.time=-1; /*访问的时间*/for(i=0;itotal_pf-1;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新解读《CB-T 3873-1999舷窗矩形窗密封垫料》新解读
- 新解读《CB-T 60 - 1999船用眼板》新解读
- 质量保证措施
- 论土地所有权和使用权争议处理
- 汽车传感器与检测技术电子教案:霍尔式节气门位置传感器
- 济南市佳兴天城营销推广策略报告52p
- 介绍家乡教学活动方案
- 物理中考一轮复习教案 第一讲 声现象
- 从装开业活动方案
- 仓鼠手工活动方案
- HPProLiantDL系列PC服务器维护手册
- 齐鲁医学四肢骨连结
- 《运营管理》案例库
- 中国石化加油站视觉形象(vi)标准手册
- 化工原理第十三章-萃取课件
- 美容院卫生管理制度(常用版)
- 机场行李输送系统设计论文-本科论文
- 白带常规报告单模板
- 2022年全国工会财务知识大赛参考题库精简600题(含各题型)
- 《国学典籍英译》课程教学大纲
- 校外毕业设计(实习)申请表模板.docx
评论
0/150
提交评论