




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
I 操作系统操作系统 A 实验指导书实验指导书 大连交通大学 2011 12 5 II 实验要求实验要求 1 每位同学准备实验本 上机前作好充分的准备工作 预习本次实验的内容 事先熟悉与实验有 关的软硬件环境 2 实验时遵守实验室的规章制度 爱护实验设备 不得私自将使用的计算机加密码 影响其他同 学的上机 原则上每人固定实验设备 由始而终地进行实验 对于实验设备出现的问题 要及时向指 导老师汇报 3 统一以以下格式命名本人的实验文件 实验报告实验报告 X 姓名 学号 姓名 学号 X 1 2 3 4 例 计算机 081 学号为 1 学生 第 1 个实验报告文件名为 实验报告 1 冯云龙 1 4 实验报告按要求 参见实验报告模板 最终 A4 纸打印上交 故必须仔细记录实验中的数据 源程序 实验结果 对于实验过程中出现的问题或疑惑要一并书写 并作为重点加以思考 所有程序 必须有电子版 操作系统 A 实验指导书 III 目目 录录 实验要求实验要求 II 实验一实验一 处理器调度处理器调度 2 一 实验内容 2 二 实验目的 2 三 实验题目 2 四 实验报告 2 实验二实验二 虚拟存储器虚拟存储器 2 一 实验内容 2 二 实验目的 2 三 实验题目 2 四 实验报告 2 实验三实验三 同步机制同步机制 2 一 实验内容 2 二 实验目的 2 三 实验题目 2 四 实验报告 2 实验四实验四 进程间通信进程间通信 2 一 实验内容 2 二 实验目的 2 三 实验题目 2 四 实验报告 2 参考文献 参考文献 2 1 实验一实验一 处理器调度处理器调度 一 实验内容一 实验内容 选择一个调度算法 实现处理器调度 二 实验目的二 实验目的 在采用多道程序设计的系统中 往往有若干个进程同时处于就绪状态 当就绪状态 进程个数大于处理器数时 就必须依照某种策略来决定哪些进程优先占用处理器 本实 验模拟在单处理器情况下处理器调度 帮助学生加深了解处理器调度的工作 三 实验题目三 实验题目 本实验有两个题目 学生可选择其中的一题 第一题 设计一个按优先数调度算法实现处理器调度的进程 第一题 设计一个按优先数调度算法实现处理器调度的进程 算法提示算法提示 1 假定系统有五个进程 每一个进程用一个进程控制块 PCB 来代表 进程控制块的 格式为 进程名 时间 要求求运行时间 优先数 状态 其中 进程名 作为进程的标识 假设五个进程的进程名分别是 P1 P2 P3 P4 P5 指针 按优先数的大小把五个进程连成队列 用指针指出下一个进程的进程控制块 首地址 最后一个进程中的指针为 0 要求运行时间 假设进程需要运行的单位时间数 优先数 赋予进程的优先数 调度时总是选取优先数大的进程先执行 状态 可假设有两种状态 就绪 状态和 结束 状态 五个进程的初始状态都为 就绪 状态 用 R 表示 当一个进程运行结束后 它的状态变为 结束 用 E 表示 2 2 在每次运行你所设计的处理器调度程序之前 为每个进程任意确定它的 优先数 和 要求运行时间 3 为了调度方便 把五个进程按给定的优先数从大到小连成队列 用一单元指出队首 进程 用指针指出队列的连接情况 例 队首标志 k1 k2 k3 k4 k5 PCB1 PCB2 PCB3 PCB4 PCB5 4 处理器调度总是选队首进程运行 采用动态改变优先数的办法 进程每运行一次优 先数就减 1 由于本实验是模拟处理器调度 所以 对被选中的进程并不实际的启动 运行 而是执行 优先数 1 要求运行时间 1 来模拟进程的一次运行 提醒注意的是 在实际的系统中 当一个进程被选中运行时 必须恢复进程的现场 它占有处理器运行 直到出现等待事件或运行结束 在这里省去了这些工作 5 进程运行一次后 若要求运行时间 0 则再将它加入队列 按优先数大小插入 且置队首标志 若要求运行时间 0 则把它的状态修改为 结束 且退出队列 6 若 就绪 状态的进程队列不为空 则重复上面 4 和 5 的步骤 直到所有进 程都成为 结束 状态 7 在所设计的称序中应有显示或打印语句 能显示或打印每次被选中进程的进程名以 及运行一次后进称对列的变化 8 为五个进程任意确定一组 优先数 和 要求运行时间 启动所设计的处理器调 度程序 显示或打印逐次被选中进程的进程名以及进程控制块的动态变化过程 第二题 设计一个按时间片轮转法实现处理器调度的程序 第二题 设计一个按时间片轮转法实现处理器调度的程序 算法提示算法提示 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 操作系统 A 实验指导书 3 1 假定系统有五个进程 每一个进程用一个进程控制块 PCB 来代表 进程控制块的 格式为 进程名 时间 要求求运行时间 优先数 状态 其中 进程名 作为进程的标识 假设五个进程的进程名分别是 Q1 Q2 Q3 Q4 Q5 指针 进程按顺序排成循环队列 用指针指出下一个进程的进程控制块首地址 最 后一个进程中的指针指出第一个进程的进程控制块首地址 要求运行时间 假设进程需要运行的单位时间数 已运行时间 假设进程已经运行的单位时间数 初始值为 0 状态 有两种状态 就绪 状态和 结束 状态 初始状态都为 就绪 用 R 表示 当一个进程运行结束后 它的状态变为 结束 用 E 表示 2 每次运行你所设计的处理器调度程序之前 为每个进程任意确定它的 要求运行时 间 3 把五个进程按顺序排成循环队列 用指针指出队列连接情况 另用一标志单元记录 轮到运行的进程 例如 当前轮到 Q2 执行 则有 标志单元 k1 k2 k3 k4 k5 PCB1 PCB2 PCB3 PCB4 PCB5 4 处理器调度总是选择标志单元指示的进程运行 由于本实验是模拟处理器调度的功 能 所以 对被选中的进程并不实际启动运行 而是执行 已运行时间 1 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 来模拟进程的一次运行 表示进程已经运行过一个单位的时间 请同学们注意 在实际的系统中 当一个进程被选中运行时 必须置上该进程可以 运行的时间片值 以及恢复进程的现场 让它占有处理器运行 直到出现等待事件或运 行满一个时间片 在这里省去了这些工作 仅用 已运行时间 1 来表示进程已经运行 满一个时间片 5 进程运行一次后 应把该进程的进程控制块中的指针值送到标志单元 以指示下一 个轮到运行的进程 同时 应判断该进程的要求运行时间与已运行时间 若该进程要求 运行时间 已运行时间 则表示它尚未执行结束 应待到下一轮时再运行 若该进程的 要求运行时间 已运行时间 则表示它已经执行结束 应把它的状态修改为 结束 E 且退出队列 此时 应把该进程的进程控制块中的指针值送到前面一个进程的指针位置 6 若 就绪 状态的进程队列不为空 则重复上面 4 和 5 的步骤 直到所有进 程都成为 结束 状态 7 在所设计的称序中应有显示或打印语句 能显示或打印每次被选中进程的进程名以 及运行一次后进称对列的变化 8 为五个进程任意确定一组 要求运行时间 启动所设计的处理器调度程序 显示 或打印逐次被选中进程的进程名以及进程控制块的动态变化过程 四 实验报告四 实验报告 1 实验题目 实验题目 2 程序中使用的数据结构及符号说明 程序中使用的数据结构及符号说明 3 流程图 流程图 4 打印一份源程序并附上注释 程序源码的电子版 打印一份源程序并附上注释 程序源码的电子版 5 打印程序运行时的初值和运行结果 要求如下 打印程序运行时的初值和运行结果 要求如下 1 进程控制块的初始状态 进程控制块的初始状态 2 选中运行的进程名以及选中进程运行后的各进程控制块状态 选中运行的进程名以及选中进程运行后的各进程控制块状态 对于以上对于以上 2 个要求 每选中一个进程运行后都要打印 个要求 每选中一个进程运行后都要打印 操作系统 A 实验指导书 5 实验二实验二 虚拟存储器虚拟存储器 一 实验内容一 实验内容 模拟分页式虚拟存储管理中硬件的地址转换和缺页中断 以及选择页面调度算法处 理缺页中断 二 实验目的二 实验目的 在计算机系统中 为了提高主存利用率 往往把辅助存储器 如磁盘 作为主存储 器的扩充 使多道运行的作业的全部逻辑地址空间总和可以超出主存的绝对地址空间 用这种办法扩充的主存储器称为虚拟存储器 通过本实验帮助同学理解在分页式存储管 理中怎样实现虚拟存储器 三 实验题目三 实验题目 本实验有三道题目 其中第一题必做 第二 三题中可任选一个 第一题 模拟分页式存储管理中硬件的地址转换和产生缺页中断 第一题 模拟分页式存储管理中硬件的地址转换和产生缺页中断 算法提示算法提示 1 分页式虚拟存储系统是把作业信息的副本存放在磁盘上 当作业被选中时 可把作 业的开始几页先装入主存且启动执行 为此 在为作业建立页表时 应说明哪些页已在 主存 哪些页尚未装入主存 页表的格式为 页号标志主存块号在磁盘上的位置 其中 标志 用来表示对应页是否已经装入主存 标志位 1 则表示该页已经在主 存 标志位 0 则表示该页尚未装入主存 主存块号 用来表示已经装入主存的页所占的块号 在磁盘上的位置 用来指出作业副本的每一页被存放在磁盘上的位置 2 作业执行时 指令中的逻辑地址指出了参加运算的操作存放的页号和单元号 硬件 6 的地址转换机构按页号查页表 若该页对应标志为 1 则表示该页已在主存 这时根 据关系式 绝对地址 块号 块长 单元号 计算出欲访问的主存单元地址 如果块长为 2 的幂次 则可把块号作为高地址部分 把单元号作为低地址部分 两者拼接而成绝对地址 若访问的页对应标志为 0 则表 示该页不在主存 这时硬件发 缺页中断 信号 有操作系统按该页在磁盘上的位置 把该页信息从磁盘读出装入主存后再重新执行这条指令 3 设计一个 地址转换 程序来模拟硬件的地址转换工作 当访问的页在主存时 则 形成绝对地址 但不去模拟指令的执行 而用输出转换后的地址来代替一条指令的执行 当访问的页不在主存时 则输出 该页页号 表示产生了一次缺页中断 该模拟程序 的算法如图 2 1 图 2 1 地址转换模拟算法 取一条指令 开始 取指令中访问的页号 查页表 输出 页号表 示发生缺页中断 形成绝对地址 输出绝对地址 有后继指令 结束 取下一条指令 否是 该页标志 1 操作系统 A 实验指导书 7 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 个页面装入主存 则 数组的元素可定为 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 8 当产生缺页中断后 操作系统选择 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 按依次执行的指令序列 运行你所设计的程序 显示或打印每次调出和装入的页号 以及执行了最后一条指令后的数组 P 的值 5 为了检查程序的正确性 可再任意确定一组指令序列 运行设计的程序 核对执行 的结果 页号 标志 主存块号 修改标志 在磁盘上的位置 页号 标志 主存块号 修改标志 在磁盘上的位置 操作系统 A 实验指导书 9 是 否 是 否 否 产生缺页中断 是 模拟 FIFO 页面调度 模拟硬件 地址转换 取一条指令 开始 该页标志 1 取指令中访问的页号 L 查页表 形成绝对地址 输出绝对地址 有后继指令 取下一条指令 是存指令 置 L 页修改标志为 1 结束 j P k j 页修改标志为 1输出 out j 输出 in L 10 接下页 接上页 第三题 用最近最少用 第三题 用最近最少用 LRU 页面调度算法处理缺页中断 页面调度算法处理缺页中断 算法提示算法提示 1 在分页式虚拟存储系统中 当硬件发出 缺页中断 后 引出操作系统来处理这个 中断事件 如果主存中已经没有空闲块 则可用 LRU 页面调度算法把该作业中最先进入 主存的一页调出 存放到磁盘上 然后再把当前要访问的页装入该块 调出和装入后都 要修改页表页表中对应页的标志 2 LRU 页面调度算法总是淘汰该作业中距现在最久没有访问过的那一页 因此可以 用一个数组来表示该作业已在主存的页面 数组中的第一个元素总是指出当前刚访问的 页号 因此最久没被访问的页总是由最后一个元素指出 如果主存中只有四块空闲块且 执行第一题提示 4 假设的指令序列 采用 LRU 页面调度算法 那麽在主存中的页面 变化情况如下 306451246 230645134 123064512 012306451 3 编制一个 LRU 页面调度程序 为了提高系统效率 如果应淘汰的页在执行中没有 修改过 则可不必把该页调出 参看第二题中提示 3 模拟调度算法不实际启动输出 一页和装入一页的程序 而用输出调出的页号和装入的页号来代替 把第一题中的程序 稍作 改动 与本题集合起来 LRU 页面调度模拟算法如图 2 3 4 按第一题中提示 4 的要求 建立一张初始页表 表中为每一页增加 修改标志 位 参考第二题中提示 4 然后按依次执行的指令序列 运行你所设计的程序 显示 或打印每次调出和装入的页号 以及执行了最后一条指令后的数组中的值 图 2 2 FIFO 页面调度模拟算法 P k L k k 1 mod m 修改页表 操作系统 A 实验指导书 11 5 为了检查程序的正确性 可再任意确定一组指令序列 运行设计的程序 核对执行 的结果 是 否 是 否 否 产生缺页中断 是 模拟 LRU 页面调度 模拟硬件 地址转换 取一条指令 开始 该页标志 1 取指令中访问的页号 L 查页表 形成绝对地址 输出绝对地址 有后继指令 取下一条指令 是存指令 置 L 页修改标志为 1 结束 j 被淘汰的页号 12 接下页 接上页 图 2 3 LRU 页面调度算法 四 实验报告四 实验报告 1 实验题目 第二题或第三题 实验题目 第二题或第三题 2 程序中使用的数据结构及符号说明 程序中使用的数据结构及符号说明 3 打印一份源程序并附上注释 源代码电子版 打印一份源程序并附上注释 源代码电子版 4 打印初始页表 每次调出 要调出一页时 和装入的页号 执行最后一条指令后在打印初始页表 每次调出 要调出一页时 和装入的页号 执行最后一条指令后在 主存中的页面号 即数组的值 主存中的页面号 即数组的值 思考题思考题 如果你有兴趣的话 可把两种页面调度算法都做一下 比较两种调度算法的效率 哪种调度算法产生缺页中断的次数少 分析在什麽情况下采用哪种调度算法更有利 输出 in L 调整数组 j 退出数组 L 数组第一个元素中 修改页表 j 页修改标志为 1 输出 out j 操作系统 A 实验指导书 13 实验三实验三 同步机同步机制制 一 实验内容一 实验内容 模拟实现用同步机构避免并发进程执行时可能出现的与时间有关的错误 二 实验目的二 实验目的 进程是程序在一个数据集合上运行的过程 进程是并发执行的 也即系统中的多个 进程轮流地占用处理器运行 我们把若干个进程都能进行访问和修改地那些变量成为公共变量 由于进程是并发 执行的 所以 如果对进程访问公共变量不加限制 那么就会产生 与时间有关 的错 误 即进程执行后 所得到的结果与访问公共变量的时间有关 为了防止这类错误 系 统必须要用同步机构来控制进程对公共变量的访问 一般说 同步机构是由若干条原语 同步原语 所组成 本实验要求学生模拟 PV 操作同步机构的实现 模拟进程的并 发执行 了解进程并发执行时同步机构的作用 三 实验题目三 实验题目 模拟模拟 PVPV 操作同步机构 且用操作同步机构 且用 PVPV 操作解决生产者操作解决生产者 消费者问题 消费者问题 算法提示算法提示 1 PV 操作同步机构 由 P 操作原语和 V 操作原语组成 它们的定义如下 P 操作原语 P s 将信号量 s 减去 1 若结果小于 0 则执行原语的进程被置成等待 信号量 s 的状态 V 操作原语 V s 将信号量 s 加 1 若结果不大于 0 则释放一个等待信号量 s 的进 程 这两条原语是如下的两个过程 procedureprocedure p varvar s semaphore 14 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 的断点 有就绪进程 否 是 操作系统 A 实验指导书 19 P s GOTO空操作PutGETproduceconsumeV s 开始 j PC 按 j 转向各模拟 指令对应的过程 现行进 程为生产者 否是 j SA i j PA i PC i 1 置现行进程为就绪态 返回 生产者运行 结束 置生产者进程为完成态 是 否 20 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 模拟处理器指令执行 操作系统 A 实验指导书 21 实验四实验四 进程间通信进程间通信 一 实验内容一 实验内容 模拟实现进程之间的通信 二 实验目的二 实验目的 Linux 系统的进程通信机构 IPC 允许在任意进程间大批量地交换数据 通过本实 验 了解熟悉 Linux 支持的消息通信机制 共享存储区机制及信息量机制 三 实验题目三 实验题目 1 消息的创建 发送和接收 消息的创建 发送和接收 1 使用系统调用 使用系统调用 msgget msgsnd msgrcv 及及 msgctl 编制一长度为编制一长度为 1K 的消息的消息 的发送和接收程序 的发送和接收程序 2 观察上面程序 说明控制消息队列系统调用 观察上面程序 说明控制消息队列系统调用 msgctl 在此起什么作用 在此起什么作用 2 共享存储区的创建 附接和断接 共享存储区的创建 附接和断接 使用系统调用使用系统调用 shmget shmat sgmdt shmctl 编制一个与上述功能相同的程序 编制一个与上述功能相同的程序 3 比较上述比较上述 1 2 两种消息通信机制中数据传输的时间 两种消息通信机制中数据传输的时间 算法提示算法提示 1 系统调用函数说明 参数值及定义 fork 创建一个新进程 int fork 其中返回 int 取值意义如下 0 创建子进程 从子进程返回的 id 值 大于 0 从父进程返回的子进程 id 值 22 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 位 则当该 消息队列中的字节数超过一最大值时 或系统范围的消息数超过某一最大值时 调用 msgsnd 进程睡眠 若是设置 IPC NOWAIT 则在此情况下 msgsnd 立 即返回 msgrcv id msgp size flag 接受一消息 该函数调用使用头文件如下 include 操作系统 A 实验指导书 23 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 为这个消息序列设置有效的用户和小组标识及操作允许权和字节的数 量 IPC RMID 删除 id 的消息队列 buf 是含有控制参数或查询结果的用户数据结构的地址 附 msgid ds 结构定义如下 struct msgid ds struct ipc perm msg perm 许可权结构 24 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 中的参数含义相 同 附 操作允许权 八进制数 用户可读 00400 用户可写 00200 小组可读 00040 小组可写 00040 其他可读 00004 操作系统 A 实验指导书 25 其他可写 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 char addr 其中 当调用成功时 返回 0 值 调用不成功 返回 1 addr 是系统调用 shmat 所返回的地址 shmctl id cmd buf 对与共享存储区关联的各种参数进行操作 从而对共享存储区进行控制 该函数使用头文件如下 26 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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年计算机网络工程师资格考试题及答案解析
- 2025年气象观测员初级技能面试题解
- 2025年安全员高级安全技术题集答案
- 2025年建筑监理员面试模拟题及答案
- 2025年安全管理案例分析解析答案
- 2025年文化和旅游厅招聘面试模拟题及答题思路梳理
- 2025年无人机植保高级认证笔试题库
- 2025年机关事务局IT笔试模拟题集锦
- 2025年ESG咨询师面试技巧与模拟题答案
- 2025年大学生安全教育核心练习及答案
- 汉字形旁分类及其组字表
- 微创外科课件
- 静配中心应急预案处理流程
- GB/T 21977-2022骆驼绒
- 心理-认识过程课件
- 静脉治疗护理质量评价标准
- 水电清包工合同(3篇)
- 《ACT就这么简单》课件
- 农机行政处罚流程图
- 沥青混合料低温弯曲试验2002363
- 盘阀结构和原理课件
评论
0/150
提交评论