操作系统实验报告

上传人:dax****eng 文档编号:144616444 上传时间:2022-08-27 格式:DOC 页数:38 大小:1.11MB
收藏 版权申诉 举报 下载
操作系统实验报告_第1页
第1页 / 共38页
操作系统实验报告_第2页
第2页 / 共38页
操作系统实验报告_第3页
第3页 / 共38页
资源描述:

《操作系统实验报告》由会员分享,可在线阅读,更多相关《操作系统实验报告(38页珍藏版)》请在装配图网上搜索。

1、实 验 报 告实验课程: 计算机操作系统 学生姓名: 学 号: 专业班级: 2010年 11月 3日目 录一、 实验一 02-06二、 实验二 07-17三、 实验三 18-24四、 实验四 25-28五、 实验五 29-37南昌大学实验报告 -(1)操作系统安装及其接口环境学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 实验成绩: 一、实验目的熟悉Windows/Linux操作系统的安装过程与安装方法,并掌握该操作系统所提供的用户接口环境,并为后续实验做好编程环境准备。二、实验内容1、熟悉Windows/Linux操作系统的安装过程与安装方法,并掌握该操作系

2、统所提供的用户接口环境,通过系统提供的用户管理程序、查看系统中的用户情况、进程、线程、内存使用情况等,学会使用它进行监视进程的状况、系统资源的使用情况及用户情况。并为后续实验做好编程环境准备。2、用C语言编写一小段程序,使其可以通过某个系统调用来获得OS提供的某种服务。三、实验要求1 了解所安装的操作系统对软硬件资源的具体要求;2 机器最低硬件配置要求;3 操作系统所提供的用户接口环境的熟悉;4 了解主要BIOS CMOS参数的含义及其设置方法;5 掌握程序编写中系统调用的方法。四、主要实验步骤1window xp操作系统的安装与安装方法(1)打开的光盘中找到所需文件的正确路径,这时会打开“欢

3、迎使用Microsoft Windows XP”窗口,如图1所示。图1 “欢迎使用Microsoft Windows XP”窗口(2)在这个窗口的“您希望做什么?”选项组中,选择“安装可选的Windows组件”选项,对系统组件进行自定义安装。(3)选择“安装Microsoft Windows XP”选项,可以打开中文版Windows XP的安装界面,如图2所示。图2 “欢迎使用Windows安装程序”对话框在界面左侧显示安装的进程以及安装总共所需要的时间,在右侧的“欢迎使用Windows安装程序”对话框中,可以选择执行哪一类型的安装,在“安装类型”下拉列表框有“升级安装”和“全新安装”两种选项

4、,在此提醒用户“升级安装”会保留已安装的程序、数据文件和现有的计算机设置,而“全新安装”将替换原有的Windows或在不同的硬盘或磁盘分区上安装Windows,它会造成硬盘上所有数据的丢失。在这里选择“升级安装”,单击“下一步”按钮继续。(4)在接下来的对话框中要求阅读许可协议,当看完此协议后,可以选择“我接受这个协议”单选项,只有接受此协议,才能继续进行安装,如图3所示。图3 “许可协议”对话框(5)在“许可协议”对话框中进行选择后,单击“下一步”按钮打开“您的产品密钥”对话框,要求用户输入所安装的Windows产品的密钥。在输入时用户要确保所输内容正确无误,否则安装过程不能继续,如图4所示

5、。图4 “您的产品密钥”对话框(6)在“产品密钥”文本框中输入正确的内容后,单击“下一步”按钮可以打开“获得更新的安装程序文件”对话框,选择“否,跳过这一步继续安装Windows”单选项,然后单击“下一步”按钮继续安装过程,如图5所示。图5 “获得更新的安装程序文件”对话框(7)这时已经进入“准备安装”阶段,系统会开始复制安装所需要的文件,在“正在复制安装文件”中显示了文件复制的进度,在界面的右侧将出现中文版Windows XP的新增功能的介绍,如果用户在此时要退出安装,可以在键盘上按下Esc键,即可取消安装程序,如图6所示。图6 复制安装文件(8)当复制完安装文件后,系统将自动重新启动计算机

