欢迎来到天天文库
浏览记录
ID:39558298
大小:96.75 KB
页数:8页
时间:2019-07-06
《操作系统课程设计-Linux系统管理实践与线程通信实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、操作系统课程设计题目:基于线程的并发控制原型系统姓名:吴征宇学号:3101110002院系:京江J计算机1001完成日期:2012年1月7日8一、题目:基于线程的并发控制原型系统二、内容:1.Linux系统的熟悉与常用操作命令的掌握。2.Linux环境下线程通信的实现。(实现父亲、母亲、儿子、女儿之间呢同步互斥问题,一共有1个盘子,父亲、母亲互斥的向盘子里放水果,女儿、儿子互斥的取水果)三、Linux环境介绍Linux是一种自由和开放源码的类Unix操作系统。目前存在着许多不同的Linux,但它们都使用了
2、Linux内核。Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。Linux的应用前景比较广阔,尤其值得一提的当属谷歌研发的基于Linux的移动操作系统——Android。Android把Linux交到了全球无数移动设备消费者的手里,大概是Linux迄
3、今为止在主流界取得的最大成功。由于Linux的内核几乎完全由C语言编制,且非常稳定,大部分运行在unix系统下的工具已经被移值到linux系统上,最重要的是它的开放代码性,这对学习及开发都是较有利的.四、常用命令介绍1.pwd:用于显示用户当前所在的目录。2.cd:命令不仅显示当前状态,还改变当前状态 cd某个文件路径可进入上一层目录cd..可进入上一层目录 cd-可进入上一个进入的目录 cd~可进入用户的home目录81.cp:该命令的功能是将给出的文件或目录拷贝到另一文件或目录中。2../可执行
4、文件:用来执行某个可执行文件3.ls:查看年当前文件夹所包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限),查看目录信息等等4.mkdir:创建一个新的文件夹5.rm:移除文件6.ipcXX:对进程通信有关操作的控制,应用的操作主要有:ipcs,ipcrm等7.cc:用来对C语言的程序进行编译8.dgb:在linux环境下对程序进行调试,主要功能包括:启动程序,设置断点,单步执行等,功能相当强大。小结:linux下的命令当然是非常多,以上列出的只是我在这次课程设计中所用到一些命令。此外,在我们
5、在使用过程中遇到一些生僻的命令时,我们可以应用互联网来搜索相应的功能。在知道相关命令,但是忘记具体操作的时候我们还可以通过命令--help的方式来查看该命令的具体操作用法,非常实用。三、程序设计思想本题儿子、女儿吃水果的问题可以抽象为:两个生产者,两个消费者,一个缓冲区的问题。在计算机系统中每个进程都可产生某些资源或消耗一定的资源,当其产生资源的时候其就作为生产者,当其消耗资源的时候其就变为消费者。但是这些进程在执行的过程中只能互斥的访问临界区,否则就会产生一些错误。为了避免这种情况的发生,就必须引入一些
6、信号量来控制程序有序的执行。8本次我采用了P、V原语来实现这样的功能。具体到本次课程设计的内容,设计思想如下:首先,父亲、母亲中只能有一人将水果放入盘中,这是一种互斥关系。当母亲(父亲)放入了橘子(苹果)后,会通知儿子(女儿)来取苹果(橘子),儿子(女儿)在收到母亲(父亲)发来的信号之前一直处于等待状态,收到后取走水果,因此父亲与女儿,母亲与儿子之间是一种同步的关系。当儿子或女儿吃完水果后又会发出信号通知父母盘子已空可以放入水果。如此循环往复。本设计中采用线程实现父亲、母亲、女儿、儿子的调度。三、流程生产
7、者:sem=sem-1入口s>=0调用进程入等待队列转进程调度返回是否father和mother消费者:son和daughter入口sem=sem-1sem=sem-1S<=0唤醒等待队列中的一个进程式返回或转进程调度返回否是四、数据结构及信号量说明8数据结构:用到的头文件pthread.h和semaphore.h定义线程标识pthread_t创建线程pthread_create对应了一个函数作为线程的程序段sem_t:信号量的类型sem_init:初始化信号量sem_wait:相当于P操作sem_pos
8、t:相当于V操作void*father(void*arg)//父亲程序void*mother(void*arg)//母亲程序void*daughter(void*arg)//女儿程序void*son(void*arg)//儿子程序intmain()//主程序,包含了初始化程序信号量:sem_tsem1,sem2,sem3;三、源代码执行结果程序源代码:#include#include
此文档下载收益归作者所有