linux关于通信的课程设计,操作系统课程设计-Linux系统管理实践与线程通信实现...

1 操作系操作系统课统课程程设计设计 题题目 目 基于基于线线程的并程的并发发控制原型系控制原型系统统 姓名 吴征宇姓名 吴征宇 学号 学号 31011100023101110002 院系 京江院系 京江 J J 计算机计算机 10011001 完成日期 完成日期 20122012 年年 1 1 月月 7 7 日日 一 一 题目题目 基于线程的并发控制原型系统 二 二 内容内容 1 Linux 系统的熟悉与常用操作命令的掌握 2 Linux 环境下线程通信的实现 实现父亲 母亲 儿子 女儿之间 呢同步互斥问题 一共有 1 个盘子 父亲 母亲互斥的向盘子里放水 果 女儿 儿子互斥的取水果 三 三 LinuxLinux 环境介绍环境介绍 Linux 是一种自由和开放源码的类 Unix 操作系统 目前存在着许多不同的 Linux 但它们 都使用了 Linux 内核 2 Linux 的基本思想基本思想有两点 第一 一切都是文件 第二 每个软件都有确 定的用途 其中第一条详细来讲就是系统中的所有都归结为一个文件 包括命 令 硬件和软件设备 操作系统 进程等等对于操作系统内核而言 都被视为 拥有各自特性或类型的文件 至于说 Linux 是基于 Unix 的 很大程度上也是因 为这两者的基本思想十分相近 Linux 的应用前景应用前景比较广阔 尤其值得一提的当属谷歌研发的基于 Linux 的移动操作系统 AndroidAndroid Android 把 Linux 交到了全球无数移动设备消费 者的手里 大概是 Linux 迄今为止在主流界取得的最大成功 由于 Linux 的内 核几乎完全由 C 语言编制 且非常稳定 大部分运行在 unix 系统下的工具已经 被移值到 linux 系统上 最重要的是它的开放代码性开放代码性 这对学习及开发都是较有 利的 四 四 常用命令介绍常用命令介绍 1 pwdpwd 用于显示用户当前所在的目录 2 cdcd 命令不仅显示当前状态 还改变当前状态 cdcd 某个文件路径某个文件路径 可进入上一层目录 cdcd 可进入上一层目录 cdcd 可进入上一个进入的目录 cdcd 可进入用户的 home 目录 3 cpcp 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中 4 可执行文件 可执行文件 用来执行某个可执行文件 5 ls ls 查看年当前文件夹所包含的文件 而且可以查看文件权限 包括 目录 文件夹 文件权限 查看目录信息等等 6 mkdirmkdir 创建一个新的文件夹 7 rmrm 移除文件 8 ipcXXipcXX 对进程通信有关操作的控制 应用的操作主要有 ipcs ipcrm 等 9 cccc 用来对 C 语言的程序进行编译 10 dgbdgb 在 linux 环境下对程序进行调试 主要功能包括 启动程序 3 设置断点 单步执行等 功能相当强大 小结小结 linux 下的命令当然是非常多 以上列出的只是我在这次课程设计中所 用到一些命令 此外 在我们在使用过程中遇到一些生僻的命令时 我们可以 应用互联网来搜索相应的功能 在知道相关命令 但是忘记具体操作的时候我 们还可以通过 命令命令 help help 的方式来查看该命令的具体操作用法 非常实用 五 五 程序设计思想程序设计思想 本题儿子 女儿吃水果的问题可以抽象为 两个生产者 两个消费者 一 个缓冲区的问题 在计算机系统中每个进程都可产生某些资源或消耗一定的资源 当其产生 资源的时候其就作为生产者 当其消耗资源的时候其就变为消费者 但是这些 进程在执行的过程中只能互斥的访问临界区 否则就会产生一些错误 为了避 免这种情况的发生 就必须引入一些信号量来控制程序有序的执行 本次我采用了 P V 原语来实现这样的功能 具体到本次课程设计的内容 设计思想如下 首先 父亲 母亲中只能有一人将水果放入盘中 这是一种互 斥关系 当母亲 父亲 放入了橘子 苹果 后 会通知儿子 女儿 来取苹 果 橘子 儿子 女儿 在收到母亲 父亲 发来的信号之前一直处于等待状 态 收到后取走水果 因此父亲与女儿 母亲与儿子之间是一种同步的关系 当儿子或女儿吃完水果后又会发出信号通知父母盘子已空可以放入水果 如此 循环往复 本设计中采用线程实现父亲 母亲 女儿 儿子的调度 六 六 流程流程 4 生产者 father 和 mother 消费者 son 和 daughter 入 口 sem sem 1 sem sem 1 S 0 调用进程入等待队列 转进程调度 返回 是 否 5 pthread t 创建线程 pthread create 对应了一个函数作为线程的程序段 sem t 信号量的类型 sem init 初始化信号量 sem wait 相当于 P 操作 sem post 相当于 V 操作 void father void arg 父亲程序 void mother void arg 母亲程序 void daughter void arg 女儿程序 void son void arg 儿子程序 int main 主程序 包含了初始化程序 信号量 sem t sem1 sem2 sem3 八 八 源代码执行结果源代码执行结果 程序源代码 程序源代码 include include include sem t sem1 sem2 sem3 信号量 void father void arg father 线程 while 1 sem wait printf father put an apple n sem post void mather void arg mother 线程 6 while 1 sem wait printf mather put an orange n sem post void daguter void arg daughter 线程 while 1 sem wait printf daguter get an apple n sem post void son void arg son 线程 while 1 sem wait printf son put an orange n sem post int main 主函数 pthread t t1 t2 t3 t4 定义线程标志 sem init 初始化信号量 sem init 创建线程 7 pthread create pthread create pthread create pthread create 九 九 执行结果执行结果 在输入命令 cccc 5 c5 c lpthreadlpthread 进行编译后 输入 a out a out 执行结果如下 十 十 总结与体会总结与体会 本次编程以课上老师讲的习题为模板进行的编译 在程序正确了以后实现以上 的功能 当然这个过程中遇到了一些麻烦 然后又被逐一解决 最后的运行结 果见上图

展开阅读全文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值