嵌入式Linux多任务编程.ppt

  1. 1、本文档共111页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式Linux多任务编程

嵌入式应用程序设计 第六章 嵌入式Linux多任务编程 6.1 Linux下多任务机制的介绍 6.2 进程控制编程 6.3 进程间通信 6.4 多线程编程 6.5 实验内容 6.6 小结 6.7 思考与练习 6.1 Linux下多任务概述 6.1.1 任务 6.1.2 进程 6.1.3 线程 6.1 Linux下多任务概述 多任务处理是指用户可以在同一时间内运行多个应用程序,每个应用程序被称作一个任务。Linux就是一个支持多任务的操作系统,比起单任务系统它的功能增强了许多。 当多任务操作系统使用某种任务调度策略允许两个或更多进程并发共享一个处理器时,事实上处理器在某一时刻只会给一件任务提供服务。因为任务调度机制保证不同任务之间的切换速度十分迅速,因此给人多个任务同时运行的错觉。多任务系统中有3个功能单位:任务、进程和线程。 6.1.1 任务 任务是一个逻辑概念,指由一个软件完成的活动,或者是一系列共同达到某一目的的操作。通常一个任务是一个程序的一次运行,一个任务包含一个或多个完成独立功能的子任务,这个独立的子任务是进程或者是线程。 任务、进程和线程之间的关系 : 6.1.2 进程 进程是指一个具有独立功能的程序在某个数据集合上的一次动态执行过程,它是系统进行资源分配和调度的基本单元。一次任务的运行可以并发激活多个进程,这些进程相互合作来完成该任务的一个最终目标。 进程的特性 并发性 动态性 交互性 独立性 异步性 进程和程序是有本质区别的: 程序是静态的一段代码,是一些保存在非易失性存储器的指令的有序集合,没有任何执行的概念;而进程是一个动态的概念,它是程序执行的过程,包括了动态创建、调度和消亡的整个过程,它是程序执行和资源管理的最小单位。 6.1.2 进程 进程的种类: 交互式进程 批处理进程 实时进程 Linux下进程结构 进程不但包括程序的指令和数据,而且包括程序计数器和处理器的所有寄存器以及存储临时数据的进程堆栈,从而正在执行的进程包括处理器当前的一切活动。 6.1.2 进程 进程状态 运行状态 可中断的阻塞状态 不可中断的阻塞状态 可终止的阻塞状态 暂停状态 跟踪状态 僵尸状态 僵尸撤销状态 6.1.2 进程 进程状态转换关系: 6.1.2 进程 Linux内核通过惟一的进程标识符PID来标识每个进程。PID存放在进程描述符的pid字段中 。 在Linux中获得当前进程的进程号(PID)和父进程号(PPID)的系统调用函数分别为getpid()和getppid()。 6.1.2 进程 进程的创建和执行: 许多操作系统都提供的是产生进程的机制,也就是首先在新的地址空间里创建进程、读入可执行文件,最后再开始执行。Linux中进程的创建很特别,它把上述步骤分解到两个单独的函数中取执行:fork()和exec函数族。首先,fork()通过拷贝当前进程创建一个子进程,子进程与父进程的区别仅仅在于不同的PID、PPID和某些资源及统计量。exec函数族负责读取可执行文件并将其载入地址空间开始运行。 进程的终止: 进程终结也需要做很多繁琐的收尾工作,系统必须保证进程所占用的资源回收,并通知父进程。Linux首先把终止的进程设置为僵尸状态,这个时候,进程无法投入运行了,它的存在只为父进程提供信息,申请死亡。父进程得到信息后,开始调用wait函数族,最终赐死子进程,子进程占用的所有资源被全部释放。 6.1.2 进程 进程的内存结构 6.1.3 线程 线程的概念 它是进程内独立的一条运行路线,处理器调度的最小单元,也可以称为轻量级进程。线程可以对进程的内存空间和资源进行访问,并与同一进程中的其他线程共享。因此,线程的上下文切换的开销比创建进程小得多。 线程与进程间的关系 6.1.3 线程 线程的种类 用户级线程 轻量级进程 内核线程 6.2 进程控制编程 6.2.1 进程编程基础 6.2.2 Linux守护进程 6.2.1 进程编程基础 fork() fork()函数用于从已存在的进程中创建一个新进程。新进程称为子进程,而原进程称为父进程。使用fork()函数得到的子进程是父进程的一个复制品,它从父进程处继承了整个进程的地址空间,包括进程上下文、代码段、进程堆栈、内存信息、打开的文件描述符、信号控制设定、进程优先级、进程组号、当前工作目录、根目录、资源限制和控制终端等,而子进程所独有的只有它的进程号、资源使用和计时器等。 fork()函数语法: 6.2.1 进程编程基础 exec函数族 fork()函数是用于创建一个子进程,该子进程几乎拷贝了父进程的全部内容,但是,这个新创建的进程如何执行呢?这个exec函数族就提供了一个在进程中启动另一个程序执行的方法。

文档评论(0)

wnqwwy20 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档