2022年操作系统实验指导书Windows .pdf

上传人:Q****o 文档编号:28413697 上传时间:2022-07-28 格式:PDF 页数:15 大小:284.98KB
返回 下载 相关 举报
2022年操作系统实验指导书Windows .pdf_第1页
第1页 / 共15页
2022年操作系统实验指导书Windows .pdf_第2页
第2页 / 共15页
点击查看更多>>
资源描述

《2022年操作系统实验指导书Windows .pdf》由会员分享,可在线阅读,更多相关《2022年操作系统实验指导书Windows .pdf(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、操作系统实验指导书李玲娟李刚编写李玲娟审核南京中医药大学信息技术学院2005 年 10 月名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 15 页 - - - - - - - - - 编 者 说 明 软件技术是操作系统最重要的计算机系统软件,同时也是计算机科学与技术专业的一门核心专业基础课,其发展极为迅速。学习计算机软件技术,特别是计算机操作系统技术,除了需要刻苦努力外,还需要掌握软件和操作系统的原理与设计技巧。这些原理与技巧可以说是计算机界的前辈们一代接一代不停歇的努力

2、所留下的知识与智慧的结晶,学习和掌握它们对于激发自己的创造力和想象力是很有帮助的。如何学习和掌握操作系统技术的原理与实际技巧呢?除了听课和读书之外,最好的方法就是在实践中练习,通过自己模拟设计操作系统的原理实验,可以培养程序设计的方法和技巧,提高编制和理解清晰、合理、可读性好的系统程序的能力,加深对操作系统课程的理解。使自身更好的掌握操作系统的基本概念、基本原理及基本功能,从而具有分析实际操作系统的基本能力,深入直观的理解操作系统使用的各类算法。操作系统实验指导书是针对这门课的实验编写的,书中设计了四个重要的操作系统原理实验,包括进程调度、分区式存储管理、虚拟存储管理和文件管理。四个实验难易层

3、次分明,重点突出, 其中实验一 (进程调度 )和实验二 (分区式存储管理)为设计性实验, 重在培养理论原理应用于实践的设计能力,而实验三 (虚拟存储管理 )和实验四 (文件管理 )为验证性实验, 重在验证教材中的理论原理。所有实验共18 学时,均采用C 语言作为编程语言模拟设计完成相关程序。本书编写中,参考了西安电子科技大学、清华大学的操作系统相关图书资料。本书由信息技术学院副院长李玲娟和应用教研室李刚两位教师编写,由李玲娟副教授审核。南京中医药大学教务处给予了指导和大力帮助,在此表示衷心的感谢!限于编者的水平,难免有疏漏与错误,敬请读者批评指正。李玲娟 李刚 2005年 10月 12日名师资

4、料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 15 页 - - - - - - - - - 目 录 实验一进程调度 .1实验二分区式存储管理 .4实验三虚拟存储管理 .8实验四文件管理 .11名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 15 页 - - - - - - - - - 南京中医药大学信息技术学院操作系统实验实验一进程调度实验性质: 设计建

5、议学时: 6 学时实验目的:通过这次实验,加深对进程概念的理解,进一步掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。预习内容:阅读教材计算机操作系统第二章和第三章,掌握进程管理及调度相关概念和原理。基本实验内容:设计程序模拟进程的轮转法调度过程。假设初始状态为:有n 个进程处于就绪状态,有m个进程处于阻塞状态。采用轮转法进程调度算法进行调度(调度过程中, 假设处于执行状态的进程不会阻塞 ),且每过t 个时间片系统释放资源,唤醒处于阻塞队列队首的进程。程序要求如下:1).输出系统中进程的调度次序;2).计算 CPU 利用率。实现提示:用 C 语言实现提示:1)程序中进程可用PCB 表

6、示,其类型描述如下:struct PCB_type char name ; /进程名int state ; / 进程状态2表示“执行”状态1表示“就绪”状态0表示“阻塞”状态int cpu_time ; / 运行需要的CPU 时间(需运行的时间片个数) 2)设置两个队列,将处于“就绪”状态的进程PCB 挂在队列ready 中;将处于“阻塞”状态的进程PCB 挂在队列blocked 中。队列类型描述如下: struct QueueNode struct PCB_type PCB; Struct QueueNode *next; 并设全程量:struct QueueNode *ready_head

7、=NULL, /ready 队列队首指针*ready_tail=NULL , /ready队列队尾指针*blocked_head=NULL, /blocked队列队首指针1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 15 页 - - - - - - - - - 南京中医药大学信息技术学院操作系统实验*blocked_tail=NULL; /blocked 队列队尾指针3)设计子程序 : start_state(); / 读入假设的数据,设置系统初始状态dispath

