进程
进程概念
定义
进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。
- 进程是程序的执行;
- 进程执行必须按照一定顺序进行
- 进程组成:数据、代码、PCB(、栈)
引入原因
计算机允许加载多个程序到内存以便并发执行,需要对各种程序提供更严的控制和更好的划分,因此引入进程概念
进程与程序的区别
- 进程是由程序和数据两部分组成的;
- 进程有生命周期,有诞生有消亡,短暂的;而程序是相对长久的;
- 程序是静态的,进程是动态的;
- 进程具有创建其他进程功能,而程序没有;进程更能真实地描述并发,而程序不能。
进程特征
- 并发性:指多个进程实体同存于内存中,能在一段时间内同时运行。
- 动态性:进程的实质是程序的一次执行过程,有一定的生命期。
- 独立性:进程是一个能独立运行的基本单位,同时也是申请拥有系统资源的独立单位
- 交互性:进程在执行过程中可能与其他进程产生直接或间接的关系
- 异步性:进程各自以独立的、不可预知的速度向前推进
- 结构性:进程的组成=程序+数据+PCB
进程控制块
PCB:是进程存在的唯一表示
PCB表:
1.系统把所有PCB组织在一起,并放在内存固定区域,就构成了PCB表
- 链表
- 索引表
2.PCB表的大小决定了系统中最多可同时存在的进程个数,称为系统的并发度
进程调度
(区别在于执行频率不同)
- 高级调度:从池中选择进程加入到内存,进程执行完,回收资源
- 中级调度:涉及进程在内外存的切换。(目的:提高内存利用率与系统吞吐量)
- 低级调度:从准备执行的进程中选择,分配CPU
进程控制
进程创建
创建方式:1.系统程序模块统一创建 2.父进程创建
临界区
操作系统中把每个进程中访问临界资源的那段代码段称为临界区。
临界资源:操作系统中将一次仅允许一个进程访问的资源称为临界资源。
进程联系
相交进程:指多个并发进程在逻辑上有某种联系
无关进程:即不相交进程,在逻辑上无任何联系的进程。
直接作用:进程间的相互联系是有意识的安排的,只发生在相交进程间。(同步、通信)
间接作用:进程间要通过某种中介发生联系,是无意识安排的,可发生在相交进程之间,也可发生在无关进程之间。(互斥)
进程同步
所谓进程同步是指多个合作进程为了完成同一个任务,它们在执行速度上必须相互协调
进程同步准则
①空闲让进:当无进程处于临界区时,必须让一个要求进入它的临界区的进程立即进入,以
提高临界资源的利用率。
②忙则等待:当已有进程处于临界区时,其他试图进入自己临界区的进程必须等待,以保证
它们互斥地进入临界区。
③让权等待:对于等待进入临界区的进程而言,它必须立即释放处理机,以避免进程”忙等”
而降低 CPU 的效率。
④有限等待:对要求进入临界区的进程,应在有限时间内进入,以免陷入”死等”。
进程互斥
进程间因竞争共享公有资源而引起的间接制约关系,称为互斥。
进程通信
通信方式
- 共享存储:1.共享数据结构 2.共享存储区
- 消息传递:1.直接通信(消息队列) 2.间接通信(信箱)
- 管道通信
- 网络通信
线程
引入
- 进程的两个基本特征:
- 资源分配的独立单位
- 调度的基本单位
- 将进程资源分配和调度分开,引入线程
线程定义
1.有时称为轻量级进程
2.进程中的一个运行实体、执行单元、执行体
3.一个CPU调度单位、调度实体
4.可以被内核控制,也可以被用户控制
进程与线程的联系
- 一个进程可以有一个或多个线程
- 线程包含在进程之内,是进程中实际运行工作的单位
- 进程的线程共享进程资源
- 一个进程可以并发多个线程,每个线程执行不同的任务
线程益处
资源开销
- 进程很“昂贵”的多任务工作方式;
- 进程内的多个线程共享地址空间以及大部分数据;
- 启动一个线程所花费的空间远远小于启动一个进程所花费的空间。
- 线程间彼此切换所需的时间远远小于进程间切换所需要的时间时间。
通信开销
- 不同进程只能通过通信方式进行数据共享,通信方式费时,而且不易实现。
- 同一进程内的线程共享内存和文件,相互通信无须调用内核,线程数据可以直接为其他线程所用。
实现机制
用户级线程
1.优点:
- 线程切换不调用核心
- 调度算法是应用程序特定的算法
- 可运行在任何操作系统上
2.缺点:
- 进程阻塞,进程中所有线程将被阻塞
- 进程内不同线程不能同时运行于不同处理器上
内核级线程
1.优点:
- 对多处理器,核心可同时调度同一进程的多个线程
- 阻塞是在线程一级完成
2.缺点:同一进程内线程切换调用内核,速度下降
CPU调度
CPU调度时刻
- 当一个进程从运行状态切换到等待状态
- 当一个进程从运行状态切换到就绪状态
- 当一个进程从等待状态切换到就绪状态
- 当一个进程终止时
- 当进程创建到就绪
调度算法
- 先到先服务调度(FCFS)
- 最短作业优先调度(SJF):平均等待时间最小
- 非抢占式
- 抢占式:最短剩余作业优先(SRTF)
- 优先级调度算法:可能产生饥饿问题
- RR轮转调度算法:
- 周转时间大于SJF算法
- 响应时间好于SJF算法
- 多级反馈队列调度算法
进程同步
- 多个进程并发访问和操作同一数据且执行结果与访问发生的特定顺序有关,称为竞争条件
- 共享数据的并发访问可能导致数据不一致
- 维护数据的一致性需要能够保证协作进程顺利执行的机制
使用原则
- 空闲让进
- 无空等待
- 多中择一
- 优先等待
- 让权等待
经典进程同步问题
- 生产者-消费者问题
- 读者-写者问题(掌握读者优先)
- 哲学家就餐问题
死锁
产生原因
1.一组阻塞进程分别占有一定的资源并等待另外一些已经被同组其他进程所占有的资源
2.资源竞争,竞争可能产生死锁,但不一定会死锁
死锁特征
- 互斥
- 持有并等待
- 非抢占
- 循环等待
死锁处理方法
死锁预防
当出现死锁四个必要条件,只要确保至少一个必要条件不成立,就能预防死锁发生
死锁避免
死锁检测
通过资源分配图判断
死锁恢复
有两个方法:
- 终止进程方法:简单的终止一个或多个进程以打破循环等待
- 资源抢占方法:从一个或多个死锁进程那里抢占一个或多个资源