操作系统—线程
1、什么是线程
- 有部分进程需要同时做很多事,引入线程来增加并发度
- 线程是程序执行流的最小单位,进程之间可以并发执行,进程内部的各个线程也可以并发的执行。
- 引入线程之后,进程就只作为除cpu之外的系统资源的分配单元(打印机)
2、线程机制带来的变化(对比传统的)
- 进程变成资源分配的基本单位,线程是调度的基本单位 ,线程之间可以实现并发。
- 提高了并发度 线程的切换不需要切换进程环境,系统开销减小
3、线程的属性:
- 线程不拥有系统的资源,共享的是进程的系统资源
- 同一个进程下线程之间的通信不需要系统的干预
- 同一个进程下的线程切换不会引起进程切换,不同的会引起 进程切换
- 线程也有类似于进程的状态
线程的实现方式
1、用户级线程
- 缺点:所有的线程管理工作都是由应用程序负责 线程的切换在用户态下,无需操作系统的干预
- 优点:用户级线程在用户空间就能完成,开销小,效率高,当时并发度不
2、内核级线程
- 操作系统只能看见内核级线程。
- 内核级线程可以运行任意一个有映射关系的用户级线程代码。
- 只有内核级线程都被阻塞是,进程才会被阻塞。但是管理成本大,开销高
3、多线程模型:
- 一对一模型:一个用户级线程映射到一个内核级线程
- 优点:各个线程可以分配到多核处理机并发执行,并发度高
- 缺点:全部需要操作系统的支持,开销大
多对一模型:多个用户级线程对应一个内核级线程
优点:线程管理开销小
缺点:一个线程阻塞会导致整个进程都被阻塞,并发度低
多对多模型:n个用户级线程映射多m个内核级线程(n>m)