操作系统实验指导书

上传人:软*** 文档编号:157049500 上传时间:2022-09-28 格式:DOCX 页数:15 大小:169.15KB
收藏 版权申诉 举报 下载
操作系统实验指导书_第1页
第1页 / 共15页
操作系统实验指导书_第2页
第2页 / 共15页
操作系统实验指导书_第3页
第3页 / 共15页
资源描述:

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

1、操作系统实验指导书徐军利编写工业学院计算机与信息工程系2009年8月实验一 进程管理1目的和要求通过实验理解进程的概念,进程的组成( PCB 结构),进程的并发执行和操作 系统进行进程管理的相关原语(主要是进程的创建、执行、撤消) 。2实验容用C语言编程模拟进程管理,至少要有:创建新的进程;查看运行进程;换出 某个进程;杀死运行进程以及进程之间通信等功能。3实验环境Windows操作系统、VC+6.0C语言4实验提示PCB结构通常包括以下信息:进程名,进程优先数,轮转时间片,进程所占用 的 CPU 时间,进程的状态,当前队列指针等。可根据实验的不同, PCB 结构的容 可以作适当的增删。主体程

2、序#include conio.h#include stdio.h#include stdlib.hstruct PCB_type int pid;int priority;int cputime;struct PCB_type neicun20; int shumu=0,pid_l;main()int n,m,i; char a;n=1;while(n=1)clrscr();printf(n*、);printf(n* 进程演示系统printf(n*、);printf(n1.创建新的进程2.查看运行进程printf(n3.换出某个进程4.杀死运行进程printf(n5.进程之间通信6.退出系统

3、);););printf(n*、);printf(n 请选择(1 6);a=getchar();switch(a) case1:create( );break;case2:run( ); /* 自定义过程 */ break;case3:huanchu(); /* 自定义过程 */ break;case4:kill( );break;case5:tongxun( ); /* 自定义过程 */ break;case6: exit(0);default: n=0;create( ) /* 创建一个进程的示例(不完整的程序) */ if(shumu=20)printf(n 存已满,请先结束或换出进程

4、n);elseprintf(n 请输入新进程的 pidn); scanf(%d,&neicunshumu-1.pid); printf(n 请输入新进程的优先级 n); scanf(%d,&neicunshumu-1.youxian);printf(n 请输入新进程的大小 n);scanf(%d,&neicunshumu-1.daxiao);shumu+;5实验运行结果* 进程演示系统 *1.创建新的进程2.查看运行进程3.换出某个进程4.杀死运行进程5.进程之间通信6.退出系统*请选择(16) 然后根据你选择的不同,出现不同的结果。6. 实验要求:1) 上机前认真使用 C 语言编写好程序,采

5、用 Visual C+6.0 作为编译环境;2) 上机时独立调试程序3) 根据具体实验要求,填写好实验报告(包括目的和要求、实验容、实验环 境、设计思想、源程序、实例运行结果、总结) 。实验二 进程调度1目的和要求 通过这次实验,理解进程调度的过程,进一步掌握进程状态的转变、进程调度 的策略,进一步体会多道程序并发执行的特点,并分析具体的调度算法的特点,掌 握对系统性能的评价方法。2实验容阅读教材计算机操作系统第二章和第三章,掌握进程管理及调度相关概念 和原理编写程序模拟实现进程的轮转法调度过程,模拟程序只对 PCB 进行相应的调 度模拟操作,不需要实际程序。假设初始状态为:有 n 个进程处于

6、就绪状态,有 m 个进程处于阻塞状态。采用轮转法进程调度算法进行调度 ( 调度过程中,假设处于 执行状态的进程不会阻塞 ) ,且每过 t 个时间片系统释放资源,唤醒处于阻塞队列 队首的进程。程序要求如下:1)输出系统中进程的调度次序;2)计算CPU利用率。3实验环境Windows操作系统、VC+6.0C 语言4实验提示用 C 语言实现提示:int pid ;/进程名int state ;/进程状态2表示“执行”状态1表示“就绪”状态0表示“阻塞”状态struct PCB_typeint cpu_time ;/运行需要的 CPU 时间(需运行的时间片个数)1)程序中进程可用 PCB 表示,其类型

