操作系统上机实验与课程设计指导书.doc_第1页
操作系统上机实验与课程设计指导书.doc_第2页
操作系统上机实验与课程设计指导书.doc_第3页
操作系统上机实验与课程设计指导书.doc_第4页
操作系统上机实验与课程设计指导书.doc_第5页
免费预览已结束,剩余71页可下载查看

下载本文档

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

文档简介

I 操作系统上机实验操作系统上机实验 与课程设计指导书与课程设计指导书 第一版 刘金平 牛德娇 编著 詹永照 主审 计算机科学与通信工程学院计算机科学系 江苏大学印刷厂 2004 4 II 前 言 计算机技术的飞速发展正在引发新一轮世界性技术革命 在经济发展越来越全球化 科技创新越来越国际化 知识经济已初见端倪的今天 任何一门技术或任何一个领域离 开了计算机恐怕都是不可想象的 然而计算机技术发展之迅速 计算机及其相关 IT 产品 市场竞争之激烈 计算机产业让人致富之迅猛也同样是人们始料不及的 在新世纪 任 何想在技术领域有一番作为的人 恐怕都不得不面对计算机技术的挑战 学习计算机软件技术 特别是计算机操作系统技术 除了需要刻苦努力外 还需要掌 握软件和操作系统的原理与设计技巧 这些原理与技巧可以说是计算机前辈们一代接一 代不停努力的结晶 学习和掌握它们对于激发自己的创造力和想象力是很有帮助的 如何学习和掌握操作系统技术的原理与实际技巧呢 除了听课和读书之外 最好的办 法恐怕就是在实践 例如 自己设计一个小型操作系统 多使用操作系统 多阅读和分 析操作源代码等 当前非常流行的 Linux 操作系统的原始版就是一位大学生的练习之作 除了上述练习方法之外 习题和实验是很重要的实践环节 本书是一本配合 操作系统 课程的实验指导书 共收集了供广大同学实践的七个实 验 其中最后一个可以用作课程设计 包括处理器调度 虚拟存储器 进程同步 驱动 调度 进程通信以及 UNIX 实践 除了给出题目外 还附带了大量的有效提示 在不降 低实验难度的基础上 给读者最大的启发性提示 当然 这些提示只是一种参考 里面 完全可能存在错误和不妥之处 有待于各路高手的指教 读者可以不局限于这些提示 本书的编写得到了本学院科学系詹永照老师的大力帮助和支持 他对本书内容的安排 组织上提供了宝贵意见 综合他多年的教学经验给我们作了醍醐灌顶 发聋振聩的指导 在此 编者对他表示衷心的感谢 衷心希望本书能对学习计算机操作系统和计算机软件的人有所帮助 编 者 2004 年 4 月于镇江 操作系统实验指导 III 实验要求实验要求 1 每位同学准备实验本 上机前作好充分的准备工作 预习本次实验的内容 事先 熟悉与实验有关的软硬件环境 2 实验时遵守实验室的规章制度 爱护实验设备 不得私自将使用的计算机加密码 影响其他同学的上机 原则上每人固定实验设备 由始而终地进行实验 对于实 验设备出现的问题 要及时向指导老师汇报 3 统一以以下格式命名本人的实验文件 班级班级 学号学号 实验题号实验题号 扩展名扩展名 例 计 021 班学号为 03 的学生第四个实验的文件名为 j02103 4 c 4 最终的实验报告按照要求书写 或打印 按时上交 仔细记录实验中的数据 源程序 实验结果 对于实验过程中出现的问题或疑惑要一并书写 并作为重点 加以思考 IV 目目 录录 实验要求实验要求 实验一实验一 处理器调度处理器调度 一 实验内容 二 实验目的 三 实验题目 四 实验报告 实验二实验二 虚拟存储器虚拟存储器 一 实验内容 二 实验目的 三 实验题目 四 实验报告 实验三实验三 驱动调度驱动调度 一 实验内容 二 实验目的 三 实验题目 四 实验报告 实验四实验四 同步机构同步机构 一 实验内容 二 实验目的 三 实验题目 四 实验报告 实验五实验五 UNIX 系统系统 一 实验内容 操作系统实验指导 V 二 实验目的 三 实验题目 四 实验报告 实验六实验六 进程间通信进程间通信 一 实验内容 二 实验目的 三 实验题目 四 实验报告 课程设计课程设计 一一 课程设计的内容课程设计的内容 二 课程设计的要求二 课程设计的要求 三 课程设计的目的三 课程设计的目的 四 课程设计具体内容四 课程设计具体内容 第一部分 认识 LINUX 第二部分 LINUX安装 第三部分 进入 LINUX 第四部分 深入了解 LINUX 第五部分 LINUX 代码分析 第六部分 检查方法 参考文献 参考文献 1 实验一实验一 处理器调度处理器调度 一 实验内容一 实验内容 选择一个调度算法 实现处理器调度 二 实验目的二 实验目的 在采用多道程序设计的系统中 往往有若干个进程同时处于就绪状态 当就绪状态 进程个数大于处理器数时 就必须依照某种策略来决定哪些进程优先占用处理器 本实 验模拟在单处理器情况下处理器调度 帮助学生加深了解处理器调度的工作 三 实验题目三 实验题目 本实验有两个题目 学生可选择其中的一题 第一题 设计一个按优先数调度算法实现处理器调度的进程 提示 1 假定系统有五个进程 每一个进程用一个进程控制块 PCB 来代表 进程控制块的 格式为 进程名 时间 要求求运行时间 优先数 状态 其中 进程名 作为进程的标识 假设五个进程的进程名分别是 P1 P2 P3 P4 P5 指针 按优先数的大小把五个进程连成队列 用指针指出下一个进程的进程控制 块 首地址 最后一个进程中的指针为 0 要求运行时间 假设进程需要运行的单位时间数 优先数 赋予进程的优先数 调度时总是选取优先数大的进程先执行 状态 可假设有两种状态 就绪 状态和 结束 状态 五个进程的初始状态 2 都为 就绪 状态 用 R 表示 当一个进程运行结束后 它的状态变为 结束 用 E 表示 2 在每次运行你所设计的处理器调度程序之前 为每个进程任意确定它的 优先数 和 要求运行时间 3 为了调度方便 把五个进程按给定的优先数从大到小连成队列 用一单元指出队 首进程 用指针指出队列的连接情况 例 队首标志 k1 k2 k3 k4 k5 PCB1 PCB2 PCB3 PCB4 PCB5 4 处理器调度总是选队首进程运行 采用动态改变优先数的办法 进程每运行一次 优先数就减 1 由于本实验是模拟处理器调度 所以 对被选中的进程并不实 际的启动运行 而是执行 优先数 1 要求运行时间 1 来模拟进程的一次运行 提醒注意的是 在实际的系统中 当一个进程被选中运行时 必须恢复进程的现 场 它占有处理器运行 直到出现等待事件或运行结束 在这里省去了这些工作 5 进程运行一次后 若要求运行时间 0 则再将它加入队列 按优先数大小插入 且置队首标志 若要求运行时间 0 则把它的状态修改为 结束 且退出 队列 6 若 就绪 状态的进程队列不为空 则重复上面 4 和 5 的步骤 直到所有 进程都成为 结束 状态 7 在所设计的称序中应有显示或打印语句 能显示或打印每次被选中进程的进程名 以及运行一次后进称对列的变化 k2 P1 0 2 1 R P2 P3 P4 P5 k4 3 5 R k5 1 3 R k3 2 4 R k1 4 2 R 操作系统实验指导 3 8 为五个进程任意确定一组 优先数 和 要求运行时间 启动所设计的处理器 调度程序 显示或打印逐次被选中进程的进程名以及进程控制块的动态变化过程 第二题 设计一个按时间片轮转法实现处理器调度的程序 提示 1 假定系统有五个进程 每一个进程用一个进程控制块 PCB 来代表 进程控制块的 格式为 进程名 时间 要求求运行时间 优先数 状态 其中 进程名 作为进程的标识 假设五个进程的进程名分别是 Q1 Q2 Q3 Q4 Q5 指针 进程按顺序排成循环队列 用指针指出下一个进程的进程控制块首地址 最后一个进程中的指针指出第一个进程的进程控制块首地址 要求运行时间 假设进程需要运行的单位时间数 已运行时间 假设进程已经运行的单位时间数 初始值为 0 状态 有两种状态 就绪 状态和 结束 状态 初始状态都为 就绪 用 R 表示 当一个进程运行结束后 它的状态变为 结束 用 E 表 示 2 每次运行你所设计的处理器调度程序之前 为每个进程任意确定它的 要求运行 时间 3 把五个进程按顺序排成循环队列 用指针指出队列连接情况 另用一标志单元记 录轮到运行的进程 例如 当前轮到 Q2 执行 则有 标志单元 k1 k2 k3 k4 k5 k2 P1 0 2 1 R P2 P3 P4 P5 k4 3 5 R k5 1 3 R k3 2 4 R k1 4 2 R 4 PCB1 PCB2 PCB3 PCB4 PCB5 4 处理器调度总是选择标志单元指示的进程运行 由于本实验是模拟处理器调度的 功能 所以 对被选中的进程并不实际启动运行 而是执行 已运行时间 1 来模拟进程的一次运行 表示进程已经运行过一个单位的时间 请同学们注意 在实际的系统中 当一个进程被选中运行时 必须置上该进程可 以运行的时间片值 以及恢复进程的现场 让它占有处理器运行 直到出现等待 事件或运行满一个时间片 在这里省去了这些工作 仅用 已运行时间 1 来表 示进程已经运行满一个时间片 5 进程运行一次后 应把该进程的进程控制块中的指针值送到标志单元 以指示下 一个轮到运行的进程 同时 应判断该进程的要求运行时间与已运行时间 若该 进程要求运行时间 已运行时间 则表示它尚未执行结束 应待到下一轮时再运 行 若该进程的要求运行时间 已运行时间 则表示它已经执行结束 应把它的 状态修改为 结束 E 且退出队列 此时 应把该进程的进程控制块中的指针 值送到前面一个进程的指针位置 6 若 就绪 状态的进程队列不为空 则重复上面 4 和 5 的步骤 直到所有 进程都成为 结束 状态 7 在所设计的称序中应有显示或打印语句 能显示或打印每次被选中进程的进程名 以及运行一次后进称对列的变化 8 为五个进程任意确定一组 要求运行时间 启动所设计的处理器调度程序 显 示或打印逐次被选中进程的进程名以及进程控制块的动态变化过程 四 实验报告四 实验报告 1 实验题目 2 程序中使用的数据结构及符号说明 3 流程图 4 打印一份源程序并附上注释 5 打印程序运行时的初值和运行结果 要求如下 1 进程控制块的初始状态 2 选中运行的进程名以及选中进程运行后的各进程控制块状态 操作系统实验指导 5 对于 2 要求每选中一个进程运行后都要打印 实验二实验二 虚拟存储器虚拟存储器 一 实验内容一 实验内容 模拟分页式虚拟存储管理中硬件的地址转换和缺页中断 以及选择页面调度算法处 理缺页中断 二 实验目的二 实验目的 在计算机系统中 为了提高主存利用率 往往把辅助存储器 如磁盘 作为主存储 器的扩充 使多道运行的作业的全部逻辑地址空间总和可以超出主存的绝对地址空间 用这种办法扩充的主存储器称为虚拟存储器 通过本实验帮助同学理解在分页式存储管 理中怎样实现虚拟存储器 三 实验题目三 实验题目 本实验有三道题目 其中第一题必做 第二 三题中可任选一个 第一题 模拟分页式存储管理中硬件的地址转换和产生缺页中断 提示 1 分页式虚拟存储系统是把作业信息的副本存放在磁盘上 当作业被选中时 可把 作业的开始几页先装入主存且启动执行 为此 在为作业建立页表时 应说明哪 些页已在主存 哪些页尚未装入主存 页表的格式为 页号标志主存块号在磁盘上的位置 6 其中 标志 用来表示对应页是否已经装入主存 标志位 1 则表示该页已经在 主存 标志位 0 则表示该页尚未装入主存 主存块号 用来表示已经装入主存的页所占的块号 在磁盘上的位置 用来指出作业副本的每一页被存放在磁盘上的位置 2 作业执行时 指令中的逻辑地址指出了参加运算的操作存放的页号和单元号 硬 件的地址转换机构按页号查页表 若该页对应标志为 1 则表示该页已在主存 这时根据关系式 绝对地址 块号 块长 单元号 计算出欲访问的主存单元地址 如果块长为 2 的幂次 则可把块号作为高地址部 分 把单元号作为低地址部分 两者拼接而成绝对地址 若访问的页对应标志为 0 则表示该页不在主存 这时硬件发 缺页中断 信号 有操作系统按该页 在磁盘上的位置 把该页信息从磁盘读出装入主存后再重新执行这条指令 3 设计一个 地址转换 程序来模拟硬件的地址转换工作 当访问的页在主存时 则形成绝对地址 但不去模拟指令的执行 而用输出转换后的地址来代替一条指 令的执行 当访问的页不在主存时 则输出 该页页号 表示产生了一次缺 页中断 该模拟程序的算法如图 2 1 取一条指令 开始 取指令中访问的页号 查页表 输出 页号表 示发生缺页中断 形成绝对地址 输出绝对地址 有后继指令 否是 该页标志 1 操作系统实验指导 7 图 2 1 地址转换模拟算法 4 假定主存的每块长度为 128 个字节 现有一个共七页的作业 其中第 0 页至第 3 页已经装入主存 其余三页尚未装入主存 该作业的页表为 015011 118012 219013 311021 40022 50023 60121 如果作业依次执行的指令序列为 操作页号单元号操作页号单元号 070移位4053 150 5023 215存1037 存321取2078 取056 4001 640存6084 5 运行设计的地址转换程序 显示或打印运行结果 因仅模拟地址转换 并不模拟 指令的执行 故可不考虑上述指令序列中的操作 第二题 用先进先出 FIFO 页面调度算法处理缺页中断 提示 1 在分页式虚拟存储系统中 当硬件发出 缺页中断 后 引出操作系统来处理这 个中断事件 如果主存中已经没有空闲块 则可用 FIFO 页面调度算法把该作业 中最先进入主存的一页调出 存放到磁盘上 然后再把当前要访问的页装入该块 调出和装入后都要修改页表页表中对应页的标志 2 FIFO 页面调度算法总是淘汰该作业中最先进入主存的那一页 因此可以用一个数 组来表示该作业已在主存的页面 假定作业被选中时 把开始的 m 个页面装入主 结束 取下一条指令 8 存 则数组的元素可定为 m 个 例如 P 0 P 1 P m 1 其中每一个 P i i 0 1 m 1 表示一个在主存中的页面号 它们的初值 为 P 0 0 P 1 1 P m 1 m 1 用一指针 k 指示当要装入新页时 应淘汰的页在数组中的位置 k 的初值为 0 当产生缺页中断后 操作系统选择 P k 所指出的页面调出 然后执行 P k 要装入页的页号 k k 1 mod m 再由装入程序把要访问的一页信息装入到主存中 重新启动刚才那条指令执行 3 编制一个 FIFO 页面调度程序 为了提高系统效率 如果应淘汰的页在执行中没 有修改过 则可不必把该页调出 因在磁盘上已有副本 而直接装入一个新页将 其覆盖 因此在页表中增加是否修改过的标志 为 1 表示修改过 为 0 表 示未修改过 格式为 由于是模拟调度算法 所以 不实际启动输出一页和装入一页的程序 而用输出 调出的页号和装入的页号来代替一次调出和装入的过程 把第一题中程序稍作修改 与本题结合起来 FIFO 页面调度模拟算法如图 2 2 4 磁盘上 在磁盘上的存放地址以及已装入主存的页和作业依次执行的指令序列都 同第一题中 4 所示 于是增加了 修改标志 后的初始页表为 015 0011 118 0012 219 0013 311 0021 40 0022 50 0023 60 0121 页号 标志 主存块号 修改标志 在磁盘上的位置 页号 标志 主存块号 修改标志 在磁盘上的位置 操作系统实验指导 9 按依次执行的指令序列 运行你所设计的程序 显示或打印每次调出和装入的页 号 以及执行了最后一条指令后的数组 P 的值 5 为了检查程序的正确性 可再任意确定一组指令序列 运行设计的程序 核对执 行的结果 是 否 是 否 否 产生缺页中断 是 模拟 FIFO 页面调度 模拟硬件 地址转换 取一条指令 开始 该页标志 1 取指令中访问的页号 L 查页表 形成绝对地址 输出绝对地址 有后继指令 取下一条指令 是存指令 置 L 页修改标志为 1 结束 10 接下页 接上页 第三题 用最近最少用 LRU 页面调度算法处理缺页中断 提示 1 在分页式虚拟存储系统中 当硬件发出 缺页中断 后 引出操作系统来处理这个中 断事件 如果主存中已经没有空闲块 则可用 LRU 页面调度算法把该作业中最先进 入主存的一页调出 存放到磁盘上 然后再把当前要访问的页装入该块 调出和装入 后都要修改页表页表中对应页的标志 2 LRU 页面调度算法总是淘汰该作业中距现在最久没有访问过的那一页 因此可以用 一个数组来表示该作业已在主存的页面 数组中的第一个元素总是指出当前刚访问的 页号 因此最久没被访问的页总是由最后一个元素指出 如果主存中只有四块空闲块 且执行第一题提示 4 假设的指令序列 采用 LRU 页面调度算法 那麽在主存中的 页面变化情况如下 306451246 230645134 123064512 012306451 3 编制一个 LRU 页面调度程序 为了提高系统效率 如果应淘汰的页在执行中没有修 改过 则可不必把该页调出 参看第二题中提示 3 模拟调度算法不实际启动输出 j P k j 页修改标志为 1输出 out j 输出 in L 图 2 2 FIFO 页面调度模拟算法 P k L k k 1 mod m 修改页表 操作系统实验指导 11 一页和装入一页的程序 而用输出调出的页号和装入的页号来代替 把第一题中的程 序稍作 改动 与本题集合起来 LRU 页面调度模拟算法如图 2 3 4 按第一题中提示 4 的要求 建立一张初始页表 表中为每一页增加 修改标志 位 参考第二题中提示 4 然后按依次执行的指令序列 运行你所设计的程序 显 示或打印每次调出和装入的页号 以及执行了最后一条指令后的数组中的值 5 为了检查程序的正确性 可再任意确定一组指令序列 运行设计的程序 核对执行的 结果 是 否 是 否 否 产生缺页中断 是 模拟硬件 地址转换 取一条指令 开始 该页标志 1 取指令中访问的页号 L 查页表 形成绝对地址 输出绝对地址 有后继指令 取下一条指令 是存指令 置 L 页修改标志为 1 结束 12 接下页 接上页 图 2 3 LRU 页面调度算法 四 实验报告四 实验报告 1 实验题目 第二题或第三题 2 程序中使用的数据结构及符号说明 3 打印一份源程序并附上注释 4 打印初始页表 每次调出 要调出一页时 和装入的页号 执行最后一条指 令后在主存中的页面号 即数组的值 思考题思考题 如果你有兴趣的话 可把两种页面调度算法都做一下 比较两种调度算法的效率 哪种调度算法产生缺页中断的次数少 分析在什麽情况下采用哪种调度算法更有利 模拟 LRU 页面调度j 被淘汰的页号 输出 in L 调整数组 j 退出数组 L 数组第一个元素中 修改页表 j 页修改标志为 1 输出 out j 操作系统实验指导 13 实验三实验三 驱动调度驱动调度 一 实验内容一 实验内容 模拟电梯调度算法 实现对磁盘的驱动调度 二 实验目的二 实验目的 磁盘是一种高速 大容量 旋转型 可直接存取的存储设备 它作为计算机系统的 辅助存储器 担负着繁重的输入输出任务 在多道程序设计系统中 往往同时会有若干 个要求访问磁盘的输入输出请求等待处理 系统可采用一种策略 尽可能按最佳次序执 行要求访问磁盘的诸输入输出请求 这就叫驱动调度 使用的算法称为驱动调度算法 驱动调度能降低为若干个输入输出请求服务所需的总时间 从而提高系统效率 本实验 要求学生模拟设计一个驱动调度程序 观察驱动调度程序的动态运行过程 通过实验使 学生理解和掌握驱动调度的职能 三 实验题目三 实验题目 模拟电梯调度算法 对磁盘进行移臂和旋转调度 提示 1 磁盘是可供多个进程共享的存储设备 但一个磁盘每时刻只能为一个进程服务 当有进程在访问某个磁盘时 其他想访问该磁盘的进程必须等待 直到磁盘一次工作结 束 当有多个进程提出输入输出要求而处于等待状态时 可用电梯调度算法从若干个等 待访问者中选择一个进程 让它访问磁盘 选择访问者的工作由 驱动调度 进程来完 成 由于磁盘与处理器是可以并行工作的 所以当磁盘在作为一个进程服务时 占有处 14 理器的另一进程可以提出使用磁盘的要求 也就是说 系统能动态地接收新的输入输出 请求 为了模拟这种情况 在本实验中设置了一个 接收请求 进程 驱动调度 进程和 接收请求 进程能否占有处理器运行 取决于磁盘的结束中 断信号和处理器调度策略 在实验中可用随机数来模拟确定这两个进程的运行顺序 以 代替中断处理和处理器调度选择的过程 因而 程序的结构可参考图 3 1 2 接收请求 进程建立一张 请求 I O 表 指出访问磁盘的进程要求访问的物 理地址 表的格式为 进程名柱面号磁道号物理记录号 初始化 输入在 0 1 区间 内的一个随机数 随机数 1 2 开始 驱动调度接受请求 继续 结束 是 是 否 否 操作系统实验指导 15 图 3 1 程序结构 假定某个磁盘组共有 200 个柱面 由外向里顺序编号 0 199 每个柱面上有 20 个磁道 编号为 0 19 每个磁道分成 8 个物理记录 编号 0 7 进程访问磁盘的物理 地址可以用键盘输入的方法模拟得到 图 3 2 是 接收请求 进程的模拟算法 在实际的系统中必须把等待访问磁盘的进程排入等待列队 由于本实验模拟驱动调 度 为简单起见 在实验中可免去队列管理部分 故设计程序时可不考虑 进程排入等 待队列 的工作 3 驱动调度 进程的功能是查 请求 I O 表 当有等待访问磁盘的进程时 按电梯调度算法从中选择一个等待访问者 按该进程指定的磁盘物理地址启动磁盘为其 服务 对移动臂磁盘来说 驱动调度分移臂调度和旋转调度 电梯调度算法的调度策略是 与移动臂的移动方向和移动臂的当前位子有关的 所以每次启动磁盘时都应登记移动臂 方向和当前位子 电梯调度算法是一种简单而实用的驱动调度方法 这种调度策略总是 优先选择与当前柱面号相同的访问请求 从这些请求中再选择一个能使旋转距离最短的 等待访问者 如果没有与当前柱面号相同的访问请求 则根据移臂方向来选择 每次总 是沿臂移动方向选择一个与当前柱面号最近的访问请求 若沿这个方向没有访问请求时 就改变臂的移动方向 这种调度策略能使移动臂的移动频率极小 从而提高系统效率 用电梯调度算法实现驱动调度的模拟算法如图 3 3 开始 有请求 输入 进程 名物理地址 进程排入等待队列 登记 请求 I O 表 返回 是 否 16 图 3 2 接收请求 模拟算法 4 图 3 1 中的初始化工作包括 初始化 请求 I O 表 置当前移臂方向为里 移 置当前位置为 0 号柱面 0 号物理记录 程序运行前可假定 请求 I O 表中已经有 如干个进程等待访问磁盘 在模拟实验中 当选中一个进程可以访问磁盘时 并不实际地启动磁盘 而用显示 请求 I O 表 当前移臂方向 当前柱面号 物理记录号来代替图 3 3 中的 启动磁 盘 这项工作 四 实验报告四 实验报告 1 实验题目 2 程序中使用的数据结构及其说明 3 打印一份源程序并附上注释 4 打印驱动调度进程每次选择访问请求前的 请求 I O 表以及每次选中的进程 名 访问的柱面号 物理记录号和当前移臂方向 用 up 代表里移 down 代表外移 打印 格式为 请求 I O 表 进程名 柱面号 物理记录号 方向 操作系统实验指导 17 是 是 是 是是 否 否 否 否 开始 查 请求 I O 表 有等待访问者 有与当前柱面号相 同的访问者 当前移臂方向 是向里移 有比当前柱面号 小的访问请求 有比当前柱面号 大的访问请求 置当前移臂方 向为向外移 置当前移臂方 向为向里移 从大于当前柱面号的访问 请求中选择一个最小者 从大于当前柱面号的访问 请求中选择一个最小者 选择能使旋转距 离最短的访问者 返回 18 实验四实验四 同步机构同步机构 一 实验内容一 实验内容 模拟实现用同步机构避免并发进程执行时可能出现的与时间有关的错误 二 实验目的二 实验目的 进程是程序在一个数据集合上运行的过程 进程是并发执行的 也即系统中的多个 进程轮流地占用处理器运行 我们把如干个进程都能进行访问和修改地那些变量成为公共变量 由于进程是并发 执行的 所以 如果对进程访问公共变量不加限制 那么就会产生 与时间有关 的错 误 即进程执行后 所得到的结果与访问公共变量的时间有关 为了防止这类错误 系 统必须要用同步机构来控制进程对公共变量的访问 一般说 同步机构是由若干条原语 同步原语 所组成 本实验要求学生模拟 PV 操作同步机构的实现 模拟进程的并 发执行 了解进程并发执行时同步机构的作用 三 实验题目三 实验题目 模拟 PV 操作同步机构 且用 PV 操作解决生产者 消费者问题 提示 1 PV 操作同步机构 由 P 操作原语和 V 操作原语组成 它们的定义如下 P 操作原语 P s 将信号量 s 减去 1 若结果小于 0 则执行原语的进程被置成等待 添加当前位置 柱面号 物理记录号 启动磁盘 被选中者退出 请求 I O 表 返回 图 3 3 电梯调度模拟算法 操作系统实验指导 19 信号量 s 的状态 V 操作原语 V s 将信号量 s 加 1 若结果不大于 0 则释放一个等待信号量 s 的进 程 这两条原语是如下的两个过程 procedureprocedure p varvar s semaphore beginbegin s s 1 ifif s 0 thenthen W s endend p procedureprocedure v varvar s semaphore beginbegin s s 1 ifif sPC 结束 保护现场 PC 当前进程 PCB 的断点 有就绪进程 否 是 24 图 4 5 处理器调度程序流程 P s GOTO空操作PutGETproduceconsumeV s 开始 j PC 按 j 转向各模拟 指令对应的过程 现行进 程为生产者 否是 j SA i j PA i PC i 1 置现行进程为就绪态 返回 生产者运行 结束 置生产者进程为完成态 是 否 操作系统实验指导 25 1 模拟 P S 2 模拟 V S 图 4 7 模拟 PV 操作的执行 开始 S S 1 将调用 P s 过程的 进程置为就绪将调用 P s 过程的进 程置为等待信号量 s 的状态 S 0 返回 否 是 开始 S S 1 将调用 V s 过程的 进程置为就绪 找一个等待 s 信号量的 进程置为就绪态 S 0 返回 否 是 图 4 6 模拟处理器指令执行 26 实验五实验五 UNIX 系统系统 一 实验内容一 实验内容 熟悉 UNIX 操作系统 在 UNIX 中使用 C 语言进行文本处理 二 实验目的二 实验目的 UNIX 操作系统是一个通用的多用户分时操作系统 现已成为高档微机 工作站及若 干小型机系统上的主要操作系统 并在许多领域中获得了广泛的应用 UNIX 系统具有简 单 高效 易懂等特点 同时具有良好的可移植性 它代表着多用户操作系统发展的方 向 C 语言最初是为开发 UNIX 操作系统而设计 UNIX 核心和所有的用户程序几乎都是 用 C 语言编写 是 UNIX 的标准语言 本实验要求学生在熟悉 UNIX 系统的基础上 使 用 vi 编辑器 了解用 C 语言编写文本处理程序的具体过程 三 实验题目三 实验题目 1 使用自己的注册号注册 UNIX 系统 学习如何增加用户 设置用户缺省信息 与修改用户口令 修改用户和用户组属性 删除用户注册号和用户组 目录 操作 文件操作 2 参考附录内容学习使用 vi 编辑器 3 使用 C 语言编写一个词频统计程序 使之能够给出各个单词在输入文件中的 出现次数 操作系统实验指导 27 4 使用 C 语言编写一个反向打印程序 使之能够按与输入文件中文本行相反的 次序来打印 即后出现的文本行先打印 提示 1 从 root 注册进系统 可以通过 OA while c getchar EOF if c n else n 0 if cn testfile this is line 1 this is line 2 this is line 4 对 testfile 文件使用 compact compact testfile this is line 1 this is line 2 this is line 4 30 这样就从输入文件中删除了多余的空行 四 实验报告四 实验报告 1 实验题目 2 流程图 3 打印一份源程序并附上注释 实验六实验六 进程间通信进程间通信 一 实验内容一 实验内容 模拟实现进程之间的通信 二 实验目的二 实验目的 Linux 系统的进程通信机构 IPC 允许在任意进程间大批量地交换数据 通过本实 验 了解熟悉 Linux 支持的消息通信机制 共享存储区机制及信息量机制 三 实验题目三 实验题目 1 消息的创建 发送和接收 1 使用系统调用 msgget msgsnd msgrcv 及 msgctl 编制一长度为 1K 的消息的发送和接收程序 2 观察上面程序 说明控制消息队列系统调用 msgctl 在此起什么作用 2 共享存储区的创建 附接和断接 使用系统调用 shmget shmat sgmdt shmctl 编制一个与上述功能相同的程序 3 比较上述 1 2 两种消息通信机制中数据传输的时间 提示 1 系统调用函数说明 参数值及定义 操作系统实验指导 31 fork 创建一个新进程 int fork 其中返回 int 取值意义如下 0 创建子进程 从子进程返回的 id 值 大于 0 从父进程返回的子进程 id 值 1 创建失败 msgget key flag 获得一个消息的描述符 该描述符指定一个消息队列以便用于其他系统调用 该 函数使用头文件如下 include include include 参数定义 int msgget key flag key t key int flag 语法格式 msgqid msgget key flag 其中 msgqid 是该系统调用返回的描述符 失败则返回 1 flag 本身由操作允许权和控制命令值相 或 得到 如 IPC CREAT 0400 是否该队列应被创建 IPC EXCL 0400 是否该队列的创建映象是互斥的 等 msgsnd id msgp size flag 发送一消息 该函数使用头文件如下 include include include 参数定义 int msgsnd id msgp size flag int id size flag struct msgbuf msgp 其中 id 是返回消息队列的描述符 msgp 是指向用户存储区的一个构造体指针 size 批示由 msgp 指向的数据结构中字符数组的长度 即消息的长度 这个数组 的最大值由 MSG MAX 系统可调用参数来确定 flag 规定当核心用尽内部缓冲 空间时应执行的动作 若在标志范围 flag 中未设置 IPC NOWAIT 位 则当该 消息队列中的字节数超过一最大值时 或系统范围的消息数超过某一最大值时 32 调用 msgsnd 进程睡眠 若是设置 IPC NOWAIT 则在此情况下 msgsnd 立 即返回 msgrcv id msgp size flag 接受一消息 该函数调用使用头文件如下 include include include 参数定义 int msgrcv id msgp size flag int id size type flag struct msgbuf msgq struct msgbuf long mtype char mtext 语法格式 count msgrcv id msgp size type flag 其中 id 是消息描述符 msgp 是用来存放欲接收消息的拥护数据结构的地址 size 是 msgp 中数据数组的大小 type 是用户要读的消息类型 type 为 0 接收该项队列的第一个消息 type 为正 接收类型 type 的第一个消息 type 为负 接收小于或等于 type 绝对值的最低类型的第一个消息 flag 规定倘若该队列无消息 核心应当做什么事 如果此时设置了 IPC NOWAIT 标志 则立即返回 若在 flag 中设置了 MSG NOERROR 且所 接收的消息大小大于 size 核心截断所接收的消息 count 是返回消息正文的字节数 msgctl id cmd buf 查询一个消息描述符的状态 设置它的状态及删除一个消息描述符 调用该函数使用头文件如下 include include include 参数定义 int msgctl id cmd buf int id cmd struct msqid ds buf 其中 函数调用成功时返回 0 调用不成功时返回 1 id 用来识别该消息的描述符 cmd 规定命令的类型 IPC STAT 将与 id 相关联的消息队列首标读入 buf IPC SET 为这个消息序列设置有效的用户和小组标识及操作允许权和字节的数 操作系统实验指导 33 量 IPC RMID 删除 id 的消息队列 buf 是含有控制参数或查询结果的用户数据结构的地址 附 msgid ds 结构定义如下 struct msgid ds struct ipc perm msg perm 许可权结构 short pad1 7 由系统调用 ushort onsg qnum 队列上消息数 ushort msg qbytes 队列上最大字节数 ushort msg lspid 最后发送消息的 PID ushort msg lrpid 最后接收消息的 PID time t msg stime 最后发送消息的时间 time t msg rtime 最后接收消息的时间 time t msg ctime 最后更改时间 struct ipc perm ushort uid 当前用户 id ushort gid 当前进程组 id ushort cuid 创建用户 id ushort cgid 创建进程组 id ushort mode 存取许可权 short pad1 long pad2 由系统调用 shmget key size flag 获取一个共享存储区 该函数使用头文件如下 include include include 语法格式 shmid shmget key size flag 参数定义 int shmget key size flag key t key int size flag 其中 size 是存储区的字节数 key 和 flag 与系统调用 msgget 中的参数含义相 同 附 34 操作允许权 八进制数 用户可读 00400 用户可写 00200 小组可读 00040 小组可写 00040 其他可读 00004 其他可写 00002 控制命令 值 IPC CREAT 0001000 IPC EXCL 0002000 如 shmid shmget key size IPC CREAT 0400 创建一个关键字为 key 长度为 size 的共享存储区 shmat id addr flag 从逻辑上将一个共享存储区附接到进程的虚拟地址空间上 该函数使用头文件如下 include include include 语法格式 virtaddr shmat id addr flag 参数定义 char shmat id addr flag char addr int id flag 其中 id 是共享存储区的标识符 addr 是用户要使用共享存储区附接的虚地址 若 addr 是 0 系统选择一个适当的地址来附接该共享区 flag 规定对此区的读 写权限 以及系统是否应对用户规定的地址做舍入操作 如果 flag 中设置了 shm rnd 即表示操作系统在必要时舍去这个地址 如果设置了 shm rdonly 即表 示只允许读操作 viraddr 是附接的虚地址 shmdt addr 把一个共享存储区从指定进程的虚地址空间断开 该函数使用头文件如下 include include include 参数定义 int shmdt addr 操作系统实验指导 35 char addr 其中 当调用成功时 返回 0 值 调用不成功 返回 1 addr 是系统调用 shmat 所返回的地址 shmctl id cmd buf 对与共享存储区关联的各种参数进行操作 从而对共享存储区进行控制 该函数使用头文件如下 include include include 参数定义 int shmctl id cmd buf int id cmd struct shmid ds buf 其中 调用成功时返回 0 否则返回 1 id 为被共享存储区的标识符 cmd 规定 操作的类型 规定如下 IPC STAT 返回包含在指定的 shmid 相关数据结构中的状态信息 并且把它放 置在用户存储区中的 buf 指针所指的数据结构中 执行此命令的进 程必须读取允许权 IPC SET 对于指定的 shmid 为它设置有效用户和小组标识和操作存取权 IPC RMID 删除指定的 shmid 以及与它相关的共享存储区的数据结构 SHM LOCK 在内存中锁定指定的共享存储区 必须是超级用户才可以进行此项 操作 buf 是一个用户级数据结构地址 附 shmid ds struct ipc perm shm perm 许可权结构 int shm segsz 段大小 int pad1 由系统使用 ushort shm lpid 最后操作的进程 id ushort shm cpid 创建者的进程 id ushort shm nattch 当前附界数 short pad2 由系统使用 time t shm atime 最后断接时间 time t shm dtime 最后修改时间 time t shm ctime 最后修改时间 2 任务 1 的程序设计 3 为了便于操作和观察结果 用一个程序作为 引子 先后 fork 两个子 36 进程 SERVER 和 CLIENT 进行通信 4 SERVER 端建立一个 key 为 75 的消息队列 等待其他进程发来的消息 当遇到类型为 1 的消息 则作为结束信号 取消该队列 并退出 SERVER SERVER 每接收到一个消息后显示一句 server received 5 CLIENT 端使用 key 为 75 的消息队列 先后发送类型从 10 到 1 的消息 然后退出 最后的一个消息 即是 SERVER 端需要的结束信号 CLIENT 每发送一条消息后显示一句 client sent 6 父进程在 SERVER 和 CLIENT 均退出后结束 3 任务 2 的程序设计 1 为了便于操作和观察结果 用一个程序作为 引子 先后 fork 两个子 进程 SERVER 和 CLIENT 进行通信 2 SERVER 端建立一个 key 为 75 的消息队列 并将第一个字节置为 1 作 为数据空的标志 等待其他进程发来的消息 当该字节的值发生变化时 表示收到了信息 进行处理 然后再次把它的值设为 1 当遇到的值为 0 则视为结束信号 取消该队列 并退出 SERVER SERVER 每接收到 一个消息后显示一句 server received 3 CLIENT 端使用 key 为 75 的消息队列 当共享取得第一个字节为 1 时 SERVER 端空闲 可发送请求 CLIENT 随即填入 9 到 0 期间等待 SERVER 端的再次空闲 进行完这些操作后 CLIENT 退出 CLIENT 每 发送一条消息后显示一句 client sent 4 父进程在 SERVER 和 CLIENT 均退出后结束 4 两个任务的主程序可写成如下 int I void main while I fork 1 if I SERVER while I fork 1 if I CLIENT wait 0 wait 0 四 实验报告四 实验报告 1 实验题目 操作系统实验指导 37 2 流程图 3 打印一份源程序并附上注释 4 比较上述两种消息通信机制中数据传输的时间 课程设计课程设计 Linux 系统维护以及进程管理代码解析系统维护以及进程管理代码解析 一一 课程设计的内容课程设计的内容 了解 Linux 的发展历史和整个系统的特点 掌握 Linux 的安装要领 熟悉安装过程 学会在 Linux 下配置显卡 网卡 声卡等基本的硬件设备 学会在 Linux 下配置 telnet www ftp 服务并能简单的使用它们 改变 www 服务的默认权限目录 建立一个自己的目录并写一个简单的 html 文件 放在该目录下 从其它机器上浏览你做的网页 学会 Linux 的基本操作命令 shell 了解 Linux 的文件系统 用户及群组管理 了解 Linux 的进程管理与调度 剖析进程调度程序 熟悉 X Window 38 二 课程设计的要求二 课程设计的要求 实际操作和书面报告 三 课程设计的目的三 课程设计的目的 培养学生的实际动手能力 将课堂所学的理论知识运用到实践中来 从而提高对 操作系统 这门课的认识 四 课程设计具体内容四 课程设计具体内容 第一部分第一部分 认识认识 Linux 1 Linux 的由来与发展 Linux 是一种可以在 PC 机上执行的类似 UNIX 的操作系统 是一个完全免费的操作 系统 1991 年 芬兰学生 Linus Torvalds 开发了这个操作系统的核心部分 因为是 Linus 改良的 minix 系统 故称之为 Linux 2 Linux 的优点 1 Linux 具备 UNIX 系统的全部优点 Linux 是一套 PC 版的 UNIX 系统 相对于 Windows 是一个十分稳定的系统 安 全性好 2 良好的网络环境 Linux 与 UNIX 一样 是以网络环境为基础的操作系统 具备完整的网络功能 提供在 Internet 或 Intranet 的邮件 FTP www 等各种服务 3 免费的资源 Linux 免费的资源和公开的源代码方便了对操作系统的深入了解 给编程爱好 者提供更大的发挥空间 3 Linux 的特点 1 全面的多任务 多用户和真正的 32 位操作系统 2 支持多种硬件 多种硬件平台 3 对应用程序使用的内存进行保护 4 按需取盘 5 共享内存页面 6 使用分页技术的虚拟内存 7 优秀的磁盘缓冲调度功能 操作系统实验指导 39 8 动态链接共享库 9 支持伪终端设备 10 支持多个虚拟控制台 11 支持多种 CPU 12 支持数字协处理器 387 的软件模拟 13 支持多种文件系统 14 支持 POSIX 的任务控制 15 软件移植性好 16 与其它 UNIX 系统的兼容性 17 强大的网络功能 4 Linux 对基本硬件的要求 CPU 386 486 及兼容 CPU RAM 最少要求是 2MB 建议使用 4MB 及更多运行 X Windows 则至少需要 8MB 硬盘 至少要 800MB 如果要完全安装 Red Hat Linux 7 的所有组件 至少需要 1200MB 的空间 显示器 一般的通用显示器都可以支持 如 CGA VGA SVGA 等 鼠标 支持各种鼠标设备 CDROM 使用 IDE 或 SCSI 的各种光驱 第二部分第二部分 Linux 安装安装

温馨提示

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

评论

0/150

提交评论