2.1.2 线程
一. 线程
- 线程与进程
引入进程是为了更好的使多道程序并发执行,提高资源利用率和系统吞吐量。
引入线程是为了减小程序在并发执行时的时空开销,提高并发性能。
2. 属性
(1)进程是资源分配的基本单位,线程是调度的基本单位。
(2)同一进程的各线程共享进程拥有资源。
(3)同一进程内的线程切换不会导致进程切换。
3. 实现方式
(1)用户级线程
(2)内核级线程(核心态)
(3)组合级线程
操作系统只能看见内核级线程,所以内核级线程才是CPU分配的单元
二. 多线程模型(三种)
什么是多线程?
一个程序可以对应多个线程,每个线程对应执行不同的任务。
(1)多对一模型(多个用户级对应一个内核级线程)
- 优点:线程管理在用户空间进行,效率高
- 缺点:并发性不高。(若一个线程阻塞,则整个进程阻塞)
(2)一对一模型
- 优点:并发性强
- 缺点:创建线程开销大
(3)多对多模型(比较合理)
三. 注意
- 进程获得资源,里面的线程共享进程空间。
- 多线程和多任务区别?
(1)多线程是对于程序而言,表示可执行的线程数
(2)多任务是对于操作系统而言,表示可同时执行的程序数。- 并发和并行区别?
(1)并发是在一段时间内,进程宏观上同时执行,微观上串行执行。
(2)并行是在某一时刻,同时执行。- 父进程创建子进程,和主程序调用子程序有什么不同?
(1)父进程创建子进程,两个进程可并发执行。
(2)主程序调用子程序时,会停在调用点,直到子程序返回。