线程概念
在linux下使用pcb描述实现了程序调度,并且这些pcb共用同一个虚拟地址空间,相当于传统的pcb更加轻量化一点,因此也把linux下的pcb称之为轻量级进程。
1、线程的优点:
- 创建一个新线程的代价要比创建一个新进程小得多
- 与进程之间的切换相比,线程之间的切换需要操作系统做的工作要少很多
- 线程占用的资源要比进程少很多
- 能充分利用多处理器的可并行数量
- 在等待慢速I/O操作结束的同时,程序可执行其他的计算任务
- 计算密集型应用,为了能在多处理器系统上运行,将计算分解到多个线程中实现
- I/O密集型应用,为了提高性能,将I/O操作重叠。线程可以同时等待不同的I/O操作
2、线程的缺点: - 性能损失
- 健壮性降低
- 缺乏访问控制
- 编程难度提高
进程是系统资源分配的基本单位
线程是cpu调度的基本单位
3、线程间的独有和共享
独有:栈、寄存器、信号屏蔽字、errno、标识符
共享:虚拟地址空间(代码段、数据段)、文件描述符表、信号处理方式、工作路径、用户ID、组ID
4、多进程/多线程进行多任务处理
多线程:
- 线程间通信更加方便灵活(全局变量、函数传参)
- 线程的创建/销毁成本更低
- 线程间的调度成本更低
- 异常和某些系统调用针对的是整个进程
多进程:
具有独立性,因此更加的而稳定、健壮。
例如:对主功能程序安全性稳定性要求更高的最好使用多进程,剩下的多线程shell/服务器
共同优点:
CPU密集型程序/IO密集型程序