8、(); /模拟调度calculate(); /计算 CPU 利用率实验要求:1)上机前认真使用C 语言编写好程序,采用Turbo C 作为编译环境;2) 上机时独立调试程序3) 根据具体实验要求,填写好实验报告(包括思想、源程序、实例运行结果)。测试用数据:n=2 m=3 t=5 ready_head blocked_head 2 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 15 页 - - - - - - - - - 南京中医药大学信息技术学院操作系统实验dispa

9、th() 算法流程图:3 /*use_cpu 中记录 CPU 运行时间/*unuse_cpu 中记录 CPU 空闲时间否是是否是否是是否是unuse_cpu+ x+ x=tblocked队 首 进 程 入ready 队列队尾; x=0 begin use_cpu=0 x=0 unuse_cpu=0 ready 队 列 不 空 或blocked 队列不空ready 队列不空p?取 ready 队首元素p-PCB.state 置“运行”输出 p-PCB.name p-PCB.cpu_time- use_cpu+ p-PCB.cpu_time0p 入 ready 队列队尾释放 p end 名师资料总

10、结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 15 页 - - - - - - - - - 南京中医药大学信息技术学院操作系统实验实验二分区式存储管理实验性质 :设计建议学时 :6 实验目的:通过这次实验,加深对内存管理的认识,进一步掌握内存的分配、回收算法的思想。预习内容:阅读教材计算机操作系统第四章,掌握存储器管理相关概念和原理。实验内容:设计程序模拟内存的动态分区法存储管理。内存空闲区使用自由链管理,采用最坏适应算法从自由链中寻找空闲区进行分配,内存回收时假定不做与相邻空闲

11、区的合并。假定系统的内存共640K,初始状态为操作系统本身占用64K。在 t1 时间之后,有作业A、B、C、D 分别请求8K、16K、64K、124K 的内存空间;在t2 时间之后,作业C 完成;在t3时间之后,作业E 请求 50K 的内存空间;在t4 时间之后,作业D 完成。要求编程序分别输出t1、t2、t3、t4 时刻内存的空闲区的状态。实现提示( C 语言):1 程序中自由链队列的结点类型可描述如下:struct freelink int len, address;/* len为分区长度 /* address为分区起始地址 struct freelink *next; 内存占用区用链表描

12、述,其结点类型描述如下:struct busylink char name; /* 作业或进程名 name= S 表示 OS 占用int len , address; struct busylink *next; 并设全程量:struct freelink *free_head=NULL; /自由链队列(带头结点)队首指针struct busylink *busy_head=NULL, /占用区队列队(带头结点)首指针*busy_tail=NULL;/占用区队列队尾指针2.设计子函数:void start(void); /* 设置系统初始状态*/ struct freelink * p; st

