揭开进程的神秘面纱

进程


进程的概念

进程是正在运行的程序实例,是系统资源分配和调度的基本单位.

 

进程的特征

动态性,并发性

 

进程的构成

程序块+PCB+数据块

其中PCB是进程存在的唯一标志,描述了进程的基本状况,系统通过进程的PCB来调度和控制进程.PCB一般是常驻内存的,这样系统就可以方便及时地管理进程(而程序和数据可能因为进程挂起而移到外存)

 

PCB的组成:

进程ID

进程状态

等待原因

进程程序存放位置

进程数据存放位置

通用寄存器内容

控制寄存器内容

程序状态字寄存器内容

进程优先数

队列指针

说明信息现场信息管理信息

 

在创建进程时首先创建进程的PCB,然后才能根据PCB中的信息有效的控制进程;

当进程完成任务时,系统释放PCB,进程也随之消亡(通过撤销原语)

 

进程的状态

PCB中的状态字段描述了进程的当前状态,这些状态可以用下图描述


 

运行:当前进程获得了包括CPU在内的所有资源,占有CPU开始运行

就绪:其它资源都已拥有,等待CPU的调度,具备执行的条件(刚创建的进程处于就绪状态)

阻塞:等待除CPU外的其它资源,不具备执行的条件(进程因等待某事件的发生而主动放弃CPU)

挂起:将进程由内存移到外存

 

注意:

1、阻塞状态的进程不能直接进入运行状态

2、就绪状态的进程不能直接进入阻塞状态

 

进程控制原语:

创建原语:创建一个进程

阻塞原语

撤销原语:将执行完毕的进程撤销(回收资源)

唤醒原语:唤醒阻塞队列具备运行条件的一个进程,使其回到就绪队列

优先级原语

调度原语:按调度算法,从就绪队列中选择一个进程执行

 

进程的队列

处于不同状态的进程位于不同的队列,系统通常有三种队列(队列由PCB中的队列指针连成)

 

运行队列:单CPU系统运行队列内只有一个进程

就绪队列:有多个进程等待被调度

阻塞队列:根据阻塞的原因,分为多个阻塞队列;队列的个数取决于阻塞原因的个数

 

进程调度与死锁

进程调度的算法

 

先来先服务:就绪队列按先来后到排序,执行完一个再执行另一个

优先数调度:就绪队列按优先级排队

轮转法:就绪队列按FIFO排队,但是每个进程被执行一个时间片后就让出CPU,然后排在就绪队列末尾

 

注:

前两种算法不能用于分时操作系统的主调度算法

 

进程占有CPU的方式有两类:剥夺式和非剥夺式

 

死锁

死锁产生的必要条件:

1、互斥条件:指各进程间竞争临界资源

2、保持和等待条件:进程处于阻塞状态时,会一直保持已拥有的资源不放

3、不剥夺条件:已拥有的资源不会被剥夺

4、环路等待条件:每个进程都占有对方要申请的资源

 

解决死锁的策略:

  1. 预防:破坏死锁产生的必要条件
  2. 避免:分配资源时,看是否安全(如银行家算法),如果分配完后该进程能执行则证明是安全的。
  3. 检测
  4. 消除

希望通过这篇文章能让大家了解到进程和程序的区
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值