操作系统课程设计-Linux系统管理实践与线程通信实现_第1页
操作系统课程设计-Linux系统管理实践与线程通信实现_第2页
操作系统课程设计-Linux系统管理实践与线程通信实现_第3页
操作系统课程设计-Linux系统管理实践与线程通信实现_第4页
操作系统课程设计-Linux系统管理实践与线程通信实现_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

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 九 九 执行结果执行结果 在输入命令 cc

温馨提示

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

评论

0/150

提交评论