进程用来管理资源,资源调度的基本单位。线程是进程当中的一条执行流程,是CPU调度的基本单位。
优点:
- 一个进程可以同时存在多个线程
- 线程可以并发执行
- 线程之间共享资源
缺点:
一个线程崩溃,则整个进程崩溃。比如浏览器就不会选择线程模式,因为一旦一个崩溃,就全部崩溃。
进程拥有一个完整的资源平台,线程只独享必不可少的资源比如寄存器和栈。但同样拥有三态:运行,就绪,等待。
能够减少并发执行的时间和空间开销。
线程的实现方式:
用户线程:在用户空间实现 (进程管理)
内核线程:在内核中实现 (操作系统管理)
轻量级进程:在内核中实现,支持用户线程
操作系统看不到用户线程,用户线程由进程管理:
用户线程的缺点:
总结,用户线程由进程控制,内核无法感知,因此也没有用户态,内核态切换的花销,但是无法利用多核的优势,如果线程阻塞,则整个进程会阻塞,当一个用户占有资源时,除非主动退出,否则其他线程无法使用。
内核线程同一时间一个进程可以有多个线程同运行,一个线程中断,进程中的其他线程仍然可以运行。缺点就是由内核管理,用户态/核心态,切换开销大。