操作系统第二章 进程管理

进程管理(非常重要)

在这里插入图片描述

1. 什么是进程?

1.1 概念

程序:就是一个指令序列,早期的计算机只支持单道程序;引入多道程序技术之后,为了方便操作系统管理,完成各程序并发执行,引入了进程、进程实体的概念。

进程:是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分配和调度的一个独立单位。

PCB(Process Control Block)、程序段、数据段三部分构成了进程实体(进程映像)。

  • 几个要点

    • 进程是程序一次执行

      an instance of a computer program that is being executed

    • 进程是一个程序及其数据在处理机上顺序执行时所发生的活动

    • 进程时程序在一个数据集合上运行的过程

    • 进程是系统进行资源分配和调度的一个独立单位(或者说基本单位)

  • 进程和程序的区别与联系

区别:
1)进程是动态的;程序是静态的。
2)进程有独立性,能并发执行;程序不能并发执行。
3)二者无一一对应关系。
4)进程异步运行,会相互制约;程序不具备此特征。
但是,进程与程序又有密切的联系: 进程不能脱离具体程序而虚设, 程序规定了相应进程所要完成的动作。
5)组成不同。进程包含PCB、程序段、数据段。程序包含数据和指令代码。
6)程序是一个包含了所有指令和数据的静态实体。本身除占用磁盘的存储空间外,并不占用系统如CPU、内存等运行资源。
7)进程由程序段、数据段和PCB构成,会占用系统如CPU、内存等运行资源。
8)一个程序可以启动多个进程来共同完成。
联系:进程不能脱离具体程序而虚设, 程序规定了相应进程所要完成的动作。

进程的结构

  • 控制块(PCB)
  • 数据段
  • 程序段

在这里插入图片描述

1.2 进程的特征(理解即可)

  • 动态性:由创建而生,由撤销而亡

  • 并发性:多个进程同时运行

  • 独立性:独立资源分配

  • 异步性:相互独立、互不干扰

在这里插入图片描述

1.3 进程与线程

在这里插入图片描述

  • 什么是线程?
    • Thread,进程的轻型实体,也叫”轻量级进程“,是一系列活动按事先设定好的顺序依次执行的过程,是一系列指令的集合。
    • 是一条执行路径,不能单独存在,必须包含在进程中。
    • 线程是OS中运算调度的最小单位

例如,打开的火绒安全软件(就是一个进程),里面有很多的功能:

一个进程可以包含多个线程,也可以只包含一个线程

在这里插入图片描述

打开的系统修复,漏洞扫描这些就是一个个的线程。

在这里插入图片描述

  • 为什么引入线程?

    在这里插入图片描述

    • 提高OS的并发性
    • 创建进程的成本比较高,可以减少资源分配
  • 线程的属性

    • 轻型实体
    • 独立调度和分配的基本单位
    • 可并发执行
    • 共享进程资源

    在这里插入图片描述

注意:线程的资源由进程来管理,硬件资源的所有权属于线程,由进程进行分配

进程与线程

  • 进程与线程的比较
    • 调度,线程是调度的最小单位
    • 拥有资源,进程拥有资源,线程并不拥有资源,需要向进程去申请,只拥有使用权
    • 并发性
    • 地址空间和其他资源
    • 通信
  • 重点:线程相对于进程,大大降低了创建、撤销和切换可执行实体的成本和难度。

线程的实现方式

在这里插入图片描述

2. 进程是怎么运行的?

2.1 进程的状态

进程简单来说是程序的一次执行。在这个执行过程中,有时进程正在被CPU处理,有时又需要等待CPU服务,可见,进程的状态是会有各种变化的。为了方便对各个进程的管理,操作系统需要将进程合理地划分为集中状态。

  • 三种基本状态
    • 就绪(Ready):占有CPU,并在CPU上运行
    • 执行(Running):已经具备运行条件,但由于没有空闲CPU,而暂时不运行
    • 阻塞(Blocked):因等待某一事件而暂时不能运行

在这里插入图片描述

  • 创建态和结束态

    在这里插入图片描述

    • 创建态:进程正在被创建,操作系统为进程分配资源,初始化PCB

    在这里插入图片描述

    • 结束态:进程正在从系统中撤销,操作系统会回收进程拥有的资源、撤销PCB

    在这里插入图片描述

  • 咱们从一个进程的从无到有看起,来了解进程5种状态之间的转换

    在这里插入图片描述

2.2 进程控制

  • 进程控制:即OS对进程实现有效的管理,包括创建新进程、撤销已有进程、挂起、阻塞和唤醒、进程切换等多种操作。OS通过==原语(Primitive)==操作实现进程控制。

原语

  • 原语的概念:由若干条指令组成,完成特定的功能,是一种原子操作(Action Operation)

  • 原语的特点:

    • 原子操作,要么全做,要么全部做,执行过程不会中断
    • 在管态/系统态/内核态下执行,常驻内存
    • 是内核三大支撑功能(中断处理/时钟管理/原语操作)之一
  • 创建原语:create

  • 阻塞原语:block

  • 唤醒原语:wakeup

  • 撤销原语:destroy

    在这里插入图片描述

