线程
线程的定义
进程中的一条执行路径,不为线程分配独立的资源(除必要的数据支撑)
多线程系统的特征
线程必须在某一个进程中。
进程是资源分配单位,线程是调度单位。
一个进程中的所有线程共享资源
多线程的优点
1.多线程方便进行数据的共享和交流。
2.线程切换代价小。
3.提高了CPU的性能
线程状态
1.执行状态:表示线程已经获得CPU正在运行
2.就绪状态:表示线程已经具备了各种执行条件,等到再次获得CPU就可以运行
3。阻塞状态:线程在执行中因为某事件受阻而处于暂定状态
线程实现
线程分类
根据是否可感知:用户级线程和内核线程
用户级线程
仅存在于用户空间
应用程序使用线程库调度器来控制线程
操作系统认为所有的进程都是单线程
用户级线程是种“多对一”的线程映射
优点
可以在不支持线程的操作系统中实现
线程管理的代价小
允许每个进程定制自己的调度算法,线程管理比较灵活
线程的调度不需要内核直接参与,控制简单
缺点
线程阻塞会导致对应进程阻塞
没有时钟中断,不能用轮转调度的方式调度线程
不能被多核系统加速
内核级线程
内核级线程建立和销毁都是在内核的支持下运行,由操作系统负责管理,通过系统调用完成的。
一对一映射
OS为每个线程设置TCB,感知控制器
优点
多处理器系统中,内核能够并行执行同一进程内的多个线程
如果进程中的一个线程被阻塞,能够切换同一进程内的其他线程继续执行
缺点
所有线程销毁创建切换都以系统调用的形式实现,代价较大