IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 计算机基础知识体系 | 操作系统 | 进程管理 -> 正文阅读

[系统运维]计算机基础知识体系 | 操作系统 | 进程管理

知识框架


进程的基本概念

  • 进程实体的概念

    进程实体又称为进程映像,进程实体由PCB、程序段、数据段组成

    进程的管理者(操作系统)所需的数据都存放在PCB中,程序本身的运行所需的数据存放在程序段和数据段中

    • 进程控制块(PCB) :记录用于描述进程情况及控制进程运行所需要的全部信息
    • 程序段:存放要执行的代码
    • 数据段:存放程序运行过程中处理的各种数据
  • 进程的概念:进程是进程实体的运行过程,是操作系统进行资源分配和调度的一个独立单位

  • 进程的组织方式:链接方式(队列)、索引方式(表)

  • 进程的特征

    • 动态性:进程是程序的一次执行过程,是动态地产生、变化和消亡的
    • 并发性:内存中有多个进程实体,各进程可并发执行
    • 独立性:进程是能独立运行、独立获得资源、独立接受调度的基本单位
    • 异步性:各进程按各自独立的、不可预知的速度向前推进,操作系统要提供进程同步机制来解决异步问题
    • 结构性:每个进程都会配置一个PCB。结构上看,进程由程序段、数据段、PCB组成

进程控制与通信

  • 进程的七种状态

    • 运行:运行所需资源√,CPU√。占有CPU,并在CPU上运行

    • 就绪:运行所需资源√,CPU×。具备运行条件,但CPU被占用,暂时不能运行

    • 阻塞:运行所需资源×,CPU×。因等待某一事件而暂时不能运行

    • 创建:操作系统为新进程分配资源,创建PCB

    • 终止:操作系统回收进程的资源,撤销PCB

    • 就绪挂起:运行所需资源√。进程映像调入外存等待

    • 阻塞挂起:运行所需资源×。进程映像调入外存等待

  • 进程控制

    用原语实现进程控制,即实现进程状态之间的转换

    • 原语的类型:创建原语、撤销原语、阻塞原语、唤醒原语、切换原语
    • 原语的作用
      • 更新PCB中的信息:修改进程状态标志、将运行环境保存到PCB、从PCB恢复运行环境
      • 将PCB插入合适的队列
      • 分配/回收资源
  • 进程通信

    进程通信即进程间的信息交换

    • 共享存储:基于数据结构、基于存储区

    • 管道通信

    • 消息传递:直接通信方式、间接通信方式

进程调度

  • 处理机调度

    • 高级调度(作业调度)

      按照某种规则,从外存的后备队列中选择合适的作业将其调入内存,并为其创建进程

    • 中级调度(内存调度)

      按照某种规则,从外存的挂起队列中选择合适的进程将其数据调回内存

    • 低级调度(进程调度)

      按照某种规则,从内存的就绪队列中选择一个进程为其分配处理机

  • 进程调度

    • 需要进行进程调度与切换的情况

      • 当前运行的进程主动放弃处理机:正常终止、内中断

      • 当前运行的进程被动放弃处理机:外中断

    • 不能进行进程调度与切换的情况

      • 处理中断的过程中

      • 进程在操作系统内核程序临界区中(在普通临界区中是可以进行调度和切换的)

      • 在原子操作过程中(原语)

    • 进程调度的方式

      • 非剥夺调度方式,又称非抢占方式
      • 剥夺调度方式,又称抢占方式
    • 进程切换的过程

      • 对原来运行进程各种数据的保存

      • 对新的进程各种数据的恢复

  • 调度算法

    • 调度算法的评价指标
      • CPU利用率:忙碌时间/总时间
      • 系统吞吐量:完成作业量/总时间
      • 周转时间
        • 周转时间:作业完成时间 - 作业提交时间
        • 平均周转时间:各作业周转时间之和/作业数
        • 带权周转时间:作业周转时间/作业实际运行时间
        • 平均带权周转时间:各作业带权周转时间之和/作业数
      • 等待时间:进程或作业等待被服务的时间之和
      • 响应时间:从用户提交请求到首次产生响应所用的时间
    • 七种调度算法
      • 先来先服务(FCFS)
      • 短作业优先(SJF)
      • 最短剩余时间优先(SRTF)
      • 高响应比优先(HRRN)
      • 时间片轮转
      • 优先级调度
      • 多级反馈队列

进程同步与互斥

  • 进程同步

    有的进程之间需要相互配合地完成工作,各进程的工作推进需要遵循一定的先后顺序。并发性带来了异步性,有时需要通过进程同步解决这种异步问题。

  • 进程互斥

    临界资源是指一个时间段内只能提供给一个进程访问的资源。对临界资源的访问,需要互斥的进行。即同一时间段内只能允许一个进程访问该资源

    • 四个部分
      • 进入区:检查是否可进入临界区,若可进入,需要“上锁”(进厕所关门)
      • 临界区:访问临界资源的那段代码(拉粑粑)
      • 退出区:负责“解锁"(出厕所开门)
      • 剩余区:其余代码部分(洗手)
    • 遵循的原则
      • 空闲让进:临界区空闲时,应允许一个进程访问
      • 忙则等待:临界区正在被访问时,其他试图访问的进程需要等待
      • 有限等待:要在有限时间内进入临界区,保证不会饥饿
      • 让权等待:进不了临界区的进程,要释放处理机,防止忙等

