任务间的通信是指进程之间的信息交换。任务间的同步与互斥可以看作是传递的信息量较少的一种通信方式。目前常见的任务通信方式可以分为3大类:共享存储器、报文传递系统和管道通信。
嵌入式Linux中的任务间的通信
1 信号
信号机制与中断机制非常相似,所以信号又被称为软件中断。在Linux中,很多重要的应用程序都要处理信号,从而信号提供了一种处理异步事件的方法。
1)信号的本质
信号是在软件层次上对中断机制的一种模拟,在效果上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。信号与中断的不同在于信号的实时性不如中断强,中断总是可以打断任务的执行(开中断的情况下),而
设备驱动程序的主要任务是接收上层软件发来的抽象要求(如read、write命令),再把它转换为具体要求后,发给设备控制器,启动设备去执行。此外,它也接收由设备控制器发来的信号,并将其传送给上层软件。
每个设备驱动程序都具有一整套和硬件设备通信的例程,并且提供给操作系统一套标准的软件接口。
设备驱动程序主要是请求I/O的进程与设备控制器之间的一个通信程序。它将进程的I/O请求传送给控制器,而把设备控制器中所记录的设备状态、I/O操作完成的情况,反映给请I/O的进程。
源程序经过编译或汇编以后,产生了目标程序,而编译系统总是从零号地址单元开始,为目标程序顺序分配地址。这些地址被称为相对地址,或者逻辑地址。相对地址的集合称为逻辑地址空间,简称地址空间。
所谓存储空间是指主存中一系列存储信息的物理单元的集合。这些物理单元的编号称为物理地址或绝对地址。因此,存储空间的大小是由主存的实际容量决定的。
由于用户程序的装入而引起地址空间中的相对地址转化为存储空间中的绝对地址的地址变换过程,称为地址重定位,也称地址映射。
实现地址重定位或地址映射的方法有两种:静态地址重定位和动态地址重定位。
(1)静态地址重定位
是指用户程序在装入时由装配程序一次完成,即地址变换只是在装入时一次完成,以后不再改变。
(2)动态地址