操作系统--线程

多线程的由来

多进程存在进程之间通讯与共享数据的问题,与进程设计相悖
多进程系统开销大,包含创建进程,进程结束和进程之间的切换
需要在进程内部增加一类实体满足实体之间可以并发执行实体之间可以共享相同的地址空间

线程的概念

线程是进程的一部分,描述指令流执行状态.它是进程中指令流的最小单元,是CPU调度的基本单位。

优点:

一个进程中可以同时存在多个线程
各个线程之间可以并发执行
各个线程之间可以共享地址空间和文件资源

缺点:

一个线程崩溃,会导致所属进程全线崩溃

线程的实现

用户线程

有一组用户级的线程库函数来完成线程的管理,包括线程的创建 终止 同步和调度

特征

不依赖与操作系统的内核 内核不了解用户线程的存在
可用于不支持线程的多进程操作系统
每个进程有私有的线程控制块(TCB)列表
TCB由线程库函数维护
同一进程内用户线程切换速度快 无需用户态与内核态切换
允许每个进程拥有自己的线程调度算法

缺点

线程发起系统调用而阻塞时,则整个进程进入等待
不支持基于线程的处理机抢占 除非当前运行的线程主动放弃,它所在的进程的其他线程无法抢占CPU
只能按进程分配CPU时间 多个线程进程中,每个线程分配的时间片比较少

内核线程

由内核通过系统调用实现的线程机制,由内核完成线程的创建 终止和管理

特征

由内核维护PCB和TCB
线程执行系统调用而被阻塞不影响其他线程
以线程为单位进行CPU时间分配 多线程的进程可获得更多CPU时间片

缺点

线程的创建 终止 切换通过系统调用在内核种实现所以开销较大

你可能感兴趣的:(操作系统--线程)