- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux 进程创建,进程间通信 张其亮 Email:zql6661979@163.com Summary Linux进程创建、撤销 Linux进程间的通信 Linux进程创建、撤销 描述 进程在执行过程中会在不同的状态下相互转换,实际上进程控制是通过各种内核函数实现的 。 Linux进程控制包括的内容: 进程创建、进程撤销 进程睡眠、进程唤醒 Linux进程创建、撤销 Linux进程的族亲关系 Linux进程之间不是孤立存在的,它们之间有一定的族亲关系。 Linux进程创建 子进程1与子进程2构成兄弟进程。(按照创建时间确定,先者为兄,后者为弟); Linux进程创建 Linux系统的进程树 Linux进程创建 Linux进程的创建 在linux中除了init进程是由系统启动时创建的外,其他所有进程都是由当前进程使用系统调用fork()创建的。 Linux进程创建 ”写时拷贝“技术 子进程在何时如何建立自己的虚拟内存空间? Linux进程创建 Fork()系统调用 父进程创建子进程是通过 fork()系统调用完成的。此时一个进程“分裂”成两个进程:一个是原来的进程,一个是新创建的进程。 Linux进程创建 Linux进程创建 举例: Linux进程创建 子进程创建过程: 1.为新进程分配任务结构体内存空间 2.把父进程任务结构体拷贝到子进程的任务结构体 3.为新进程在其虚拟内存建立内核堆栈。 4.对子进程任务结构体中部分进行初始化设置 5.把父进程的有关信息拷贝给子进程,建立共享关系 6.把子进程的counter设为父进程counter值的一半 7.把子进程加入到可运行队列中 8.结束do_fork()函数返回PID值 Linux进程创建 进程程序的执行 创建进程的目的是需要该进程完成一定的任务,执行它的程序代码。Linux中,使程序执行的唯一方法是使用系统调用exec() Exec()函数族 Linux进程创建 int execl(const char *path, const char *arg, ...); Path指出了要执行的程序的完整路径 Arg0表示要执行的文件名或命令名 Arg1..argn表示可执行文件或命令需要的参数 Linux进程终止和撤销 Linux进程终止exit() 终止的两种情况: 正常终止 :完成本身任务而终止,调用exit()或运行到最后而终止 被内核强制终止:运行中出现了致命错误。 终止的进程占有部分系统资源,必须撤销它们 终止的进程状态为;TASK_ZOMBIE Linux进程终止和撤销 进程的撤销release() 进程通信 进程通信:进程间信息交换。 低级通信机制:信息量小,如pv操作。 高级通信机制:信息量大。 Linux进程间通信 在Linux系统中,以进程为单位分配和管理资源。由于保护的缘故,一个进程不能直接访问另一个进程的资源,也就是说,进程之间互相封闭 Linux进程间通信——管道机制 管道机制 管道是Linux的一种最简单的通信机制。 管道的概念: 管道机制是一个数据的逻辑“通道” 。 Linux进程间通信——管道机制 管道特点 传送方向固定的单向管道,一个管道的数据只能向一个方向传送,并且管道一旦确定了其数据传送方向后就不能再更改。 数据在管道中以字符流的形态传送的,即以字节为单位的顺序数据(FIFO方式) Linux进程间通信——管道机制 无名管道: 无名管道的系统调用: Linux进程间通信——管道机制 用法: 用于亲缘关系的进程间的通信,主要用于父子进程间的通信。 *** 先建立管道再建立子进程的顺序 若不然,先建立子进程,再建立管道,管道只对建立它的进程可见,对另一个进程是看不见的,因此无法实现父子间的通信。 确定管道通信的方向(单向通信) Linux进程间通信——管道机制 举例: 在该例中,父进程建立管道后创建一个子进程。子进程的任务是把一组字符串信息写入管道,父进程在子进程完成任务终止后,从管道中读取信息并显示在显示器上。 Linux进程间通信——管道机制 有名管道 无名管道只能在父子进程间通信,为了解决这个问题,linux提供了有名管道。 有名管道的系统调用 Linux进程间通信——管道机制 举例 u Linux进程间通信——IPC消息队列 进程间消息通信 基本思想:把需要在进程间传递的一组信息看作一个消息。在系统中设置一个存放消息的存储区域,称为消息缓冲区,它可以同时存放一定数量的消息。 Linux进程间通信——IPC消息队列 IPC消息队列 消息队列结构 消息队列就是消息的一个链表,它允许一个或多个进程向
文档评论(0)