进程挂起

在这里插入图片描述

放外存:是由磁盘额外分出来的一块空间,专门与进程进行交换数据、交换作业

挂起:在这里插入图片描述

注意:挂起、激活都只是一个操作,不是状态。

2.3 进程调度

2.3.1 调度的概念

进程调度,也叫处理机调度。是根据一定的算法和原则将处理机资源进行重新分配的过程。

  • 前提:作业/进程 数远远大于处理机数
  • 目的:提高资源利用率,减少处理机空闲时间
  • 调度程序:一方面要满足特定系统用户的需求(快速响应),另一方面要考虑系统整体效率(系统平均周转时间)和调度算法本身的开销。

处理机调度:调度的层次

  • 高级调度/作业调度
    • 把后备作业调入内存
    • 只调入一次,调出一次
  • 中级调度/内存调度
    • 将进程调至外存,条件合适再调入内存
    • 在内、外存对换区进行进程对换
  • 低级调度/进程调度
    • 从就绪队列选取分配给处理机
    • 最基本的调度,频率非常高(相当于一个时间片完成)

在这里插入图片描述

三级调度的关系

2.3.2 进程调度的方式

处理机调度:调度方式

  • 剥夺式/抢占式调度
    • 立即暂停当前进程
    • 分配处理机给另一个进程
    • 原则:优先权/短进程优先/时间片原则
  • 非剥夺/非抢占式调度
    • 若有进程请求执行
    • 等待直到当前进程完成或阻塞
    • 缺点:适用于批处理系统,不适用于分时/实时系统

衡量进程调度的性能指标

  • CPU利用率|忙碌时间/总时间
  • 系统吞吐量|完成作业数/总时间
  • 周转时间|作业完成时间-提交时间(减)
    • 带权周转时间:周转时间/实际运行时间
  • 等待时间|作业等待处理机调度时间
    • 关注平均值
  • 响应时间|提交请求到首次响应间隔
2.3.3 调度的时机、切换与过程

处理机调度:调度时机

  • 进程运行完毕
  • 进程时间片用完
  • 进程要求I/O操作
  • 执行某种原语操作
  • 高优先级进程申请运行(剥夺式调度)

进程切换的细节

处理机从一个正在运行的进程上切换到另一个进程去执行。

切换过程:

  1. 检查是否允许上下文切换,有可能某进程处于原语操作中,不允许切换
  2. 保存当前进程的上下文,包括程序计数器和寄存器
  3. 更新PCB信息
  4. 把此进程的PCB移入队列,比如就绪队列,或因某种事件的阻塞队列
  5. 选择另一个(就绪状态)进程执行,并更新其PCB
  6. 更新内存管理的数据结构
  7. 恢复所选进程的上下文,将CPU执行权交给所选进程

处理机调度:调度过程

  1. 保存镜像:记录进程现场信息
  2. 调度算法:确定分配处理机的原则
  3. 进程切换:分配处理机给其他进程
  4. 处理及回收:从进程收回处理机
2.3.4 典型的调度算法(重点)

在这里插入图片描述

其中时间片轮转调度多级反馈队列调度面试的时候会经常问到。

先来先服务(FCFS,First Come First Served)

在这里插入图片描述

  • 算法内容:调度 作业/就绪队列 中最先入队者,等待操作完成或阻塞
  • 算法原则:按作业/进程到达顺序服务(执行)
  • 调度方式:非抢占式调度
  • 适用场景:作业/进程调度
  • 优缺点:
    • 有利于CPU繁忙型作业,充分利用CPU资源
    • 不利于I/O繁忙型作业,操作耗时,其他饥饿
短作业优先(SJF,Shortest Job First)

在这里插入图片描述

  • 算法内容:所需服务时间最短的作业/进程优先服务(执行)
  • 算法原则:追求最少的平均(带权)周转时间
  • 调度方式:SJF/SPF非抢占式
  • 适用场景:作业/进程调度
  • 优缺点:
    • 平均等待/周转时间最少
    • 长作业周转时间会增加或饥饿
    • 估计时间不准确,不能保证紧迫任务及时处理
高响应比优先调度(HRRN,Highest Response Ratio Next)

在这里插入图片描述

  • 算法内容:结合FCFS和SJF,综合考虑等待时间和服务时间计算响应比,高的优先调度
  • 算法原则:综合考虑作业/进程的等待时间和服务时间
  • 调度方式:非抢占式
  • 适用场景:作业/进程调度、
  • 响应比计算:
    • 响应比 = (等待时间) / 服务时间,大于等于1
    • 只有当前进程放弃执行权(完成/阻塞)时,重新计算所有进程响应比
    • 长作业等待越久响应比越高,更容易获得处理机
优先级调度(PSA,Priority-Scheduling Algorithm)

在这里插入图片描述

  • 算法内容:又叫优先权调度,按作业/进程的优先级(紧迫程度)进行调度
  • 算法原则:优先级最高(最紧迫)的作业/进程先调度
  • 调度方式:抢占/非抢占式(并不能获得及时执行)
  • 适用场景:作业/进程调度
  • 优先级设置原则:
    • 静态/动态优先级
    • 系统 > 用户;交互型 > 非交互型;I/O型 > 计算型
    • 低优先级进程可能会产生“饥饿”