线程的基本概念

细节理解


程序、进程、进程实体

  • 程序与进程实体

    程序存放在外存中,当程序运行时会被载入内存。此时程序在内存中被划分为程序段和数据段,同时操作系统还会构建一个PCB来记录信息。

    进程实体就是由PCB、程序段、数据段三部分组成,因此可以说:运行的程序在内存中的状态即为进程实体。

  • 进程与进程实体

    进程是进程实体的运行过程,进程是动态的,而程序和进程实体都是静态的。

    严格意义上讲,进程实体和进程是两个概念。但是在一般情况下,我们把进程实体就称为进程。

进程控制块(PCB)

  • PCB存储的信息

    • 进程描述信息:进程标识符ID、用户标识符ID
    • 进程控制和管理信息:进程状态和优先级
    • 资源分配清单:程序段指针、数据段指针、其他资源
    • 处理机相关信息:各种寄存器的值
  • 创建进程,实际上就是创建进程实体中的PCB

    撤销进程,实际上就是撤销进程实体中的PCB

    PCB是进程存在的唯一标志。

进程的七种状态

  • 五状态模型

    • 无 ->创建态:首先要创建一个新进程,操作系统为新进程分配资源,创建PCB,在这个过程中,进程处于创建态。

    • 创建态 -> 就绪态:进程创建完成后,进入就绪队列,处于就绪态。

    • 就绪态 -> 运行态:如果此时CPU空闲,进程被调度,进入运行队列,处于运行态。

    • 运行态 -> 就绪态:当进程时间片已到,或CPU被其他优先级更高的进程抢占,进程又会重新回到就绪态。

    • 运行态 -> 阻塞态:当进程用系统调用的方式申请系统资源,或请求等待某个事件的发生,则进程处于阻塞态。

    • 阻塞态 -> 就绪态:如果申请的资源被分配,或等待的事件发生,进程会重新转为就绪态。

    • 运行态 -> 终止态:如果进程运行结束,或运行过程中遇到不可修复的错误(如数组越界或整数除零),进程就会被撤销,处于终止态

      注:任何状态下的进程都可以转为终止态,因为可以人工干预直接终止(任务管理器-终止任务)

在这里插入图片描述

  • 七状态模型

    引入了虚拟存储技术之后,可将暂时不能运行的进程调至外存等待。等它重新具备了运行条件且内存又稍有空闲时,再重新调入内存。这么做的目的是为了提高内存利用率和系统吞吐量。

    暂时调到外存等待的进程状态为挂起状态。值得注意的是,PCB并不会一起调到外存,而是会常驻内存。PCB中会记录进程数据在外存中的存放位置,进程状态等信息,操作系统通过内存中的PCB来保持对各个进程的监控、管理。被挂起的进程PCB会被放到的挂起队列中。

    中级调度(内存调度),就是要决定将哪个处于挂起状态的进程重新调入内存。

    • 就绪态 <-> 就绪挂起态:处于就绪队列中的进程调至外存等待,就会处于就绪挂起态。如果调回内存,就重新回到就绪态

    • 阻塞态 <-> 阻塞挂起态:处于阻塞队列中的进程调至外存等待,就会处于阻塞挂起态。如果调回内存,就重新回到阻塞态

    • 阻塞挂起态 -> 就绪挂起态:如果进程所等待的事件出现,此时就会从阻塞挂起态转为就绪挂起态

    • 创建态 -> 就绪挂起态:一个新进程创建完毕后,如果出现内存空间不足的情况,会直接挂到外存等待

    • 运行态 -> 就绪挂起态:一个进程下处理机后,可能会被直接挂起

在这里插入图片描述

  • 进程状态之间的转换要求一气呵成,不可中断,因此使用原语来进行控制。

  • 原语的类型

    • 创建原语:无 -> 创建态 -> 就绪态
    • 撤销原语:各种状态 -> 终止态 -> 无
    • 阻塞原语:运行态 -> 阻塞态
    • 唤醒原语:阻塞态 -> 就绪态
    • 切换原语:运行态 -> 阻塞态/就绪态;就绪态 -> 运行态

    阻塞原语和唤醒原语必须成对出现

进程通信

各进程的内存地址空间相互独立,一个进程不能直接访问其他进程的内存地址空间。
但是进程之间是有信息交换的需求的。为了保证进程间的安全通信,就需要操作系统介入进行协调。