6、,进入“安装Windows”阶段,在整个安装过程中,这一阶段是耗时最长的,它将复制和配置各种文件,由于要确保所加载的各种设备的驱动程序生效,在此过程中会陆续自动重新启动计算机,而后继续运行安装程序,用户可不必对其进行操作。(9)当完成安装后,系统会自动登录,这时会要求用户输入用户名称,并且提供了多个用户名可选项,用户可以在此设置多个用户,系统将会为每个用户建立用户帐户,这样各个用户都可以拥有个性化的使用空间,而相互之间不会影响。(10)当用户根据提示输入一些个人信息后,就可以登录到计算机系统了,在进行登录时的欢迎界面上会出现所有的用户帐户,单击所要使用的用户名称前的图标,就可以进入中文版Win

7、dows XP的界面了,2查看系统中的用户情况、进程、线程、内存使用情况 点击键盘上的“Ctrl”+“Alt”+“Del”键,点击启动任务管理器,如图:在这里可以查看现在运行的应用程序、进程、性能、联网、用户,通过下方可以看到进程数、CPU使用率以及物理内存使用率。 3 .BIOS CMOS参数的含义及其设置方法:全名为Basic Input/Output System即基本输入输出系统,是计算机中最基础但又最重要的程序,它为计算机提供最原史最直接的硬件控制 :它是计算机主板上的一块可反复读写的芯片,主要用来保存当前系统的硬件配置和某些参数设置的结果 AWARD BIOS设置:进入方法:一般是

8、在启动时按del键进入 各作键的作用: :向右移一项 :向左移一项 :向上移一项 :向下移一项 Enter:选定此项 Esc:跳到退出菜单或跳到上级菜单 +或PageUP:增加数值或改变选项 -或PageDown:减少数值或改变选项 F1:帮助 F5:恢复上次CMOS设置 F6:加载默认值(从故障保护默认值表加载) F7:加载优化默认值 F10:保存设置并退也4. 用C语言编写一小段程序,使其可以通过某个系统调用来获得OS提供的某种服务源程序:#include #include int main(int argc, char *argv) system(diskpart); system(li

9、st disk); system(select disk 0); system(convert dynamic); return 0;五、实验数据及处理结果用C语言编写一小段程序,使其可以通过某个系统调用来获得OS提供的某种服务截图:六、实验体会或对改进实验的建议感觉自己不懂得知识还是挺多的,要加强自学,自己网上,书本上学习跟多的知识。七、参考资料 计算机操作系统修订版 汤子瀛主编 西安电子科技大学出版社 现代计算机操作系统习题解析及实验指导南昌大学实验报告 -(2)编程模拟进程间的同步和互斥学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 实验成绩: 一、实验

10、目的通过实验加强对进程同步和互斥的理解,并掌握进程(线程)的创建和调用方法。学会使用信号量解决资源共享问题。学生可以自己选择在Windows或Linux系统下编写。二、实验内容1以下为Linux系统下参考程序,请编译、运行并观察程序的输出,并分析实验结果,写出实验报告。#include#include#include#include#include#include#include#define NUM_PROCS 5#define SEM_ID 250#define FILE_NAME /tmp/sem_aaa#define DELAY 4000000void update_file(int

11、sem_set_id, char *file_path, int number)struct sembuf sem_op;FILE *file;/等待信号量的数值变为非负数,此处设为负值,相当于对信号量进行P操作sem_op.sem_num=0;sem_op.sem_op=-1;sem_op.sem_flg=0;semop(sem_set_id,&sem_op,1);/写文件,写入的数值是当前进程的进程号file=fopen(file_path,w);if(file)/临界区fprintf(file,%dn,number);printf(%dn,number);fclose(file);/发送

12、信号,把信号量的数值加1,此处相当于对信号量进行V操作sem_op.sem_num=0;sem_op.sem_op=1;sem_op.sem_flg=0;semop(sem_set_id,&sem_op,1);/子进程写文件void do_child_loop(int sem_set_id,char *file_name)pid_t pid=getpid();int i,j;for(i=0;i3;i+)update_file(sem_set_id,file_name,pid);for(j=0;j4000000;j+);int main(int argc,char *argv)int sem_s

13、et_id; /信号量集的IDunion semun sem_val; /信号量的数值,用于semctl()int child_pid;int i;int rc;/ 建立信号量集,ID是250,其中只有一个信号量sem_set_id=semget(SEM_ID,1,IPC_CREAT|0600);if(sem_set_id=-1)perror(main: semget);exit(1);/把第一个信号量的数值设置为1sem_val.val=1;rc=semctl(sem_set_id,0,SETVAL,sem_val);if(rc=-1)perror(main:semctl);exit(1);