时间片轮转调度(RR,Round-Robin)

在这里插入图片描述

  • 算法内容:按进程到达就绪队列的顺序,轮流分配一个时间片去执行,时间用完则剥夺
  • 算法原则:公平、轮流为每个进程服务,进程在一定时间内都能得到响应
  • 调度方式:抢占式,由时钟中断确定时间什么时候到
  • 适用场景:进程调度
  • 优缺点:
    • 公平、响应快,适用于分时系统
    • 时间片决定因素:系统响应时间、就绪队列进程数量、系统处理能力
    • 时间片太大,相当于FCFS;太小,处理机切换频繁,开销增大

进程越多,每一个进程所分到的时间片越短。

多级反馈队列调度(MFQ,Multileveled Feedback Queue)

在这里插入图片描述

  • 算法内容:

    设置多个按优先级排序的就绪队列(有多少个优先级就有多少个队列),优先级从高到低,时间片从小到大

    新进程采用队列降级法

    • 进入第一级队列,按FCFS分时间片
    • 没有执行完,移到第二级,第三级。。。

    前面队列不为空,不执行后续队列进程

  • 算法原则:集前几种算法优点,相当于 PSA+RR

  • 调度方式:抢占式

  • 适用场景:进程调度

  • 优缺点:

    • 对各类型相对公平;快速响应
    • 终端型作业用户:短作业优先
    • 批处理作业用户:周转时间短
    • 长批处理作业用户:在前几个队列部分执行

3. 进程之间是怎么协作的?

进程通信

思维导图:

在这里插入图片描述

  • 概念:进程通信即进程间的信息交换
    • 进程是资源分配的基本单位各进程内存空间彼此独立
    • 为了保证安全,一个进程不能随意访问其他进程的地址空间
  • 特点:
    • 共享存储(Shared-Memory)
    • 消息传递(Message-Passing)
    • 管道通信(Pipe)
  1. 共享存储

    在这里插入图片描述

    • 基于共享数据结构的通信方式
      • 多个进程共用某个数据结构(OS提供并控制)
      • 由用户(程序员)负责同步处理
      • 低级通信:可以传递少量数据,效率低
    • 基于共享存储区的通信方式
      • 多个进程共用内存中的一块存储区域
      • 由进程控制数据的形式和方式
      • 高级通信:可以传递大量数据,效率高
  2. 消息传递

    在这里插入图片描述

    • 直接通信:点到点发送
      • 发送和接收时指明双方进程的ID
      • 每个进程维护一个消息缓冲队列
    • 间接通信:广播信箱
      • 以信箱为媒介,作为中间实体
      • 发进程将消息发送到信箱,收进程从信箱读取
      • 可以广播,容易建立双向通信链
      • 这里广播是指:对某一个区域内的所有进程发消息
  3. 管道通信

    在这里插入图片描述

    • 管道
      • 用于连接读/写进程的共享文件,pipe文件
      • 本质是内存中固定大小的缓冲区
    • 半双工通信
      • 同一时段只能单向通信,双工通信需要两个管道
      • 以先进先出(FIFO)方式组织数据传输
      • 通过调用read()/write()函数进行读写操作
    • 注意管道在进行读写操作时需要进程的互斥、同步机制
  • 每个进程维护一个消息缓冲队列
    • 间接通信:广播信箱
      • 以信箱为媒介,作为中间实体
      • 发进程将消息发送到信箱,收进程从信箱读取
      • 可以广播,容易建立双向通信链
      • 这里广播是指:对某一个区域内的所有进程发消息
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.基本系统进程   Csrss.exe:这是子系统服务器进程,负责控制Windows创建或删除线程以及16位的虚拟DOS环境。   System Idle Process:这个进程是作为单线程运行在每个处理器上,并在系统不处理其它线程的时候分派处理器的时间。   Smss.exe:这是一个会话管理子系统,负责启动用户会话。   Services.exe:系统服务的管理工具。   Lsass.exe:本地的安全授权服务。   Explorer.exe:资源管理器。   Spoolsv.exe:管理缓冲区中的打印和传真作业。   Svchost.exe:这个进程要着重说明一下,有不少朋友都有这种错觉:若是在“任务管理器”中看到多个Svchost.exe在运行,就觉得是有病毒了。其实并不一定,系统启动的时候,Svchost.exe将检查注册表中的位置来创建需要加载的服务列表,如果多个Svchost.exe同时运行,则表明当前有多组服务处于活动状态;多个DLL文件正在调用它。   至于其它一些附加进程,大多为系统服务,是可以酌情结束运行的。由于其数量众多,我们在此也不便于一一列举。   在系统资源紧张的情况下,我们可以选择结束一些附加进程,以增加资源,起到优化系统的作用。在排除基本系统及附加进程后,新增的陌生进程就值得被大家怀疑了。 更多内容请看Windows操作系统安装、系统优化大全、系统安全设置专题,或进入讨论组讨论。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值