欢迎来到天天文库
浏览记录
ID:27335758
大小:430.51 KB
页数:17页
时间:2018-12-01
《armlinux进程线程开发实例》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、嵌入式LinuxC编程入门(第2版)(ByFarsight)http://www.farsight.com.cn/www.embedu.org第10章ARMLinux进程线程开发实例本章目标进程相关的基本概念ARMLinux的进程描述符、任务结构以及文件描述符的概念ARMLinux中线程的实现Linux进程创建的相关APILinux进程执行的相关APILinux进程退出的相关APILinux进程等待的相关APILinux进程间通信的几种常见方法:如管道、信号、共享内存、消息队列等Linux中线程创建
2、和退出的相关APILinux中修改线程属性的方法Linux中对线程的控制访问Linux中多任务管理器的实现守护进程的编写www.embedu.org进程描述符及任务结构(1)进程是一个独立的可调度的活动(E.Cohen,D.Jofferson)。(2)进程是一个抽象实体,当它执行某个任务时,将要分配和释放各种资源(P.Denning)。(3)进程是可以并行执行的计算部分(S.E.Madnick,J.T.Donovan)。www.embedu.orgLinux中进程描述符Linux系统中包括下面几种类
3、型的进程。交互进程批处理进程守护进程进程的创建、执行和终止www.embedu.org进程的调度进程调度是指确定CPU当前执行哪个进程。Linux进程调度策略是以优先级调度为基础的,即优先运行优先级最高的进程。在优先级调度的基础上,通过被分配的优先级的范围,又可以把进程分为实时进程(这里的实时是软实时)和一般进程。实时进程优先于一般进程,并由特殊的调度策略来保证它们的(软)实时性。www.embedu.orgLinux中进程调度算法Linux2.6内核中实现了一个O(1)的调度算法,也就是说每
4、一次调度所需要的时间与该CPU内的总进程数无关。相比于以前的Linux内核调度算法最坏情况O(n)的复杂度要高效、精巧许多,而且由此也可以使得实时进程的实时性得到更加充分的保证。www.embedu.orgLinux中的线程Linux中实现线程的机制非常独特。从内核的角度来说,它并没有线程这个概念。Linux把线程都当作进程来实现,仅仅将其视为使用某些共享资源的进程。每个线程都用有惟一隶属于自己的task_struct,所以在内核中,它看起来就像一个普通的进程(只是该进程和其他一些进程共享某些资源,
5、如地址空间等)。www.embedu.orgLinux中进程间通信管道(Pipe)及有名管道(namedpipe)信号(Signal)消息队列共享内存信号量套接字(Socket)www.embedu.orgARMLinux进程控制相关APIforkexec函数族exit和_exitwait和waitpidwww.embedu.org管道通信管道是Linux中进程间通信的一种方式,它把一个程序的输出直接连接到另一个程序的输入。Linux的管道主要包括两种无名管道有名管道。www.embedu.org有
6、名管道的创建有名管道的创建可以使用函数mkfifo,该函数类似文件中的open操作,可以指定管道的路径和打开的模式。在创建管道成功之后,就可以使用open、read、write这些函数了www.embedu.org信号通信发送信号的函数:kill()、raise()。捕获信号的函数:alarm()、pause()。处理信号的函数:signal()。www.embedu.org共享内存共享内存允许两个或更多进程共享一给定的存储区。因为数据不需要在各个进程之间复制,所以这是最快的一种进程间通信方式。使用
7、共享内存时的关键点在于如何在多个进程之间对一给定的存储区进行同步访问。共享内存的实现分为3个步骤创建共享内存映射共享内存撤销映射的操作www.embedu.org消息队列消息队列就是一个消息的链表。消息队列的实现包括创建或打开消息队列、添加消息、读取消息和控制消息队列这4种操作www.embedu.orgARMLinux线程相关API线程创建和退出mutex线程访问控制信号量线程控制www.embedu.orgLinux守护进程守护进程,也就是通常所说的Daemon进程,是Linux中的后台服务进程
8、。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关闭时终止。www.embedu.org怎样创建一个简单的守护进程。创建子进程,父进程退出在子进程中创建新会话改变当前目录为根目录重设文件权限掩码关闭文件描述符www.embedu.org
此文档下载收益归作者所有