比如从相册中直接分享图片给QQ好友,相册进程与QQ进程之间就必须有信息交换

  • 共享存储

    内存中设置一块共享空间,两个进程对共享空间的访问必须是互斥的。操作系统只负责提供共享空间和同步互斥工具(如P、V操作)

    • 基于数据结构的共享:

      共享空间被限制为一个特定的数据结构。这种共享方式速度慢、限制多,是一种低级通信方式

    • 基于存储区的共享:

      在内存中画出一块共享存储区,数据的形式、存放位置都由进程控制,而不是操作系统。相比之下,这种共享方式速度更快,是一种高级通信方式。

  • 管道通信

    管道是指用于连接读写进程的一个共享文件,又名pipe文件。其实就是在内存中开辟一个大小固定的缓冲区。

    管道只能采用半双工通信,某一时间段内只能实现单向的传输。如果要实现双向同时通信,则需要设置两个管道。

    对讲机就是一种半双工通信。当A讲的时候,B只能听;当B讲的时候,A只能听。

    数据以字符流的形式写入管道,当管道写满时,写进程的write()系统调用将被阻塞,等待读进程将数据取走。当读进程将数据全部取走后,管道变空,此时读进程的read()系统调用将被阻塞。

    如果没写满,就不允许读。如果没读空,就不允许写。

    数据一旦被读出,就从管道中被抛弃,这就意味着读进程最多只能有一个,否则可能会有读错数据的情况。

  • 消息通信

    进程间的数据交换以格式化的消息(Message)为单位。消息包括消息头和消息体。

    进程通过操作系统提供的发送消息和接收消息两个原语进行数据交换。

    • 直接通信方式:消息直接挂到对方消息缓冲队列上
    • 间接通信方式:消息先发送到中间实体(信箱)

调度

  • 调度的基本概念

    当有一堆任务要处理,但由于资源有限,这些事情没法同时处理。这就需要确定某种规则来决定处理这些任务的顺序,这就是“调度”研究的问题。

  • 调度的三个层次

    • 高级调度

      作业:一系列进程的集合

      由于内存空间有限,有时无法将用户提交的作业全部放入内存,因此就需要确定某种规则来决定将作业调入内存的顺序。

      高级调度(作业调度):按一定的原则从外存上处于后备队列的作业中挑选一个(或多个)作业,给他们分配内存等必要资源,并建立相应的进程(建立PCB),以使它(们)获得竞争处理机的权利。

      高级调度是辅存(外存)与内存之间的调度。每个作业只调入一次,调出一次。作业调入时会建立相应的PCB,作业调出时才撤销PCB。高级调度主要是指调入的问题,因为只有调入的时机需要操作系统来确定,但调出的时机必然是作业运行结束才调出。

    • 中级调度

      引入了虚拟存储技术之后,可将暂时不能运行的进程调至外存等待。等它重新具备了运行条件且内存又稍有空闲时,再重新调入内存。这么做的目的是为了提高内存利用率和系统吞吐量。

      暂时调到外存等待的进程状态为挂起状态。值得注意的是,PCB并不会一起调到外存,而是会常驻内存。PCB中会记录进程数据在外存中的存放位置,进程状态等信息,操作系统通过内存中的PCB来保持对各个进程的监控、管理。被挂起的进程PCB会被放到的挂起队列中。中级调度(内存调度),就是要决定将哪个处于挂起状态的进程重新调入内存。

      一个进程可能会被多次调出、调入内存,因此中级调度发生的频率要比高级调度更高。

    • 低级调度

      低级调度(进程调度),其主要任务是按照某种方法和策略从就绪队列中选取一个进程,将处理机分配给它。

      进程调度是操作系统中最基本的一种调度,在一般的操作系统中都必须配置进程调度。

      进程调度的频率很高,一般几十毫秒一次。

  • 进程调度

    • 狭义的进程调度

      从就绪队列中选中一个要运行的进程。(这个进程可以是刚刚被暂停执行的进程,也可能是另一个进程,后一种情况就需要进程切换)

      进程切换:一个进程让出处理机,由另一个进程占用处理机的过程。

    • 广义的进程调度:包含了选择一个进程和进程切换两个步骤。

  • 进程调度的方式

    • 非剥夺调度方式,又称非抢占方式

      只允许进程主动放弃处理机。在运行过程中即便有更紧迫的任务到达,当前进程依然会继续使用处理机,直到该进程终或主动要求进入阻塞态。

      实现简单,系统开销小。但是无法及时处理紧急任务,适合于早期的批处理系统

    • 剥夺调度方式,又称抢占方式。

      当一个进程正在处理机上执行时,如果有一个更重要或更紧迫的进程需要使用处理机,则立即暂停正在执行的进程,将处理机分配给更重要紧迫的那个进程。

      可以优先处理更紧急的进程,也可实现让各进程按时间片轮流执行的功能(通过时钟中断)。适合于分时操作系统、实时操作系统

  • 进程切换:进程切换是有代价的,因此如果过于频繁的进行进程调度、切换,必然会使整个系统的效率降低,使系统大部分时间都花在了进程切换上,而真正用于执行进程的时间减少。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-07 12:29:14  更:2021-08-07 12:30:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:43:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码