文档详情

操作系统实验指导书V2013.doc

发布:2017-01-19约字共19页下载文档
文本预览下载声明
目 录 《操作系统》实验教学大纲 1 实验一 进程管理 1 实验二 SPOOLing技术实现 12 《》实验教学大纲 一、基本信息 课程编码课程学时 课程类别 实验总学时 开出学期 开出单位 适用专业 二、实验安排 序号 实 验 项 目 实验学时 每组人数 实验类型 开出要求 1 验证 必做 2 设计 必做 三、实验目的、内容与要求 掌握C语言编程实现,上机调试运行得出实验结果; 3.写出预习报告和实验报告。 实验二 SPOOLing技术实现 (一)实验目的 1.加深对SPOOLing系统的理解; 2.进一步认识SPOOLing技术的实质; 3.分析、设计SPOOLing系统的实现方法; 4.了解Linux系统中SPOOLing的基本原理。 (二)实验内容 设计并运行一个简单的SPOOLing系统来模拟实际的SPOOLing输入/输出过程,以掌握这种以空间换时间的技术。要求将SPOOLing输入/输出处理程序编成一个独立的进程模块并与其他请求输入/输出的进程并发运行。SPOOLing进程负责把从输入设备输入的信息送到外存输入井中,或把外存输出井中的信息送到打印机等输出设备上输出。其余进程只要求编写输入/输出部分的程序。要求定义实施算法的相关数据结构,实现设备分配和SPOOLing算法。 (三)实验要求 1.掌握C语言编程实现,上机调试运行得出实验结果; 3.写出预习报告和实验报告。 四、考核方式 五、建议教材与教学参考书 大学出版社[1] 汤小丹.计算机操作系统.第三版.西安: 西安电子科技大学出版社[2] 徐虹. 操作系统实验指导. 北京: 清华大学出版社.2004 [3] 屠祁. 操作系统基础.第三版.北京: 清华大学出版社.2000 [4] 冯耀霖. 操作系统. 西安: 西安电子科技大学出版社.2001 [5] 左万历.计算机操作系统教程.第二版.北京:高等教育出版社.2004 六、编制说明 编制者: 组长: 执笔人: 编制时间:2009年3月 实验一 进程管理 实验目的 1.学会在Linux中利用系统调用fork()创建进程。 2.加深对进程概念的理解,明确进程和程序的区别。 3.进一步认识在系统内进程并发执行的实质。 4.分析进程竞争资源的现象,学习解决进程互斥的方法。 5.掌握Linux中进程通信的基本原理。 实验类型 验证性实验。 实验预备知识 1.阅读Linux的sched.h源码文件,加深对进程管理概念的理解。 2.阅读Linux的fork.c源码文件,分析进程的创建过程。 实验内容 1.进程的创建 【任务】 编写一段程序,使用系统调用fork()创建两个子进程,当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符;父进程显示字符“a”,子进程分别显示字符“b”和“c”。试观察记录屏幕上的显示结果,并分析原因。 【程序】 #include stdio.h main() { int p1,p2; while((p1=fork())= =-1); /*创建子进程p1,失败时循环*/ if(p1= =0) /*子进程p1创建成功*/ putchar(‘b’); else /*父进程返回*/ { while((p2=fork())= =-1); /*创建另一个子进程p2,失败时循环*/ if(p2= =0) /*子进程p2创建成功*/ putchar(‘c’); else putchar(‘a’); /*父进程执行*/ } } 【执行结果】 同学自己得到实验结果。 【分析原因】 同学自己分析多次执行产生不同实验结果的原因。 2.进程的控制 【任务】 修改已编写的程序,将每个进程的输出由单个字符改为一句话,再观察程序执行时屏幕上出现的现象,并分析其原因。如果在程序中使用系统调用lockf()来给每个进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。 【程序1】 #include stdio.h main() { int p1,p2,i; while((p1=fork())= =-1); if(p1= =0) for(i=0;i50;i++) pri
显示全部
相似文档