- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章 ARM Linux进程线程开发实例
第10章 ARM Linux进程线程开发实例 本章目标 进程相关的基本概念 ARM Linux的进程描述符、任务结构以及文件描述符的概念 ARM Linux中线程的实现 Linux进程创建的相关API Linux进程执行的相关API Linux进程退出的相关API Linux进程等待的相关API Linux进程间通信的几种常见方法:如管道、信号、共享内存、消息队列等 Linux中线程创建和退出的相关API Linux中修改线程属性的方法 Linux中对线程的控制访问 Linux中多任务管理器的实现 守护进程的编写 进程描述符及任务结构 (1)进程是一个独立的可调度的活动(E.Cohen,D.Jofferson)。 (2)进程是一个抽象实体,当它执行某个任务时,将要分配和释放各种资源(P.Denning)。 (3)进程是可以并行执行的计算部分(S.E.Madnick,J.T.Donovan)。 Linux中进程描述符 Linux系统中包括下面几种类型的进程。 ? 交互进程 ? 批处理进程 ? 守护进程 进程的创建、执行和终止 进程的调度 进程调度是指确定CPU当前执行哪个进程。 Linux进程调度策略是以优先级调度为基础的,即优先运行优先级最高的进程。 在优先级调度的基础上,通过被分配的优先级的范围,又可以把进程分为实时进程(这里的实时是软实时)和一般进程。 实时进程优先于一般进程,并由特殊的调度策略来保证它们的(软)实时性。 Linux中进程调度算法 Linux 2.6内核中实现了一个O(1)的调度算法,也就是说每一次调度所需要的时间与该CPU内的总进程数无关。相比于以前的Linux内核调度算法最坏情况O(n)的复杂度要高效、精巧许多,而且由此也可以使得实时进程的实时性得到更加充分的保证。 Linux中的线程 Linux中实现线程的机制非常独特。从内核的角度来说,它并没有线程这个概念。Linux把线程都当作进程来实现,仅仅将其视为使用某些共享资源的进程。每个线程都用有惟一隶属于自己的task_struct,所以在内核中,它看起来就像一个普通的进程(只是该进程和其他一些进程共享某些资源,如地址空间等)。 Linux中进程间通信 管道(Pipe)及有名管道(named pipe) 信号(Signal) 消息队列 共享内存 信号量 套接字(Socket) ARM Linux进程控制相关API fork exec函数族 exit和_exit wait和waitpid 管道通信 管道是Linux中进程间通信的一种方式,它把一个程序的输出直接连接到另一个程序的输入。 Linux的管道主要包括两种 无名管道 有名管道。 有名管道的创建 有名管道的创建可以使用函数mkfifo,该函数类似文件中的open操作,可以指定管道的路径和打开的模式。 在创建管道成功之后,就可以使用open、read、write这些函数了 信号通信 发送信号的函数:kill()、raise()。 捕获信号的函数:alarm()、pause()。 处理信号的函数:signal()。 共享内存 共享内存允许两个或更多进程共享一给定的存储区。因为数据不需要在各个进程之间复制,所以这是最快的一种进程间通信方式。使用共享内存时的关键点在于如何在多个进程之间对一给定的存储区进行同步访问。 共享内存的实现分为3个步骤 创建共享内存 映射共享内存 撤销映射的操作 消息队列 消息队列就是一个消息的链表。 消息队列的实现包括创建或打开消息队列、添加消息、读取消息和控制消息队列这4种操作 ARM Linux线程相关API 线程创建和退出 mutex线程访问控制 信号量线程控制 Linux守护进程 守护进程,也就是通常所说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关闭时终止。 怎样创建一个简单的守护进程。 创建子进程,父进程退出 在子进程中创建新会话 改变当前目录为根目录 重设文件权限掩码 关闭文件描述符 嵌入式Linux C编程入门(第2版) (By Farsight) /
文档评论(0)