13、ruct busylink *q; free_head=(struct freelink*)malloc(sizeof(struct freelink); free_head-next=NULL; / 创建自由链头结点busy_head=busy_tail=(struct busylink*)malloc(sizeof(struct busylink); 4 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 15 页 - - - - - - - - - 南京中医药大学信息技

14、术学院操作系统实验busy_head-next=NULL; / 创建占用链头结点 p=( struct freelink *)malloc(sizeof(struct freelink); p-address=64; p-len=640-64; (OS 占用了 64K ) p-next=NULL; free_head-next=p; q=( struct busylink *)malloc(sizeof(struct busylink); q-name=S; /* S 表示操作系统占用 */ q-len=64; q-address=0; q-next=NULL; busy_head-next=

15、q; busy_tail=q; void requireMemo(char name, int require); /*模拟内存分配 */ void freeMemo(char name); /* 模拟内存回收 */ void past(int time);/* 模拟系统过了time 时间 */ void printlink();/* 输出内存空闲情况(自由链的结点) */ 3 设计主函数:main() start(); past(t1); requireMemo(A,8); requireMemo(B,16); requireMemo(C,64); requireMemo( D,124);

16、printlink(); past(t2); freeMemo(C); printlink(); past(t3); requireMemo(E,50); printlink(); freeMemo( D ); printlink(); 实验要求:4)上机前认真使用C 语言编写好程序,采用Turbo C 作为编译环境;5) 上机时独立调试程序6) 根据具体实验要求,填写好实验报告(包括思想、源程序、实例运行结果)。5 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 15

17、页 - - - - - - - - - 南京中医药大学信息技术学院操作系统实验requireMemo(char name, int require)流程图如下:否beginfree_head-next-len=require printf(“Cant allocate”)end p=(struct busylink*)malloc(); p-name=name; p-address=free_head-next-address;p-len=require; p-next=NULL busy_tail-next=p;busy_tail=p; w=free_head-next; free_head

18、-next=w-next;w-len=require w-address=w-address+require; w-len=w-len-require; u=free_head; v=free_head-next; (v!=NULL)& v-lenw-lenu=v v=v-next free(w) u-next=w w-next=v end6 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 15 页 - - - - - - - - - 南京中医药大学信息技术学院操作系统实

19、验freeMemo(char name)流程图如下:7 否是否是q=p p=p-nextbeginq=busy_head p= busy_head-next (p!=NULL)& (p-name!=name)p=NULLif (p=busy_tail) busy_tail=q; q-next=p-next; len=p-len;address=p-address;free(p)printf(“%c is not exist”,name)end w=( struct freelink*) malloc();w-len=len; w-address=address; u=free_head v=f

20、ree_head-nextu=v v=v-nextend u-next=w w-next=v (v!=NULL)&(v-len len)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 15 页 - - - - - - - - - 南京中医药大学信息技术学院操作系统实验实验三虚拟存储管理实验性质 :验证建议学时 :3 实验目的:存储管理的主要功能之一是合理的分配空间。请求页式管理是一种常用的虚拟存储管理技术。本实验的目的是请求页式存储管理中页面置换算法模拟设计,了解虚拟存

21、储技术的特点,掌握请求页式存储管理的页面置换方法。预习内容:阅读教材计算机操作系统第四章,掌握存储器管理相关概念和原理。实验内容:(1)通过随机数产生一个指令序列,共320 条指令。指令的地址按下述原则生成:、50%的指令是顺序执行的;、25%的指令是均匀分布在前地址部分;、25%的指令是均匀分布在后地址部分。具体的实施方法是: 在0,319 的指令地址之间随机选取一起点m; 顺序执行一条指令,即执行地址为m+1 的指令; 在前地址 0,m+1 中随机选取一条指令并执行,该指令的地址为m ; 顺序执行一条指令,其地址为m +1; 在后地址 m+2,319 中随机选取一条指令并执行; 重复上述步

22、骤,直至执行320 次指令。(2) 将指令序列变换成页地址流设:页面大小为1K;用户内存容量为4 页到 32 页;用户虚存容量为32K;在用户虚存中,按每K 存放 10 条指令排列虚存地址,即320 条指令在虚存中的存放方式为:第 0 条第 9 条指令为第0 页(对应的虚存地址为0,9) ;第 10 条第 19 条指令为第1 页(对应的虚存地址为10, 19) ;. 第 310 条第 319 条指令为第31 页(对应的虚存地址为310,319) ;按以上方式,用户指令可组成32 页。(3) 计算并输出下述各种算法在不同的内存容量下的缺页率。 先进先出的算法(FIFO) ; 最近最少使用算法(L

23、RR ) ; 最佳淘汰法(OPT) :先淘汰最不常用的页地址; 最少访问页面算法(LFR) ; 最近不经常使用算法(NUR) 。其中和为选择内容。缺页率 =(页面失效次数)/(页地址流长度)在本实验中,页地址流的长度为320,页面失效次数为每次访问相应指令时,该指令所对应的页不在内存的次数。(4) 随机数产生办法8 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 15 页 - - - - - - - - - 南京中医药大学信息技术学院操作系统实验关于随机数产生办法,可以

24、使用系统提供函数rand(),分别进行初始化和产生随机数。例如: rand();语句可初始化的一个随机数;a0=10*rand()/32767*319+1; a1=10*rand()/32767*a0; 语句可用来产生a0与 a1中的随机数。实验指导1、数据类型定义(1)页面类型typedef struct int pn ,pfn,counter,time; pl_type; /*pn 为页号, pfn 为页面号, counter 为一个周期内访问该页面次数,time 为访问时间。(2)页面控制结构 pfc_struct int pn , pfn; struct pfc_struct *nex

25、t; ; typedef struct pfc_struct pfc_type; pfc_type pfctotal_vp,*freepf_head,*busypf_head; pfc_type *busypf_tail; /*pfctotal_vp定义用户进程虚页控制结构 *freepf_head为空页面头指针 *busypf_head为忙页面头指针 *busypf_tail为忙页面尾指针2、函数定义(1) void initialize( );/*初始化函数,给每个相关的页面赋值(2) void FIFO( ); /*计算使用FIFO 算法时的缺页率(3) void LRU( ); /*计

26、算使用LRU 算法时的缺页率(4) void OPT( ); /*计算使用OPT 算法时的缺页率(5) void LRU( ); /*计算使用LFU 算法时的缺页率(6) void NUR( ); /*计算使用NUR 算法时的缺页率3、变量定义(4) int atotal_struction: 指令流数据组(5) int pagetotal_instruction: 每个指令所属页号(6) int offsettotal_instruction: 每页装入 10 条指令后取模运算页号偏移量(7) int total_pf: 用户进程的内存页面数(8) int diseffect: 缺页率2、程

27、序流程图3、程序框架:#define total_struction 320 #define total_vp 32 typedef struct int pn ,pfn,counter,time; pl_type; pl_type ptotal_vp; pfc_struct int pn , pfn; struct pfc_struct *next; ; typedef struct pfc_struct pfc_type; pfc_type pfctotal_vp,*freepf_head,*busypf_head, *busypf_tail; 9 名师资料总结 - - -精品资料欢迎下载

28、 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 15 页 - - - - - - - - - 南京中医药大学信息技术学院操作系统实验int diseffect, atotal_struction; int pagetotal_struction,offsettotal_struction; void initialize( ); void FIFO( ); / LRU( ); main( ) int s,i,j; sand(getpid()*10); s=(float)319*rand()/32767+1;

29、for(i=0;i total_struction;i+) ai=s; ai+1=ai+1; aI+2=(float)ai*rand()/32767;ai+3=ai+2+1; s=(float)rand()*(318-ai+2)/32767+ai+2+2; for( i=0;itotal_instruction;i+) pagei=ai/10;offseti=ai%10; for(i=4;i=32;i+) FIFO(i);/ LRU( ); 例如: a0=194 a1=195 a2=55 a3=56 a4=73 a5=74 a6=30 a7=31 a8=257 a9=258 a10=210 a

30、11=211 a12=319 a13=320 a14=46 a15=47 a16=273 a17=274 a18=205 a19=206 10 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 15 页 - - - - - - - - - 南京中医药大学信息技术学院操作系统实验实验四文件管理实验性质 :设计建议学时 :3 实验目的:本实验的目的是通过一个阅读和设计部分简单多用户文件系统的过程,加深理解文件系统的内部功能和内部实现。预习内容:阅读教材计算机操作系统第六章,掌

31、握文件管理相关概念和原理。实验内容:为 DOS 系统设计一个简单的二级文件系统。要求做到以下几点: 可以实现下列几条命令 LOGIN 用户登录 DIR 列文件目录 CREATE 创建文件 DELETE 删除文件 OPEN 打开文件 CLOSE 关闭文件 READ 读文件 WRITE 写文件 COPY 拷贝文件 列目录时要列出文件名,物理地址,保护码和文件长度。 源文件可以进行读写保护。 实验提示:首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。 用户创建的文件,可以编号存储于磁盘上。如:file0,file1,file2并以

32、编号作为物理地址,在目录中进行登记。 实验实现程序提示(C 语言):1、程序中相关数据类型定义(本程序需要在c: 下建一个名为osfile的目录及一个名为file的子目录): typedef struct /*the structure of OSFILE*/ 11 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 15 页 - - - - - - - - - 南京中医药大学信息技术学院操作系统实验12 int fpaddr; /*file physical addres

33、s*/ int flength; /*file length*/ int fmode; /*file mode:0-Read Only;1-Write Only;2-Read and Write(default);*/ char fnameMAXNAME; /*file name*/ OSFILE; typedef struct /*the structure of OSUFD*/ char ufdnameMAXNAME; /*ufd name*/ OSFILE ufdfileMAXCHILD; /*ufd own file*/ OSUFD; typedef struct /*the stru

34、cture of OSUFDLOGIN*/ char ufdnameMAXNAME; /*ufd name*/ char ufdpword8; /*ufd password*/ OSUFD_LOGIN; typedef struct /*file open mode*/ int ifopen; /*ifopen:0-close,1-open*/ int openmode; /*0-read only,1-write only,2-read and write,3-initial*/ OSUFD_OPENMODE; 实验要求:1) 上机前认真使用C 语言编写好程序,采用Turbo C 作为编译环境;2) 上机时独立调试程序3) 根据具体实验要求,填写好实验报告(包括思想、源程序、实例运行结果)。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 15 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