Linux下的C编程实战(四) ――“线程”控制与“线程”通信编程 宋宝华 [email=21cnbao@]21cnbao@[/email] 1.Linux“线程” 笔者曾经在《基于嵌入式操作系统VxWorks的多任务并发程序设计》(《软件报》2006年第5~12期)中详细叙述了进程和线程的区别,并曾经说明Linux是一种“多进程单线程”的操作系统。Linux本身只有进程的概念,而其所谓的“线程”本质上在内核里仍然是进程。大家知道,进程是资源分配的单位,同...
Linux下的C编程实战(三) ――进程控制与进程通信编程 作者:宋宝华 e-mail: [email=21cnbao@]21cnbao@[/email] 1.Linux进程 Linux进程在内存中包含三部分数据:代码段、堆栈段和数据段。代码段存放了程序的代码。代码段可以为机器中运行同一程序的数个进程共享。堆栈段存放的是子程序(函数)的返回地址、子程序的参数及程序的局部变量。而数据段则存放程序的全局变量、常数以及动态数据分配的数据空间(比如用mal...
Linux下的C编程实战(二) ――文件系统编程 宋宝华 [email=21cnbao@]21cnbao@[/email] 1.Linux文件系统 Linux支持多种文件系统,如ext、ext2、minix、iso9660、msdos、fat、vfat、nfs等。在这些具体文件系统的上层,Linux提供了虚拟文件系统(VFS)来统一它们的行为,虚拟文件系统为不同的文件系统与内核的通信提供了一致的接口。下图给出了Linux中文件系统的关系: 在Linux平台下对文件编程可以使用两...
Linux下的C编程实战(五) ――驱动程序设计 宋宝华 [email=21cnbao@]21cnbao@[/email] 1.引言 设备驱动程序是操作系统内核和机器硬件之间的接口,它为应用程序屏蔽硬件的细节,一般来说,Linux的设备驱动程序需要完成如下功能: (1)初始化设备; (2)提供各类设备服务; (3)负责内核和设备之间的数据交换; (4)检测和处理设备工作过程中出现的错误。 妙不可言的是,Linux下的设备驱动程序被组织为一组完成不同任务...