7、描述如下:2)设置两个队列,将处于“就绪”状态的进程PCB挂在队列ready中;将处于“阻塞”状态的进程 PCB挂在队列blocked中。队列类型描述如下:struct QueueNodestruct PCB_type PCB;Struct QueueNode *next;/ready 队列队首指针/ready 队列队尾指针并设全程量:struct QueueNode *ready_head=NULL, *ready_tail=NULL ,*blocked_head=NULL, /blocked 队列队首指针 *blocked_tail=NULL;/blocked 队列队尾指针3)设计子程序:

8、一start_state();/读入假设的数据,设置系统初始状态dispath();模拟调度calculate。;/计算 CPU 利用率5.实验要求:1)上机前认真使用C语言编写好程序,采用Visual C+6.0作为编译环境;2)上机时独立调试程序3)根据具体实验要求,填写好实验报告(包括目的和要求、实验容、实验环境、 设计思想、源程序、实例运行结果、总结)。4)测试用数据:n=2m=3t=5ready_headblocked headdispath()算法流程图:beginuse_cpu=0 x=0 unuse_cpu=0/*use_cpu中记录CPU运行时间/*unuse_cpu中记录C

9、PU空闲时间是blocked队列不空是ready 队列不空或ready队列不空p 取ready队首元素 p-PCB.state 置运行” 输出 p-PCB.name p-PCB.cpu_time- use_cpu+endunuse_cpu+释放p是否p-PCB.cpu timep入ready队列队尾曰 疋X+x=t是blocked 队首进程入 ready队列队尾;x=0实验三 可变分区存储管理1目的和要求通过这次实验,加深对存管理的认识,进一步掌握存的分配、回收算法的思 想。2实验容阅读教材计算机操作系统第四章,掌握存储器管理相关概念和原理。 编写程序模拟实现存的动态分区法存储管理。 存空闲区

10、使用自由链管理,采 用最坏适应算法从自由链中寻找空闲区进行分配, 存回收时假定不做与相邻空闲 区的合并。假定系统的存共640K,初始状态为操作系统本身占用64K。在t1时间之后, 有作业A B C、D分别请求8K、16K、64K、124K的存空间;在t2时间之后, 作业C完成;在t3时间之后,作业E请求50K的存空间;在t4时间之后,作业 D完成。要求编程序分别输出t1、t2、t3、t4时刻存的空闲区的状态。3实验环境Windows操作系统、VC+6.0C语言4实验提示用c语言实现提示:1.程序中自由链队列的结点类型可描述如下:struct freelinkint len, address;

11、/* len 为分区长度/* address 为分区起始地址struct freelink *next; 存占用区用链表描述,其结点类型描述如下: struct busylinkchar name; /* 作业或进程名 name= S表示OS占用int len , address;structbusylink *next;并设全程量:structfreelink*free_head=NULL;/自由链队列 (带头结点) 队首指针structbusylink*busy_head=NULL,/占用区队列队 (带头结点) 首指针*busy_tail=NULL ;/占用区队列队尾指针2.设计子函数:v

12、oid start(void);/* 设置系统初始状态 */struct freelink * p;struct busylink *q;free_head=(struct freelink*)malloc(sizeof(struct freelink); free_head-next=NULL; / 创建自由链头结点 busy_head=busy_tail=(struct busylink*)malloc(sizeof(struct busylink);busy_head-next=NULL; / 创建占用链头结点p=( struct freelink *)malloc(sizeof(str

13、uct 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=q; busy_tail=q;void requireMemo(char name, int require); /* 模拟存分配 */void freeMemo(char

14、 name); /* 模拟存回收 */void past(int time); /* 模拟系统过了 time 时间 */void printlink(); /* 输出存空闲情况(自由链的结点) */3.设计主函数:main() start();past(t1);requireMemo( A ,8)r;equireMemo( B ,16);requireMemo( C ,64); requireMemo( D ,124);printlink();past(t2);freeMemo( C );printlink();past(t3);requireMemo( E ,50); printlink()

15、;freeMemo( D );5. 实验要求:1)上机前认真使用C语言编写好程序,采用 Visual C+6.0作为编译环境;2)上机时独立调试程序3)根据具体实验要求,填写好实验报告(包括目的和要求、实验容、实验环境、设计思想、源程序、实例运行结果、总结) 。requireMemo(char name, int require)流程图如下:endprintf( “ Can t allocabeginfree head-next-len=requirep=(struct busyli nk*)malloc(te否”);w=free_head-n ext;p-n ame=n ame;p-addr

16、ess=free_head-n ext-address;p-le n=require; p-n ext=NULLbusy tail-n ext=p;busy tail=p;free_head-n ext=w-n ext;w_len=requirew-address=w-address+reqire;w-le n= w-le n-require;u=free_head;v=Tiee head-nexl;free(w)1Fu-n ext=w w-n ext=vP1end(v!=NULL)& v-len w-lenu=vv=v- nextfreeMemo(char name)流程图如下:,n ame

17、)实验四 页式虚拟存储管理页面置换算法1目的和要求存储管理的主要功能之一是合理的分配空间。 请求页式管理是一种常用的虚 拟存储管理技术。 本实验的目的是: 通过编写和调试请求页式存储管理中页面置 换算法的模拟程序以加深对存储管理方案的理解, 了解虚拟存储技术的特点, 掌 握请求页式存储管理的页面置换方法。2实验容阅读教材计算机操作系统第四章,掌握存储器管理相关概念和原理。 编写程序模拟实现页式虚拟存储管理的最佳页面置换算法。前提:(1)页面分配采用固定分配局部置换。(2)作业的页面走向和分得的物理块数预先指定。可以从键盘输入也可以 从文件读入。(3)置换算法的置换过程输出可以在显示器上也可以存

18、放在文件中,但必 须清晰可读,便于检验。3实验环境Windows操作系统、VC+6.0C语言4实验提示(1)数据结构 要模拟实现某一个置换算法,有如下一些对象需要用相关的数据结构来描 述:作业的页面走向(执行过程中对页面的访问顺序) 。可以用数组也可以 用字符串。如果用数组,则页面走向的长度受数组长度限制,如果用字 符串,则需要将字符串进行解析,将字符串经过解析处理后变成一个页面的排列顺序。考虑最佳置换算法 (“向前看”)和其他置换算法(“向 后看“)的特点。页框(作业分得的物理块) 。由于作业分得的物理块数在置换算法执行 之前已经确定,可以用一些比较简单的数据结构实现。在综合置换算法 的原理

19、,可以灵活采用相应的数据结构(如队列、数组、堆栈) ,尽可 能使程序的时间复杂度最低。 采用不同的数据结构还要配合在数据结构 上的相应操作才行。2)功能模块划分大体上可以将整个程序的模块划分成如下几个部分:1)主模块:主要是初始化、界面和模块调用。2)页面走向输入模块。(从键盘读入数据结构或将页面走向写入文件)3)置换算法模块。* 判断模块。决定换出哪一块。每一种置换算法对应一种判断算 法。* 调整模块。根据判断模块的结果, 调整作业分得物理块集合中 逻辑页面的情况。* 置换过程输出模块(在显示器上显示或写入文件) 。该模块每 发生一次置换,由置换算法模块调用一次。除此之外,有些反复执行的操作

