多进程可以实现并发编程,但是效率较慢。
为了进一步提高效率,引入了线程,线程也叫做“轻量级进程”
一个进程中可以包含一个线程,也可以包含多个线程,是一个包含关系。
区别:
- 进程包含线程
- 线程比进程更轻量
- 进程是资源管理的基本单位,线程是cpu调度的最小单位
- 进程有一个重要的特点:独立性,每个进程都有自己的独立的虚拟地址空间(和内存有关),以及文件描述符表(和硬盘有关),同一个进程的多个线程之间共享着虚拟地址空间,和文件表述符表
- 线程和进程之间没有这个独立性,如果某个进程中的某个线程出现异常可能导致这个进程中的所有线程都终止
程序:程序表现为系统中的一个可执行文件
进程:程序运行起来之后,就是一个进程(运行态的程序)
运行状态:进程正在执行的状态
就绪状态:任务执行一段时间后被强制暂停去执行下一个任务。被暂停的任务就是就绪状态
就绪–>运行:获取cpu时间片
运行–>就绪:时间片完
阻塞–>请求:I/O请求完成
运行–>阻塞:等待I/O请求
终止的情况:正常执行完成,异常退出
对于系统调度从进程1切换到进程2
进程1:运行–>就绪
进程2:就绪–>运行
多线程的作用:提高效率(尽可能充分利用系统资源CPU)