电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

unix进程与进程通信

64页
  • 卖家[上传人]:小**
  • 文档编号:89127753
  • 上传时间:2019-05-19
  • 文档格式:DOC
  • 文档大小:235.50KB
  • / 64 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、Unix进程与进程通信讲稿Version 1.0Unix Process&IPC达内IT培训集团加拿大达内集团研发二部修订历史摘要日期修改原因版本文档创建2009-4-18新建1.0目录1.理解进程71.1.进程的基本概念71.1.1.区别程序与进程71.1.2.进程分类71.1.3.进程属性71.1.4. 父进程和子进程71.2.Unix/Linux下的进程管理81.2.1.进程是系统资源管理的基本单位81.2.2. Unix/Linux进程81.2.3. task_struct数据结构组成91.2.4.进程 Identifiers101.2.6. 进程创建121.2.7.Unix/Linux进程管理工具132.进程编码162.1.fork函数的使用162.1.1.fork函数说明162.1.2.创建进程162.1.3.理解子进程172.1.3.1.子进程继承父进程:172.1.3.2.子进程与父进程的关系172.1.3.3.孤儿子进程172.1.3.4.僵尸子进程172.2.wait函数的使用182.2.1.wait函数说明182.2.2.使用wait处理僵尸进程182.3.进程中

      2、简单信号的使用192.3.1.理解信号192.3.1.1.信号的本质192.3.1.2.信号来源192.3.2.简单的发送信号的函数202.3.2.1.sleep函数202.3.2.2.abort函数202.3.2.3.exit函数202.3.3.信号发送示例202.4.其他进程函数212.4.1.getpid函数212.4.2.getppid函数212.4.3.system函数222.4.4.execl函数系列222.4.5.popen函数233. 信号253.1.信号种类253.1.1.可靠信号与不可靠信号253.1.1.1.不可靠信号253.1.1.2.可靠信号253.1.2.实时信号与非实时信号263.2.常用信号263.3.信号发送273.3.1.kill函数说明273.3.2.raise函数说明273.3.3.sigqueue函数说明273.3.4.alarm函数说明283.3.5.setitimer函数说明283.3.6.abort函数说明293.4.信号的响应293.5. 信号的安装293.5.1. signal函数说明303.5.2. sigaction函数说明303

      3、.5.2.1.sigaction结构体定义313.5.2.2. sigaction结构体数据说明313.6.信号操作323.6.1.信号操作函数说明323.7.信号处理示例333.7.1.使用信号处理僵尸进程333.7.2.alarm定时器与setitimer定时器343.7.3.使用kill与raise发送信号363.7.4.各种信号的使用373.7.5.sigaction的使用393.8.信号的阻塞414. 进程间通信434.1.匿名管道434.1.1.匿名管道函数说明434.1.2.匿名管道编程步骤444.1.3.匿名管道代码示例454.2.有名管道464.2.1.有名管道函数说明464.2.2.有名管道编程步骤474.2.3.有名管道代码示例474.3.内存映射494.3.1.内存映射函数说明494.3.2.内存映射编程步骤504.3.3.内存映射代码示例504.4.共享内存524.4.1.共享内存函数说明524.4.2.共享内存编程步骤534.4.3.共享内存代码示例534.5.消息队列554.5.1.消息队列函数说明554.5.2.消息队列编程步骤564.5.3.消息队列代

      4、码示例564.6.信号量594.6.1.信号量函数说明594.6.2.信号量编程步骤604.6.3.信号量代码示例611.理解进程1.1.进程的基本概念1.1.1.区别程序与进程进程就是运行中的程序。一个运行着的程序,可能有多个进程。进程在操作系统中执行特定的任务。程序是存储在磁盘上包含可执行机器指令和数据的静态实体。进程或者任务是处于活动状态的计算机程序。1.1.2.进程分类进程一般分为交互进程、批处理进程和守护进程三类。值得一提的是守护进程总是活跃的,一般是后台运行,守护进程一般是由系统在开机时通过脚本自动激活启动或超级管理用户root来启动。1.1.3.进程属性1.进程ID(PID):是唯一的数值,用来区分进程;2.父进程和父进程的ID(PPID);3.启动进程的用户ID(UID)和所归属的组(GID);4.进程状态:状态分为运行R、休眠S、僵尸Z;5.进程执行的优先级;6.进程所连接的终端名;7.进程资源占用:比如占用资源大小(内存、CPU占用量);1.1.4. 父进程和子进程他们的关系是产生的依赖关系,当父进程终止时,子进程也随之而终止(某些情况下例外,在第二部分进程编程中可

      5、以看到这点)。但子进程终止,父进程并不一定终止。1.2.Unix/Linux下的进程管理1.2.1.进程是系统资源管理的基本单位进程是一个随执行过程不断变化的实体。和程序要包含指令和数据一样,进程也包含程序计数器和所有CPU寄存器的值,同时它的堆栈中存储着如子程序参数、返回地址以及变量之类的临时数据。当前的执行程序,或者说进程,包含着当前处理器中的活动状态。Linux是一个多处理操作系统。进程具有独立的权限与职责。如果系统中某个进程崩溃,它不会影响到其余的进程。每个进程运行在其各自的虚拟地址空间中,通过核心控制下可靠的通讯机制,它们之间才能发生联系。进程在生命期内将使用系统中的资源。它利用系统中的CPU来执行指令,在物理内存来放置指令和数据。使用文件系统提供的功能打开并使用文件,同时直接或者间接的使用物理设备。Linux必须跟踪系统中每个进程以及资源,以便在进程间实现资源的公平分配。如果系统有一个进程独占了大部分物理内存或者 CPU的使用时间,这种情况对系统中的其它进程是不公平的。系统中最宝贵的资源是CPU,通常系统中只有一个CPU。Linux是一个多处理操作系统,它最终的目的是:任何

      6、时刻系统中的每个CPU上都有任务执行,从而提高CPU的利用率。如果进程个数多于CPU的个数,则有些进程必须等待到CPU空闲时才可以运行。多处理是的思路很简单;当进程需要某个系统资源时它将停止执行并等待到资源可用时才继续运行。单处理系统中,如DOS,此时CPU将处于空等状态,这个时间将被浪费掉。在多处理系统中,因为可以同时存在多个进程,所以当某个进程开始等待时,操作系统将把CPU控制权拿过来并交给其它可以运行的进程。调度器负责选择适当的进程来运行,Linux使用一些调度策略以保证CPU分配的公平性。1.2.2. Unix/Linux进程为了让Unix/Linux来管理系统中的进程,每个进程用一个task_struct数据结构来表示(任务与进程在Unix/Linux中可以混用)。数组task包含指向系统中所有task_struct结构的指针。这意味着系统中的最大进程数目受task数组大小的限制,缺省值一般为512。创建新进程时,Unix/Linux将从系统内存中分配一个task_struct结构并将其加入task数组。当前运行进程的结构用current指针来指示。Unix/Linux还支持

      7、实时进程。这些进程必须对外部时间作出快速反应(这就是“实时”的意思),系统将区分对待这些进程和其他进程。1.2.3.task_struct数据结构组成1.State进程在执行过程中会根据环境来改变state。Unix/Linux进程有以下状态:2.Running进程处于运行(它是系统的当前进程)或者准备运行状态(它在等待系统将CPU分配给它)。3.Waiting进程在等待一个事件或者资源。Linux将等待进程分成两类;可中断与不可中断。可中断等待进程可以被信号中断;不可中断等待进程直接在硬件条件等待,并且任何情况下都不可中断。4.Stopped进程被停止,通常是通过接收一个信号。正在被调试的进程可能处于停止状态。5.Zombie这是由于某些原因被终止的进程,但是在task数据中仍然保留task_struct结构。它象一个已经死亡的进程。6.SchedulingInformation调度器需要这些信息以便判定系统中哪个进程最迫切需要运行。7.Identifiers系统中每个进程都有进程标志。进程标志并不是task数组的索引,它仅仅是个数字。每个进程还有一个用户与组标志,它们用来控制进程对

      8、系统中文件和设备的存取权限。8.Inter-ProcessCommunicationUnix/Linux支持经典的UnixIPC机制,如信号、管道和信号灯以及系统V中IPC机制,包括共享内存、信号灯和消息队列。9.LinksUnix/Linux系统中所有进程都是相互联系的。除了初始化进程外,所有进程都有一个父进程。新进程不是被创建,而是被复制,或者从以前的进程克隆而来。每个进程对应的task_struct结构中包含有指向其父进程和兄弟进程(具有相同父进程的进程)以及子进程的指针。以使用pstree命令来观察Unix/Linux系统中运行进程间的关系。(Solaris的指令是ptree)另外,系统中所有进程都用一个双向链表连接起来,而它们的根是init进程的task_struct数据结构。这个链表被Unix/Linux核心用来寻找系统中所有进程,它对ps或者kill命令提供了支持。10.TimesandTimers核心需要记录进程的创建时间以及在其生命期中消耗的CPU时间。时钟每跳动一次,核心就要更新保存在jiffies变量中,记录进程在系统和用户模式下消耗的时间量。Linux支持与进程相关的interval定时器,进程可以通过系统调用来设定定时器以便在定时器到时后向它发送信号。这些定时器可以是一次性的或者周期性的。11.Filesystem进程可以自由地打开或关闭文件,进程的task_struct结构中包含一个指向每个打开文件描叙符的指针以及指向两个VFSinode的指针。每个VFSinode唯一地标记文件中的一个目录或者文件,同时还对底层文件系统提供统一的接口。Unix/Linux对文件系统的支持将在 filesystem一章中详细描叙。这两个指针,一个指向进程的根目录,另一个指向其当前或者pwd目录。pwd从Unix命令pwd中派生出来,用来显示当前工作目录。这两个VFSinode包含一个count域,当多个进程引用它们时,它的值将增加。这就是为什么你不能删除进程当前目录,或者其子目录的原因。12.Virtualmemory多数进程都有一些虚拟内存(核心线程和后台进程没有),Unix/Linux核心必须跟踪虚拟内存与系统物理内存的映射关系。13.ProcessorSpecificContext

      《unix进程与进程通信》由会员小**分享,可在线阅读,更多相关《unix进程与进程通信》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.