【精品实用】操作系统实验指导书_第1页
【精品实用】操作系统实验指导书_第2页
【精品实用】操作系统实验指导书_第3页
【精品实用】操作系统实验指导书_第4页
【精品实用】操作系统实验指导书_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

操作系统实验指导书 烟台大学计算机学院 操作系统课程组 20081 第一部分 操作系统上机指导 作系统环境: S () (登录到系统 常用命令练习 : 用 号(超级用户) 注册,口令为 意大小写)。注册成功出现 #号(超级用户系统提示符 ,普通用户的系统提示符为 $)。 1 注销(退出)系统: 练习使用命令 意 令区分大小写。) 使用 看当前目录内容;使用 看指定目录内容,如 /目录, /录 使用 看当前目录内容;使用 看当前目录内容 4使用 变当前目录 . 回到上层目录 ; 显示当前路径 6建立目录 0 15:35:17 注意密码没有回显登录成功 登录界面 *用户名:码: /*命令行模式 */ 启动在 S(启动 2 目录名 ; 删除目录: 8复制文件 如 文件名 1 文件名 2 9移动文件或目录 : 10删除文件 1. 显示文件内容: (分页显示 ); 12. 显示文件: 件名 建立文件: 文件名, d 结束输入 使用编辑器 辑文件 1. 进入 文本模式之后,在命令行键入 vi 后回车。下面作一些简单的解释:首先令 是打开 辑器。后面的 用户即将编辑的 c 文件名字,注意扩展名字是 然, 辑器功能很强,可以用它来编辑其它格式的文件,比如汇编文件,其扩展名字是 可以直接用 开一个新的未命名的文件,当保存的时候再给它命名,只是这样做不很方便。 2. 最基本的命令 I :当进入刚打开的文件时,不能写入信息,这时按一下键盘上的 I 键( 插入的意思,就可以进入编辑模式了。如下图所示: 3. a 与 i 是相同的用法 4. 当文件编辑完后,需要保存退出,这时需要经过 以下几个步骤: 1)按一下键盘上的 ; 2)键入冒号 (: ),紧跟在冒号后面是 思 是保存并退出)。如果不想保存退出,则在第二步键入冒号之后,键入 q! (不带 w,机尾部保存)。如下图所示: 5. 退出 辑器的编辑模式之后,要对刚才编写的程序进行编译。编译的命令是: 3 其中 数: 要编译的 源 文件 的 名称 , 括号表示括号内部的内容可输入也可以不输入 (中括号本身不再命令行中出现) 。 如果 不输入 默认的输出文件是 6. 最后一步是运行程序,方法如下: ./加新用户、修改文件属性 1 添加新用户(在 ,按默认值回答) 用户名;如 ; 以新用户登录到系统 2修改用户口令 户名 3控制文件属性 使用 l 查看文件属性 改变用户的所有权: 用户名 文件名 改变文件权限: g+w 文件名; 件名 或使用数字方式修改:如 644 文件名; 755 文件名 u (户 ), g ( ), o (他 ); w 写访问权限 ,r 读访问权限 , x 执行权限 4查看相关命令的帮助: 令名 5显示当前系统中已注册的用户信息: 显示当前注册的用户信息: 件目录的属性显示格式: 如: 1 138 5 19:34 3 80 5 19:43 三种权限: 件或目录名 最后修改的日期和时间 文件的拥有者 用户所在的组 与文件链接的数 文件的访问权限 4 第二部分 操作系统实验 实验 1 1、实验目的 ( 1) 熟悉 会使用各种 ( 2)学会使用 语言程序,并能对其 编译和调试。 2、 实 验预备内容 ( 1)参阅相关 悉 ( 2) 参阅相关 悉 3、实验内容 ( 1) 以 使用“ ,“ 等命令来实现基本的文件操作并观察 ( 2) 使用 程序,并用 用 4、思考 ( 1) 用户登陆和操作界面以及文件系统上有哪些特点 ? 实验 2 进程管理 1、实 验目的 ( 1)加深对进程概念的理解,明确进程和程序的区别。 ( 2)进一步认识并发执行的实质。 ( 3)分析进程竞争资源现象,学习解决进程互斥的方法。 ( 4)了解 2、 实 验预备内容 ( 1)阅读 深对进程管理概念的理解。 ( 2)阅读 析进程的创建过程。 3、实验内容 ( 1)进程的创建 编写一段源程序,使系统调用 创建两个子进程,当此程序运行时,在系统中有一个父进程和两个 子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符 “a”; 子进程分别显示字符 “b”和字符 “c” 。试观察纪录屏幕上的显示结果,并分析原因。 ( 2)进程的控制 修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕出现的现象,并分析原因。 如果在程序中使用调用 来给每一个子进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。 ( 3) 编写一段程序,使其现实进程的软中断通信。 要求:使用系统调用 创建两个子进程,再用系统调 用 让父进程捕捉键盘上来的中断信号(即按 当捕捉到中断信号后,父进程用系统调用 向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止: 父进程等待两个子进程终止后,输出如下的信息后终止 5 在上面的程序中增加语句 和 观察执行结果 ,并分析原因。 ( 4)进程的管道通信 编制一段程序,实现进程的管理通信。 使用系统调用 建立一条管道线;两个子进程 2分别向管道中写一句话: is a is a 而父进程则从管道中读出来自于两个子进程的信息,显示在屏幕上。 要求父进程先接收子进程 后 再接收子进程 4、思考 ( 1)系统是怎样创建进程的? ( 2)可执行文件加载时进行了哪些处理? ( 3)当首次调用新创建进程时,其入口在哪里? ( 4)进程通信有什么特点? 实验 3 进程间通信 1、实验目的 (允许在任意进程间大批量地交换数据 。本实验的目的是了解和熟悉 2、实验预备内容 阅读 悉 3、实验 内容 ( 1)消息的创建,发送和接收。 使用系统调用 ), ), ), 及 ) 编制一长度为 1 观察上面的程序, 说明控制消息队列系统调用 ) 在此起什么作用 ? ( 2)共享存储区的创建、附接和段接。 使用系统调用 ,编制一个与上述功能相同的程序。 ( 3) 比较上述( 1),( 2)两种消息通信机制中数据传输的时间。 实验 4 存储管 理 1、实验目的 存储管理的主要功能之一是合理地分配空间。请求页式管理 是 一种常用的虚拟存储管理技术。 本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的技术特点,掌握请求页式存储管理的页面置换算法。 2、实验内容 ( 1)通过随机数产生一个指令序列,共 320条指令。指令的地址按下 述 原则生成: 50% 的指令是顺序执行的; 50% 的指令是均匀分布在前地址部分; 50% 的指令是均匀分布在后地址部分。 具体的实施方法是: 在 0, 319 的指令之间随即选取一起点 m; 顺序执行一条指令,即执行地址为 m+1的指令; 在前地址 0, m+1中随机选取一条指令并执行,该指令的地址为 m ; 6 顺序执行一条指令,其地址为 m + 1; 在后地址 m + 2, 319中随机选取一条指令并执行; 重复上述步骤 - ,直到执行 320次指令。 ( 2)将指令序列变换为页地址流 设: 页面大小为 1k; 用户内存容量为 4 页到 32 页; 用户虚存容量为 32k。 在用户虚存中,按 每 0条指令排在虚存地址,即 320条指令在虚存中的存放方式为: 第 0条 条指令为第 0页(对应虚存地址为 0, 9); 第 10条 9条指令为第一页 ( 对应虚存地址为 10, 19); 第 310条 第 319条指令为第 31页(对应虚地址为 310, 319)。 按以上方式,用户指令可组成 32页。 ( 3)计算并输出下述各种算法在不同内存容量下的命中率。 先进先出的算法( 最近最少使用算法( 最佳淘汰算法( 淘汰 最不常用的页地址; 最少访问页面算法( 最近最不经常使用算法( 其中 和 为选择内容。 命中率 =1页地址流长度 在本实验中,页地址流长度为 320,页面失效次数为每次访问相应指令时,该指令 所 对应的页不在内存的次数。 3、随机数产生办法, 和 ,分别进行初始化和产生随机数。例如 : ); 语句可初始化一个随机数; a0=10*319+1; a1=10*a0; 语句可用来产生 a0与 a1中的随机数。 实验 5 文件系统设计 1、实验目的 通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。 2、实验内容 为 求做到以下几点: ( 1)可以实现下列几条命令(至少 4条); 用户登陆 列文件目录 创建文件 删除文件 打开文件 关闭文件 7 读文件 写文件 ( 2)列目录时要列出文件名、物理地址、保护码和文件长度; ( 3)源文件可以进行读 写 保护。 3、实验提示 ( 1)首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。 ( 2)用户创建的文件,可以编号存储于磁盘上。如 目录中进行登记。 实验 6 处理器调度 一、实验内容 选择一个调度算法,实现处理器调度。 二、实验目的 在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。当就绪进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。本实验模拟在单处理器情况下的处理器调度,帮助学生加深了解处理器调度的工作。 三、实验题目 本实验有两个题,学生可选择其中的一题做实验。 第一题:设计一个按优先数调度算法实现处理器调度的程序。 提示 : (1) 假定系统有五个进程,每一个进程用一个进程控制块 代表,进程控制块的格式为: 进程名 指针 要求运行时间 优先数 状态 其中,进程名 作为进程的标识,假设五个进程的进程名分别为 指针 按优先数的大小把五个进程连成队列,用指针指出下一个进程的进程控制块的首地址,最后一个进程中的指针为“ 0”。 要求运行时间 假设进程需要运行的单位时间数。 优先数 赋予进程的优先数,调度时总是选取优先数大的进程先执行。 状态 可假设有两种状态,“就绪”状态和“结束”状态。五个进程的初始状态都为“就绪”,用“ R”表示,当一个进程运行结束后,它的状态为“结束”,用“ E” 表示。 (2) 在每次运行你所设计的处理器调度程序之前,为每个进程任意确定它的“优先数”和“要求运行时间”。 (3) 为了调度方便,把五个进程按给定的优先数从大到小连成队列。用一单元指出队首进程,用指针指出队列的连接情况。例: 8 队首标志 1 2 3 4 5 0 3 1 2 4 1 5 3 4 2 R R R R R 4) 处理器调度总是选队首进程运行。采用动态改变优先数的办法,进程每运行一次优先数就减“ 1”。由于本实验是模拟处理器调度,所以,对被选中的进程并不实际的启动运行,而是执行: 优先数 求运行时间 模拟进程的一次运行。 提醒注意的是:在实际的系统中,当一个进程被选中运行时,必须恢复进程的现场,让它占有处理器运行,直到出现等待事件或运行结束。在这里省去了这些工作。 (5) 进程运行一次后,若要求运行时间 0,则再将它加入队列(按优先数大小插入,且置队首标志) ;若要求运行时间 =0,则把它的状态修改成“结束”( E),且退出队列。 (6) 若“就绪”状态的进程队列不为空,则重复上面( 4)和( 5)的步骤,直到所有进程都成为“结束”状态。 (7) 在所设计的程序中应有显示或打印语句,能显示或打印每次被选中进程的进程名以及运行一次后进程队列的变化。 (8) 为五个进程任意确定一组“优先数”和“要求运行时间”,启动所设计的处理器调度程序,显示或打印逐次被选中进程的进程名以及进程控制块的动态变化过程。 第二题:设计一个按时间片轮转法实现处理器调度的程序。 提示 : (1) 假定系统有五个进程,每一个进程用一个进程控制块 代表。进程控制块的格式为: 进程名 指针 要求运行时间 已运行时间 状态 其中,进程名 作为进程的标识,假设五个进程的进程名分别为 指针 进程按顺序排成循环队列,用指针指出下一个进程的进程控制块的首地址,最后一个进程的指针指出第一个进程的进程控制块首地址。 要求运行时间 假设进程需要运行的单位时间数。 已运行时间 假设进程已经运行的单位时间数,初始值为“ 0”。 状态 有两种状态,“就绪”和“结束”,初始状 态都为“就绪”,用“ R”表示。当一个进程运行结束后,它的状态为“结束”,用“ E”表示。 (2) 每次运行所设计的处理器调度程序前,为每个进程任意确定它的“要求运行时间”。 (3) 把五个进程按顺序排成循环队列,用指针指出队列连接情况。另用一标志单元记录轮到运行的进程。例如,当前轮到 有: 标志单元 9 1 2 3 4 5 3 1 2 4 1 0 0 0 0 R R R R R 4) 处理器调度总是选择标志单元指示的进程运行。由于本实验是模拟处理器调度的功能,所以,对被选中的进程并不实际的启动运行,而是执行: 已运行时间 +1 来模拟进程的一次运行,表示进程已经运行过一个单位的时间。 请同学注意:在实际的系统中,当一个进程被选中运行时,必须置上该进程可以运行的时间片值,以及恢复进程的现场,让它占有处理器运行,直到出现等待事件或运行满一个时间片。在这时省去了这些工作,仅用“已运行 时间 +1”来表示进程已经运行满一个时间片。 (5) 进程运行一次后,应把该进程的进程控制块中的指针值送到标志单元,以指示下一个轮到运行的进程。同时,应判断该进程的要求运行时间与已运行时间,若该进程的要求运行时间 已运行时间,则表示它尚未执行结束,应待到下一轮时再运行。若该进程的要求运行时间 =已运行时间,则表示它已经执行结束,应指导它的状态修改成“结束”( E)且退出队列。此时,应把该进程的进程控制块中的指针值送到前面一个进程的指针位置。 (6) 若“就绪”状态的进程队列不为空,则重复上面的( 4)和( 5)的步骤 ,直到所有的进程都成为“结束”状态。 (7) 在所设计的程序中应有显示或打印语句,能显示或打印每次选中进程的进程名以及运行一次后进程队列的变化。 (8) 为五个进程任意确定一组“要求运行时间”,启动所设计的处理器调度程序,显示或打印逐次被选中的进程名以及进程控制块的动态变化过程。 四、实验报告 (1) 实验题目。 (2) 程序中使用的数据结构及符号说明。 (3) 流程图。 (4) 打印一份源程序并附上注释。 (5) 打印程序运行时的初值和运行结果。要求如下: 进程控制块的初始状态。 选中运行的 进程名以及选中进程运行后的各进程控制块状态。 对于 要求每选中一个进程运行后都要打印。 实验 7 主存储器空间的分配和回收 一、实验内容 主存储器空间的分配和回收。 二、实验目的 一个好的计算机系统不仅要有一个足够容量的、存取速度高的、稳定可靠的主存储器,而且要能合理地分配和使用这些存储空间。当用户提出申请存储器空间时,存储管理必须根据申请者的要求,按一定的 10 0 5k 10k 14k 26k 32k 128k 策略分析主存空间的使用情况,找出足够的空闲区域分配给申请者。当作业撤离或主动归还主存资源时,则存储管理要收回作业占用的主存空间或归还部分主存空 间。主存的分配和回收的实现虽与主存储器的管理方式有关的,通过本实验帮助学生理解在不同的存储管理方式下应怎样实现主存空间的分配和回收。 三、实验题目 本实验模拟在两种存储管理方式下的主存分配和回收。 第一题:在可变分区管理方式下采用最先适应算法实现主存分配和实现主存回收。 提示 : 可变分区方式是按作业需要的主存空间大小来分割分区的。当要装入一个作业时,根据作业需要的主存量查看是否有足够的空闲空间,若有,则按需要量分割一个分区分配给该作业;若无,则作业不能装入。随着作业的装入、撤离,主存空间被分成许多个分区 ,有的分区被作业占用,而有的分区是空闲的。例如: 操作系统 作业 1 作业 3 空闲区 作业 2 空闲区 为了 说明哪些区是空闲的,可以用来装入新作业,必须要有一张空闲区说明表,格式如下: 起 址 长 度 状 态 第一栏 14 K 12 K 未 分 配 第二栏 32 K 96 K 未 分 配 空 表 目 空 表 目 其中,起址 指出一个空闲区的主存起始地址。 长度 指出从起始地址开始的一个连续空闲的长度 。 状态 有两种状态,一种是“未分配”状态,指出对应的由起址指出的某个长度的区域是空闲区;另一种是“空表目”状态,表示表中对应的登记项目是空白(无效),可用来登记新的空闲区(例如,作业撤离后,它所占的区域就成了空闲区,应找一个“空表目”栏登记归还区的起址和长度且修改状态)。由于分区的个数不定,所以空闲区说明表中应有适量的状态为“空表目”的登记栏目,否则造成表格“溢出”无法登记。 上述的这张说明表的登记情况是按提示( 1)中的例所装入的三个作业占用的主存区域后填写的。 (2) 当有一个新作业要求装 入主存时,必须查空闲区说明表,从中找出一个足够大的空闲区。有时找到的空闲区可能大于作业需要量,这时应把原来的空闲区变成两部分:一部分分给作业占用;另一部分又成为一个较小的空闲区。为了尽量减少由于分割造成的空闲区,而尽量保存高地址部分有较大的连续空闲区域,以利于大型作业的装入。为此,在空闲区说明表中,把每个空闲区按其地址顺序登记,即每个后继的空闲区其起始地址总是比前者大。为了方便查找还可使表格“紧缩”,总是让“空表目”栏集中在表格的后部。 11 (3) 采用最先适应算法(顺序分配算法)分配主存空间。 按照作业的需要 量,查空闲区说明表,顺序查看登记栏,找到第一个能满足要求的空闲区。当空闲区大于需要量时,一部分用来装入作业,另一部分仍为空闲区登记在空闲区说明表中。 由于本实验是模拟主存的分配,所以把主存区分配给作业后并不实际启动装入程序装入作业,而用输出“分配情况”来代替。最先适应分配算法如图 4 (4) 当一个作业执行结束撤离时,作业所占的区域应该归还,归还的区域如果与其它空闲区相邻,则应合成一个较大的空闲区,登记在空闲区说明表中。例如,在提示( 1)中列举的情况下,如果作业 2 撤离,归还所占主存区域时,应与上、下相邻 的空闲区一起合成一个大的空闲区登记在空闲区说明表中。归还主存时的回收算法如图 4 (5) 请按最先适应算法设计主存分配和回收的程序。然后按( 1)中假设主存中已装入三个作业,且形成两个空闲区,确定空闲区说明表的初值。现有一个需要主存量为 6K 的作业 4 申请装入主存;然后作业3 撤离;再作业 2 撤离。请你为它们进行主存分配和回收,把空闲区说明表的初值以及每次分配或回收后的变化显示出来或打印出来。 第二题:在分页式管理方式下采用位示图来表示主存分配情况,实现主存空间的分配和回收。 提示 : (1) 分页式存储器把主 存分成大小相等的若干块,作业的信息也按块的大小分页,作业装入主存时可把作业的信息按页分散存放在主存的空闲块中,为了说明主存中哪些块已经被占用,哪些块是尚未分配的空闲块,可用一张位示图来指出。位示图可由若干存储单元来构成,其中每一位与一个物理块对应,用 0/1表示对应块为空闲 /已占用。 (2) 假设某系统的主存被分成大小相等的 64 块,则位示图可用 8 个字节来构成,另用一单元记录当前空闲块数。如果已有第 0, 1, 4, 5, 6, 9, 11, 13, 24, 31,共 10 个主存块被占用了,那么位示图情况如下: 字 位 节 数 号 0 1 2 3 4 5 6 7 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 1 0 0 2 0 0 0 0 0 0 0 0 3 1 0 0 0 0 0 0 1 4 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 12 图 4最先适应分配模拟算法 图 4主存 回收算法 (3) 当要装入一个作业时,根据作业对主存的需要量,先查当前空闲块数是否能满足作业要求,若不能满足则输出分配不成功。若能满足,则查位示图,找出为“ 0”的一些位,置上占用标志“ 1”,从“当 13 前空闲块数”中减去本次占用块数。 按找到的计算出对应的块号,其计算公式为: 块号 = j8+i 其中, j 表示找到的是第 n 个字节, I 表示对应的是第 n 位。 根据分配给作业的块号,为作业建立一张页表,页表格式: 页 号 块 号 0 1 2 (4) 当一个作业执行结束,归还主 存时,根据该作业的页表可以知道应归还的块号,由块号可计算出在位示图中的对应位置,把对应位的占用标志清成“ 0”,表示对应的块已成为空闲块。归还的块数加入到当前空闲块数中。由块号计算在位示图中的位置的公式如下: 字节号 j=块号 /8 ( 表示取整) 位数 i=块号 /8 ( 表示取余) (5) 设计实现主存分配和回收的程序。假定位示图的初始状态如( 2)所述,现有一信息量为 5 页的作业要装入,运行你所设计的分配程序,为作业分配主存且建立页表(格式如( 3)所述)。然后假定有另一作业执行 结束,它占用的块号为第 4, 5, 6 和 31 块,运行你所设计的回收程序,收回作业归还的主存块。 要求能显示和打印分配或回收前后的位示图和当前空闲块数,对完成一次分配后还要显示或打印为作业建立的页表。 四、实验报告 (1) 实验题目。 (2) 程序中使用的数据结构及符号说明。 (3) 流程图。 (4) 打印一份源程序并附上注释。 (5) 打印程序运行时的初值和运行结果,要求如下: 第一题:打印空闲区说明表的初始状态,作业 4 的申请量以及为作业 4 分配后的空闲区说明表状态;再依次打印作业 3 和作业 2 的归还量以及回收作业 3, 作业 2 所占主存后的空闲区说明表。 第二题:打印位示图和当前空闲块数的初值;要求装入的作业对主存的申请量,为作业分配后的位示图、当前空闲块数和页表;作业归还的块号、回收作业所占主存后的位示图和当前空闲块数。 14 第三部分 操作系统实验指导 实验 2 指导 实验内容 1 进程的创建 任务 编写一段程序,使用系统调用 )创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符;父进程显示字符 “a” ,子进程分别显示字符 “b”和 “c” 。试观察记录 屏幕上的显示结果,并分析原因。 程序 # p1,if(p1=) /*子进程创建成功 */ b); if(p2=) /*子进程创建成功 */ c); a); /*父进程执行 */ 时会出现 分析:从进程执行并发来看,输出 原因: 创建进程所需的时间 虽然可能 多于输出一个字符的时间, 但各个进程的时间片的获得却不是一定是顺序的,所以 输出 排列都是有可能的 。 2 进程的控制 修改已编写好的程序,将每个程序的输出由单个字符改为一句话,再观察程序执行时屏幕上出现的现象,并分析其原因。如果在程序中使用系统调用 来给每个程序加锁,可以实现进程之间的互斥,观察并分析出现的现 象。 程序 1 # p1,p2,i; if(p1=) i=0;i p1,p2,i; if(p1=) ,1,0); i=0;i 17 程序 #,; 18 p1,if(p1=) /*创建子进程 if(p2=) /*创建子进程 ; /*接收到 c 信号,转 *接受 ; 6); /*向 软中断信号 16*/ 7); /*向 软中断信号 17*/ ); /*同步 */ ); is n); ); ; 7, /*忽略 c 信号 */ 0); ,1,0); is by n); ,0,0); ); ; 6, /*忽略 c 信号 */ 0) ,1,0); is by n); ,0,0); ); 19 ); 0) , ; ; 不做任何操作等待五秒钟父进程回在子进程县推出后退出,并打印退出的顺序;或者点击 后程序退出并打印退出的顺序。 任务 2 在上面的任务 1中,增加语 句 语句 观察执行结果,并分析原因。这里, 别为忽略键信号以及忽略中断信号。 #; ; ; 6); 7); is by n); ); 20 is by n); ); if() if() 1,&); 1,&); is n); ); 7, ; 6, ; 运行结果 请读者将上述程序输入计算机后,执行并观察。 3 进程的管道通信 任务 编制一段程序,实现进程的管道通信。使用系统调用 建立一条管道线。两个子进程 is is 而父进程则从管道中读出来自两个进 程的信息,显示在屏幕上。 程序 # 21 #) ; 00,00; /*创建一个管道 */ ()= if(0) ,1,0); is ); /*把串放入数组 */ ,0); /*向管道写长为 50 字节的串 */ ); /*自我阻塞 5 秒 */ ,0,0); ); )= if(0) ,1,0); /*互斥 */ is ); ,0); ); ,0,0); ); ); /*同步 */ ,0); /*从管道中读长为 50 字节的串 */ %sn, ); ,0); %sn, ); 运行结果 延迟 5 秒后显示 : 22 is 再延迟 5 秒 : is 分析 请读者自行完成 。 1、程序中的 )起什么作用? 2、子进程 1 和 2 为什么也能对管道进行操作? 实验 3 指导 实验内容 1 消息的创建,发送和接收 任务 使用系统调用 ), ), )及 编制一长度为 1。 程序设计 ( 1) 为了便于操作和观察结果,用一个 程序为 “ 引子 ” ,先后 )两个子进程 , 行通信。 ( 2) 5的消息队列,等待其他进程发来的消息。当遇到类型为 1的消息,则作为结束信号,取消该队列,并退出 接收到一个消息后显示一句“ (。 ( 3) 使用 75 的消息队列,先后发送类型从 10 到 1 的消息,然后退出。最后的一个消息,既是 (。 ( 4) 父进程在 。 程序 # #5 /*定义关键词 /*消息结构 */ 00; /*文本长度 */ i; )

温馨提示

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

最新文档

评论

0/150

提交评论