14、/建立一些子进程,使它们可以同时以竞争的方式访问信号量for(i=0;iNUM_PROCS;i+)child_pid=fork();switch(child_pid)case -1: perror(fork);case 0: /子进程do_child_loop(sem_set_id,FILE_NAME);exit(0);default: /父进程接着运行break;/等待子进程结束for(i=0;iNUM_PROCS;i+)int child_status;wait(&child_status);printf(main:were donen);fflush(stdout);return 0;2

15、模拟PV操作同步机构,且用PV操作解决生产者消费者问题。模拟PV操作同步机构,且用PV操作解决生产者消费者问题。提示:(1) PV操作同步机构,由P操作原语和V操作原语组成,它们的定义如下:P操作原语P(s):将信号量s减去1,若结果小于0,则执行原语的进程被置成等待信号量s的状态。V操作原语V(s):将信号量s加1,若结果不大于0,则释放一个等待信号量s的进程。这两条原语是如下的两个过程:procedure p (var s: semaphore);begin s:=s-1;if s0 then W(s)end pprocedure v (var s: semaphore);begin s:

16、 =s+1;if sPC结束保护现场,PC=当前进程PCB的断点有就绪进程?否是图4-5处理器调度程序流程P(s)GOTO空操作PutGETproduceconsumeV(s)开始j:=PC按j转向各模拟指令对应的过程现行进程为生产者?否是j:=SAij:=PAiPC:=i+1置现行进程为就绪态返回生产者运行结束?置生产者进程为完成态是否图 4-6 模拟处理器指令执行开始SS+1将调用V(s)过程的进程置为就绪找一个等待s信号量的进程置为就绪态S0返回否是开始SS-1将调用P(s)过程的进程置为就绪将调用P(s)过程的进程置为等待信号量s的状态S0返回否是(1)模拟P(S) (2)模拟V(S)

17、图 4-7 模拟PV操作的执行三、实验要求1、 linux操作系统2、 Windows操作系统四、主要实验步骤linux操作系统下的操作步骤: gedit semaphore.c (编辑程序)gcc o semaphore semaphore.c (编译、链接程序)./semaphore(执行程序)五、实验数据及处理结果1.进程间同步和互斥源程序:#include #define size 5int empty,full,in,out,asize=0,i,m=1;void produce()int j;if(empty0) empty-; ain=1; printf(生产一件产品,1为继续生产

18、,2为消费n);in=(in+1)%size; scanf(%d,&j); switch(j) case 1: i=j;break; case 2: i=j;break; default: printf(结束操作);m=0; full+; else printf(缓存池已满无法执行生产操作n); scanf(%d,&j); if(j=2) i=j; void consume()int j;if(full0) full-;aout=0;printf(取出一产品,1为继续生产,2为消费n); out=(out+1)%size; scanf(%d,&j); switch(j) case 1: i=j

19、;break; case 2: i=j;break; default: printf(结束操作); m=0; empty+; else printf(缓存池已空无法执行消费操作n); scanf(%d,&j); if(j=1) i=j; void main() empty=size; full=0;in=out=0; printf(请输入你想要执行的操作 1为生产,2为消费,其他数字为结束操作n);scanf(%d,&i);while(m)switch(i)case 1: produce();break;case 2: consume();break;default:printf(结束操作);

20、m=0; 五、实验数据及处理结果程序运行结果:六、实验体会或对改进实验的建议只有在熟悉相关知识才能有效地用C语言写出相关程序,要熟悉课本上关于成产者消费者问题的相关知识。七、参考资料计算机操作系统修订版 汤子瀛主编 西安电子科技大学出版社 现代计算机操作系统习题解析及实验指导南昌大学实验报告 -(3)编程实现银行家安全算法学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 实验成绩: 一、实验目的通过实验加强对银行家安全算法的理解和掌握。二、实验内容熟悉避免死锁发生的方法,死锁与安全序列的关系,编程实现银行家算法,要求输出进程的安全序列。三、实验要求1、需写出设计

21、说明;2、设计实现代码及说明3、运行结果;四、主要实验步骤#include #include #define FALSE 0 #define TRUE 1 #define W 10 /最大进程数W=10#define R 20 /最大资源总数R=20int M ; int N ; int ALL_RESOURCEW; int AVAILABLER; /可利用资源向量int MAXWR; /最大需求矩阵int ALLOCATIONWR; /分配矩阵int NEEDWR; /需求矩阵int RequestR; /进程请求向量 void inputdata(); /数据输入 void showdat

