一、进程
1)进程是具有一定独立功能的程序在一个数据集合上的一次动态执行的过程
2)进程包含了正在运行的一个程序的所有状态信息
代码、数据、状态寄存器、通用寄存器、进程占用的资源(打开文件、已分配的内存)
3)进程的特性
动态性、并发性、独立性、制约性(访问共享内存/资源或进程间同步而产生制约)
1.进程与程序之间的联系
1)进程是操作系统处于执行状态程序的抽象
程序=文件(静态可执行文件)
进程=程序+执行状态
2)同一个程序的多次执行过程对应为不同的进程
2.进程与程序之间的区别
1)进程是动态的,程序是静态的
程序是有序代码的集合
进程是程序的执行,进程有用户态、内核态
2)进程是暂时的,程序是永久的
进程是一个有状态变化的过程
程序可长久保存
3)进程包括程序、数据和进程控制块
二、进程控制块(PCB)
操作系统用PCB来描述进程的基本情况和运行状态的变化过程,PCB是进程的唯一标识(每个进程在操作系统中有一个对应的PCB)
进程控制块的内容
①进程标志信息
②处理机现场保存
③进程控制信息:调度和状态信息、进程间通信信息、存储管理信息、进程所用资源、有关数据结构的连接情况(进程队列)
三、进程状态
1.进程的生命周期
1)进程创建
系统初始化时
用户请求创建一个新进程
正在运行的进程执行了创建进程的系统调用
2)进程执行
内核选择一个就绪的进程,让它占用处理器并执行
3)进程等待(阻塞):由进程内部原因导致
请求并等待系统服务,无法马上完成
启动某种操作,无法马上完成
需要的数据没有到达
4)进程抢占
高优先级进程就绪
进程执行当前时间片用完
5)进程唤醒:进程只能被别的进程或操作系统唤醒
被阻塞进程需要的资源可以被满足
被阻塞进程等待的事件到达
6)进程结束
正常退出(自愿的)
错误推出(自愿的)
致命退出(强制性的)
被其他进程所杀(强制性的)
2.进程的三状态模型
1)NULL->创建:一个新进程被创建出来执行一个程序
2)创建->就绪:当进程创建完成并初始化后,进入就绪状态
3)就绪->运行:处于就绪状态的进程被进程调度程序选中后,就分配到处理机上运行
4)运行->结束:当进程表示已完成或出错,当前运行进程会由操作系统作结束处理
5)运行->就绪:处于运行状态的进程在运行过程中,由于分配给它的时间片用完而让出处理机
6)运行->等待:正在运行的进程请求某资源且必须等待时
7)等待->就绪:当进程要等待的某事件到来时,它从阻塞状态变到就绪状态
3.进程挂起
处于挂起的进程映像在磁盘上,目的是减少进程占用内存(虚拟存储)
等待挂起:进程在外存等待某事件的出现
就绪挂起:进程在外存(因为内存不够或优先级不够高),但只要进入内存即可运行
挂起:
1)等待->等待挂起
2)就绪->就绪挂起
3)运行->就绪挂起
4)等待挂起->就绪挂起
激活:
1)等待挂起->等待
2)就绪挂起->就绪
四、线程
线程是进程的一部分,描述指令流执行状态,它是进程中的指令执行流的最小单元,是CPU调度的最小单元。
1)线程的优点
一个进程中可以存在多个线程
各个线程之间可以并发执行
各个线程之间可以共享地址空间和文件等资源
2)线程的缺点(不重要):一个线程崩溃,会导致其所属进程的所有线程崩溃
1.进程与线程的比较
①线程 = 进程 - 共享资源
②进程是资源分配单位,线程时CPU调度单位
③进程拥有一个完整的资源平台,而线程只独享指令流的必要资源(堆栈、指令指针、CPU寄存器的现场保护)
④线程具有就绪、等待、运行三种基本状态和状态间的转换关系
⑤线程能减少并发执行的时间和空间开销:
- 线程的创建和终止时间比进程短
- 同一进程内线程切换时间比进程短
- 同一进程内的各线程共享内存和文件资源,可以不通过内核进行通信
2.用户线程
由一组用户级的函数库来完成线程的管理
1)用户线程的特征
①不依赖于操作系统的内核
②在用户空间实现的线程机制(TCB由线程库函数维护)
③同一进程内的用户线程切换速度快(无需用户态/内核态的切换)
④允许每个进程拥有自己的调度算法
2)用户线程的不足
①线程发起系统调用而阻塞时,整个进程进入阻塞状态
②不支持基于线程的处理机抢占
③只能按进程分配时间片
3.内核线程
进程由内核通过系统调用实现的线程机制,由内核完成线程的创建、终止和管理
内核线程的特征
①由内核维护PCB和TCB
②线程执行系统调用而不影响进程内的其它线程
③线程的创建、终止和管理开销较大
④以线程为单位进行CPU时间分配(调度单位是线程)