1、线程概念
在linux下使用pcb描述实现了程序调度,并且这些pcb共用同一个虚拟地址空间,相较于传统的pcb更加轻量化一点,因此也把linux下的pcb称之为轻量级进程。
线程是一个进程内部的控制序列
2、进程与线程
进程是系统资源分配的基本单位
线程是cpu调度的基本单位
线程之间的独有与共享
- 独有:栈、寄存器、信号屏蔽字(pcb的一个阻塞信号集合)、errno、线程的标识符
- 共享:虚拟地址空间(共享代码段、数据段)、文件描述符表、信号处理方式、工作路径、用户ID、组ID
3、多进程/多线程进行多任务处理
(1)多线程的优点
- 线程间通信更加方便灵活(全局变量、函数传参)
- 线程的创建与销毁成本更低(不需要开辟多余的空间,节省资源)
- 线程间的调度成本更低
- 线程的执行粒度更加细致
异常和某些系统调用针对的是整个进程(如exit)
(2)多进程的优点
具有独立性,因此更加稳定、健壮
例如:对主功能程序安全性稳定性要求更高的最好用多进程,其他的使用多线程。
例如shell、服务器使用多进程
(3)共同优点
CPU密集型程序/IO密集型程序
并行压缩cpu处理/IO等待时间