linux进程和线程通信

linux进程和线程通信

ID:37854379

大小:819.50 KB

页数:15页

时间:2019-06-01

linux进程和线程通信_第1页
linux进程和线程通信_第2页
linux进程和线程通信_第3页
linux进程和线程通信_第4页
linux进程和线程通信_第5页
资源描述:

《linux进程和线程通信》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、课程设计课程设计名称:linux进程和线程通讯专业班级:学生姓名:学号:指导教师:课程设计时间:15计算机科学与技术专业课程设计任务书学生姓名专业班级学号题目Linux进程和线程通讯课题性质其它课题来源自拟课题指导教师同组姓名无主要内容1.以Linux系统进程和线程机制为背景,掌握fork()和clone()系统调用的形式和功能以及与其相适应的高级通信方式。由fork派生的子进程之间通过pipe通信,由clone创建的线程之间通过共享内存通信。2.以生产者-消费者为例,通过实验理解fork和clone两个系统调用的区别。程序要求能够创

2、建4个进程或线程,其中包括两个生产者和两个消费者,生产者和消费者之间能够传递数据。任务要求1.深刻理解线程和进程的概念,2.掌握线程和进程在组成成分上的差别以及与其相适应的通信方式和应用目标。参考文献[1]张尧学,史美林.计算机操作系统教程.北京:清华大学出版社,2000[2]孟庆昌.操作系统教程.北京:电子工业出版社,2004[3]GaryNutt.操作系统现代观点.孟祥由译.北京:机械工业出版社,2004[4]陈向群,杨芙清.操作系统教程.2版.北京:北京大学出版社,2006[5]汤小丹.计算机操作系统第三版.西安:西安电子科技大

3、学出版社,2007审查意见指导教师签字:教研室主任签字:年月日说明:本表由指导教师填写,由教研室主任审核后下达给选题学生,装订在设计(论文)首页15151需求分析深刻理解线程和进程的概念,掌握线程和进程在组成成分上的差别以及与其相适应的通信方式和应用目标。此次课程设计以Linux系统进程和线程机制为背景,掌握fork()和clone()系统调用的形式和功能以及与其相适应的高级通信方式。由fork派生的子进程之间通过pipe通信,由clone创建的线程之间通过共享内存通信。以生产者-消费者为例,通过实验理解fork和clone两个系统调

4、用的区别。程序要求能够创建4个进程或线程,其中包括两个生产者和两个消费者,生产者和消费者之间能够传递数据。2概要设计进程是系统分配资源的基本单位,是一个具有独立功能的程序段对某个数据集的一次执行活动。进程具有动态性,并发性等特点。反映进程动态特性的是进程状态的变化。进程要经历创建,等待资源,就绪准备执行,以及执行前和执行后释放资源小王等几个过程和状态。进程的状态转换要有不同的原语句执行完成。进程的并分特性反映在进程对资源的竞争以及有资源竞争所引起的对进程执行速度的制约。这种制约可分为直接制约和间接制约。进程间的直接制约是被制约进程和制

5、约进程之间,存在着对方资源的需求,只有制约进程执行后,被制约进程才能继续往前推进。进程间的间接制约是被制约进程共享某个一次只能供一个进程使用的系统资源,只有得到资源的进程才能向前推进,其他进程在获得资源进程执行期间不允许交叉执行,因此直接制约进程之间具有固定的执行顺序,而间接制约的进程之间则没有固定的执行顺序。线程是为了提高操作系统的执行效率而引入的,它是进程内的一段程序的基本调度单元。线程可分为用户级线程和系统级线程。用户级线程的管理全部由线程库完成,与操作系统内核无关,线程有寄存器,堆栈以及程序计数器等组成,同意进程的线程共享该进

6、程的进程空间和其他所有资源。线程主要用于多级系统以及网络系统的操作系统中,Linux系统中的fork()保持了unix大的经典语义,被创建的进程具有独立于独立于父进程的地址空间,二者之间的通讯通常可采用pipe机制。C15lone()是linux系统特有的系统调用,可以通过参数确定父子进程之间是否共享空间资源,在地址空间等资源共享等情况下,clone实质是哪个相当于创建了一个轻进程或线程,这是clone的通常用法。实际上在linux系统中,fork以及用户线程pthread都是基于clone实现的。有fork派生出的子进程之间通过pi

7、pe通讯,由clone创建的线程之间通过共享内存通讯,对于后者需要考虑互斥问题。Fork()系统 用pipe()创建一个管道文件,然后用fork()创建两个生产进程和两个消费进程,它们之间通过pipe()传递信息。Clone()系统用clone()创建四个轻进程(线程),用参数指明共享内存等资源,通过共享内存模拟生产消费问题,利用pthread_mutex_lock(),pthread_mutex_unlock()等函数实现对共享存储区访问的互斥开始fork()系统调用流程图:空闲进程控制块队列为空?YN取空闲进程控制块的第一个生产者

8、,消费着挂入就绪队列输入就绪队就绪队列为空Fork创建两个生产者和两个消费者创建一个管道文件创建失败YN结束15开始clone()系统调用流程图:解锁输出消费者bp--解锁生产者bp+1bp--bp++加锁加锁i<10;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。