22、a(); /数据显示 void changdata(int k);/进程请求资源数据改变void restoredata(int k); /数据恢复int chksec(int s); /系统安全性的检测int chkmax(int s); /检测最大需求 void bank(); /检测分配的资源是否合理 void main() int i,j; inputdata(); for(i=0;i=M) cout错误提示:经安全性检查发现,系统的初始状态不安全!nendl; else cout提示:经安全性检查发现,系统的初始状态安全!endl; bank(); void inputdata()i

23、nt i=0,j=0,p; cout请输入总进程数:M; if (MW) coutendl总进程数超过了程序允许的最大进程数,请重新输入:W); coutendl; cout请输入资源的种类数:N; if (NR)coutendl资源的种类数超过了程序允许的最大资源种类数,请重新输入:R); coutendl; cout请依次输入各类资源的总数量,即设置向量all_resource:endl; for(i=0;iALL_RESOURCEi; coutendl; cout请依次输入各进程所需要的最大资源数量,即设置矩阵max:endl; for (i=0;iM;i+) for (j=0;jMAX

24、ij; if (MAXijALL_RESOURCEj) coutendl该最大资源数量超过了声明的该资源总数,请重新输入:ALL_RESOURCEj); coutendl; cout请依次输入各进程已经占据的各类资源数量,即设置矩阵allocation:endl; for (i=0;iM;i+) for (j=0;jALLOCATIONij; if (ALLOCATIONijMAXij)coutendl已占有的资源数量超过了声明的最大资源数量,请重新输入:MAXij); coutendl; for (i=0;iM;i+) for(j=0;jN;j+) NEEDij=MAXij-ALLOCATI

25、ONij; for (j=0;jN;j+) p=ALL_RESOURCEj; for (i=0;iM;i+) p=p-ALLOCATIONij; AVAILABLEj=p; if(AVAILABLEj0) AVAILABLEj=0; void showdata() int i,j; cout各种资源的总数量,即向量all_resource为:endl; cout ; for (j=0;jN;j+) cout 资源j: ALL_RESOURCEj; coutendlendl; cout当前系统中各类资源的可用数量,即向量available为:endl; cout ; for (j=0;jN;j+

26、) cout 资源j: AVAILABLEj; coutendlendl; cout各进程还需要的资源数量,即矩阵need为:endlendl; for (i=0;iM;i+) cout进程Pi: ; for (j=0;jN;j+) coutNEEDij ; coutendl; coutendl; cout各进程已经得到的资源量,即矩阵allocation为: endlendl; for (i=0;iM;i+) cout进程Pi: ; for (j=0;jN;j+) coutALLOCATIONij ; coutendl; coutendl; void changdata(int k) int

27、 j; for (j=0;jN;j+) AVAILABLEj=AVAILABLEj-Requestj; ALLOCATIONkj=ALLOCATIONkj+Requestj; NEEDkj=NEEDkj-Requestj;void restoredata(int k) int j; for (j=0;jN;j+) AVAILABLEj=AVAILABLEj+Requestj; ALLOCATIONkj=ALLOCATIONkj-Requestj; NEEDkj=NEEDkj+Requestj;int chksec(int s) int WORK,FINISHW; int i,j,k=0; fo

28、r(i=0;iM;i+)FINISHi=FALSE; for(j=0;jN;j+) WORK=AVAILABLEj; i=s; doif(FINISHi=FALSE&NEEDij=WORK)WORK=WORK+ALLOCATIONij; FINISHi=TRUE; i=0; else i+; while(iM); for(i=0;iM;i+) if(FINISHi=FALSE) return 1; return 0; int chkmax(int s) int j,flag=0;for(j=0;jN;j+) if (MAXsj=ALLOCATIONsj) flag=1;AVAILABLEj=A

29、VAILABLEj+MAXsj;MAXsj=0;return flag;c int i=0,j=0; char flag=Y; while(flag=Y|flag=y) i=-1; while(i=M) cout请输入需申请资源的进程号(从P0到PM-1,否则重新输入!):; couti; if(i=M) cout输入的进程号不存在,重新输入!endl; cout请输入进程Pi申请的资源数:endl; for (j=0;jN;j+) cout 资源jRequestj; if(RequestjNEEDij) cout进程Pi申请的资源数大于进程Pi还需要j类资源的资源量!; cout申请不合理,

30、出错!请重新选择!endlAVAILABLEj) cout进程Pi申请的资源数大于系统可用j类资源的资源量!; cout申请不合理,出错!请重新选择!endlendl; flag=N; break; if(flag=Y|flag=y) changdata(i); if(chksec(i) coutendl; cout该分配会导致系统不安全! 本次资源申请不成功,不予分配!endl; coutendl; restoredata(i); else coutendl; cout经安全性检查,系统安全,本次分配成功,且资源分配状况如下所示:endl; coutendl;showdata(); if(c

31、hkmax(i)cout在资源分配成功之后,由于该进程所需的某些资源的最大需求量已经满足,endl;cout因此在进程结束后系统将回收这些资源!endl; cout在资源收回之后,各进程的资源需求和分配情况如下所示:endl;showdata(); coutendl; coutflag; 五、实验数据及处理结果六、实验体会或对改进实验的建议感觉上不是很难,但做起来有点棘手。七、参考资料计算机操作系统修订版 汤子瀛主编 西安电子科技大学出版社 现代计算机操作系统习题解析及实验指导南昌大学实验报告 -(4)进程调度算法的实现学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验

32、日期: 实验成绩: 一、实验目的通过实验加强对进程调度算法的理解和掌握。二、实验内容编写程序实现进程调度算法,具体可以编写程序实现先来先服务算法或优先度高者调度算法。三、实验要求1、需写出设计说明;2、设计实现代码及说明3、运行结果;四、主要实验步骤#include struct fcfs char name10; float arrivetime; float servicetime; float starttime; float finishtime; float zztime; float dqzztime; ; fcfs a100; void input(fcfs *p,int N)

33、int i; printf(intput the processs name & arrivetime & servicetime:nfor exmple: a 0 100n); for(i=0;i=N-1;i+) printf(input the %dth processs information:n,i+1); scanf(%s%f%f,&pi.name,&pi.arrivetime,&pi.servicetime); void Print(fcfs *p,float arrivetime,float servicetime,float starttime,float finishtime

34、,float zztime,float dqzztime,int N) int k; printf(run order:); printf(%s,p0.name); for(k=1;k%s,pk.name); printf(nthe processs information:n); printf(nnametarrivetservicetstarttfinishtzztdqzzn); for(k=0;k=N-1;k+) printf(%st%-.2ft%-.2ft%-.2ft%-.2ft%-.2ft%-.2ftn,pk.name,pk.arrivetime,pk.servicetime,pk.

35、starttime,pk.finishtime,pk.zztime,pk.dqzztime); /pai xu void sort(fcfs *p,int N) for(int i=0;i=N-1;i+) for(int j=0;j=i;j+) if(pi.arrivetimepj.arrivetime) fcfs temp; temp=pi; pi=pj; pj=temp; /yun xing jieduan void deal(fcfs *p, float arrivetime,float servicetime,float starttime,float finishtime,float

36、 &zztime,float &dqzztime,int N) int k; for(k=0;k=N-1;k+) if(k=0) pk.starttime=pk.arrivetime; pk.finishtime=pk.arrivetime+pk.servicetime; else pk.starttime=pk-1.finishtime; pk.finishtime=pk-1.finishtime+pk.servicetime; for(k=0;k=N-1;k+) pk.zztime=pk.finishtime-pk.arrivetime; pk.dqzztime=pk.zztime/pk.

37、servicetime; void FCFS(fcfs *p,int N) float arrivetime=0,servicetime=0,starttime=0,finishtime=0,zztime=0,dqzztime=0; sort(p,N); deal(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N); Print(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N); void main() int N; printf(-先来

38、先服务调度算法-n); printf(input the processs number:n); scanf(%d,&N); input(a,N); FCFS(a,N); 五、实验数据及处理结果六、实验体会或对改进实验的建议对课本知识了解后发现不算难。七、参考资料计算机操作系统修订版 汤子瀛主编 西安电子科技大学出版社 现代计算机操作系统习题解析及实验指导南昌大学实验报告 -(5)存储管理的模拟实现学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 实验成绩: 一、实验目的存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式管理的页面置换算法。二、实验内容1过随机数产生一个指令序列,共320条指令。其地址按下述原则生成:50%的指令是顺序执行的;25%的指令是均匀分布在前地址部分;25%的指令是均匀分布

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!