20、考虑用过程或函数实现。总而言之,整个程序应该结构清晰,界面友好,可读性好,易调试,易扩充,易维护。5. 实验要求:1)上机前认真使用C语言编写好程序,采用Visual C+6.0作为编译环境;2)上机时独立调试程序3)根据具体实验要求,填写好实验报告(包括目的和要求、实验容、实验环境、设计思想、源程序、实例运行结果、总结)实验五 用户接口实验1目的和要求通过上机操作的实践理解操作系统的作业级接口,着重理解 shell 的作用和 工作过程,通过编写程序,在程序中调用操作系统的系统调用来加深对程序级接 口的理解,着重理解系统调用的实现。2实验容选做任意一个:能够熟练使用 Linux 系统的键盘命令

21、和 X-window 图形界面,熟悉 shell 编程语言,编写一个简单的 shell 程序。指导学生在核文件中添加一个 自定义的系统调用(或者利用现有操作系统的系统调用) ,编程来调用 自己设计(选定)的这系统调用。练习使用DOS勺键盘命令,熟悉批处理编程的语法,编写带参数的简单 批处理程序,通过使用 DOS勺作业级接口(键盘命令)和 WINDOWS作 业级接口(图形界面)来分别理解二者的shell 工作原理。理解Command.cor和IE在操作系统中的作用。编写汇编语言程序,调用21号软中断,理解系统调用的作用和功能,具体体会其实现。编写程序, 调用windows的API,理解windows的系统调用作用和功能。3实验环境安装有多个操作系统的 卩。机(DOS Windows Linux )4实验要求:1)上机前认真使用C语言编写好程序,采用Visual C+6.0作为编译环境;2)上机时独立调试程序3)根据具体实验要求,填写好实验报告(包括目的和要求、实验容、实验 环境、源程序、运行结果、总结) 。

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