操作系统之基础篇-(3)作业管理及进程管理附加篇

目录

Linux的进程管理

Linux进程的相关概念

进程的类型

进程的标记

进程的状态标记

操作Linux进程的相关命令

作业管理之进程调度

进程调度概述

2个步骤:

为了实现2个步骤,就要了解3种重要的机制:

按照老进程有没有执行完,可以把进程调度方法分为2大类:

进程调度的算法

作业管理之死锁

死锁的产生

主要有2种情况:

死锁的4个必要条件

死锁的处理

预防死锁的方法

银行家算法


Linux的进程管理

  • Linux进程的相关概念

  • 进程的类型

  • 1.前台进程
  • 2.后台进程
  • 3.守护进程
  • 前台进程
  • 前台进程就是具有终端,可以和用户交互的进程
  • 我们通过命令行去使用Linux时是通过终端Shell来使用的
  • 后台进程
  • 与前台进程相对,没有占用终端的就是后台进程
  • 后台程序基本上不和用户交互,优先级比前台进程低
  • 守护进程
  • 守护进程(daemon)是特殊的后台进程
  • 很多守护进程在系统引导的时候启动,一直运行直到系统关闭
  • Linux有很多典型的守护进程
  • 如:crond,httpd,sshd,mysqld
  • 进程名字以d结尾的一般都是守护进程
  • 进程的标记

  • 进程ID是进程的唯一标记,每个进程拥有不同的ID
  • 进程ID表现为一个非负整数,最大值由操作系统限定
  • 操作系统提供fork函数接口创建进程
  • 进程A调用fork接口创建进程B
  • 进程B调用fork接口创建进程C
  • 这就是进程的层级关系
  • 这个关系称为父子进程关系
  • 进程A是进程B的父进程
  • 进程B是进程A的子进程
  • 父子进程关系可以通过pstree命令查看
  • ID为0的进程为idle进程,是系统创建的第一个进程
  • ID为1的进程为init进程,是0号进程的子进程,完成系统初始化
  • init进程是所有用户进程的祖先进程
  • 进程的状态标记

  • 操作Linux进程的相关命令

  • ps命令
  • top命令
  • kill命令
  • 作业管理之进程调度

  • 进程调度概述

  • 进程调度是指计算机通过决策决定哪个就绪进程可以获得CPU使用权
  • 前提也是多道程序设计
  • 2个步骤:

  • 1.保留旧进程的运行信息,请出旧进程(收拾包袱离开CPU)
  • 2.选择新进程,准备运行环境并分配CPU(新进驻)
  • 为了实现2个步骤,就要了解3种重要的机制:

  • 1.就绪队列的排队机制
  • 2.选择运行进程的委派机制
  • 3.新老进程的上下文切换机制
  • 就绪队列的排队机制
  • 为了提高进程调度的效率,事先将就绪进程按一定的方式排成队列,以便调度程序可以最快找到就绪进程
  • 选择运行进程的委派机制
  • 调度程序以一定的策略选择就绪进程,将CPU资源分配给它
  • 新老进程的上下文切换机制
  • 如果需要把新的进程调度到CPU里的话,那么就要将老的进程的CPU环境备份出来,然后将新的进程的环境切换到CPU里面去
  • 保存当前进程的上下文信息,装入被委派执行进程的运行上下文
  • 按照老进程有没有执行完,可以把进程调度方法分为2大类:

  • 1.非抢占式的调度
  • 2.抢占式的调度
  • 非抢占式的调度
  • 处理器一旦分配给了某个进程,就让该进程一直使用下去
  • 调度程序不以任何原因抢占正在被使用的处理器
  • 直到进程完成工作或因为IO阻塞才会让出处理器
  • 抢占式的调度
  • 允许调度程序以一定的策略暂停当前运行的进程
  • 保存好旧进程的上下文信息,分配处理器给新进程
  • 进程调度的算法

  • 1.先来先服务调度算法
  • 2.短进程优先调度算法
  • 3.高优先权优先调度算法
  • 4.时间片轮转调度算法
  • 先来先服务调度算法
  • 在就绪队列里,按照先来先服务的原则,优先取出队列前面的进程进行调度
  • 短进程优先调度算法
  • 调度程序优先选择就绪队列中估计运行时间最短的进程
  • 短进程优先调度算法不利于长作业进程的执行
  • 高优先权优先调度算法
  • 进程附带优先权,调度程序优先选择权重高的进程
  • 高优先权优先调度算法使得紧迫的任务可以优先处理
  • 时间片轮转调度算法
  • 按先来先服务的原则排列就绪进程
  • 每次从队列头部取出待执行进程,分配一个时间片执行
  • 是相对公平的调度算法,但不能保证及时响应用户
  • 作业管理之死锁

  • 介绍:
  • 死锁的产生

  • 主要有2种情况:

  • 1.竞争资源
  • 2.进程调度顺序不当
  • 竞争资源
  • 本质:
  • 共享资源数量不满足各个进程需求
  • 各个进程之间因为共享资源的竞争导致死锁
  • 特点:
  • 等待请求的资源被释放
  • 自身占用资源不释放
  • 死锁的4个必要条件

  • 1.互斥条件
  • 2.请求保持条件
  • 3.不可剥夺条件
  • 4.环路等待条件
  • 互斥条件
  • 进程对资源的使用是排他性的使用
  • 某资源只能由一个进程使用,其它进程需要使用只能等待
  • 请求保持条件
  • 进程至少保持一个资源,又提出新的资源请求
  • 新资源被占用,请求被阻塞
  • 被阻塞的进程不释放自己保持的资源
  • 不可剥夺条件
  • 进程获得的资源在未完成使用前不能被剥夺
  • 获得的资源只能由进程自身释放
  • 环路等待条件
  • 发生死锁时,必然存在进程-资源环形链
  • 死锁的处理

  • 预防死锁的方法

  • 为了预防死锁只需破坏1个或多个必要条件,死锁就不会产生
  • 破坏请求保持条件
  • 系统规定进程运行之前,一次性申请所有需要的资源
  • 进程在运行期间不会提出资源请求,从而破坏请求保持条件
  • 破坏不可剥夺条件
  • 当一个进程请求新的资源得不到满足时,必须释放占有的资源
  • 进程运行时占有的资源可以被释放,意味着可以被剥夺
  • 破坏环路等待条件
  • 可用资源线性排序,申请必须按照需要递增申请
  • 线性申请不再形成环路,从而破坏环路等待条件
  • 银行家算法

  • 是一个可操作的著名的避免死锁的算法
  • 以银行借贷系统分配策略为基础的算法
  • 理解:
  • 客户申请的贷款是有限的,每次申请需声明最大资金量
  • 银行家在能够满足贷款时,都应该给用户贷款
  • 客户在使用贷款后,能够及时归还贷款
  • 这个算法要求有3个数据结构
  • 1.已分配资源表
  • 2.所需资源表
  • 3.可分配资源表
  • 将所需资源表减去已分配资源表得到还需分配资源表
  • 将还需分配资源表与可分配资源表进行对比
  • 优先把可分配的所有资源都分发给某个可满足的进程
  • 让此进程可以继续执行下去,等此进程执行完后,再归还相关资源
  • 归还资源后,又可以把新的资源重新分配给其它需要的进程

猜你喜欢

转载自blog.csdn.net/weixin_59624686/article/details/124938732