操作系统进程的描述与控制知识点

前趋图和程序执行
  1. 前趋图

    1. 定义:
      前趋图是指一个有向无循环图,可记为 DAG,它用于描述进程之间执行的先后顺序
    2. 图形表示:
      ![[Pasted image 20241104074746.png]]
  2. 程序的执行
    程序顺序执行时,系统资源的利用率很低

    1. 程序顺序执行时的特征
      1. 顺序性
      2. 封闭性
      3. 可再现性

    只有在不存在前趋关系的程序之间才有可能并发执行

    1. 程序并发执行时的特征
      1. 间断性
      2. 失去封闭性
      3. 不可再现性
进程的描述

为了能使程序并发执行,并且可以对并发执行的程序加以描述和控制,引入了进程概念

  1. 进程的定义和特征

    1. 进程的定义
      对于进程的定义,从不同的角度可以有不同的定义,其中较典型的定义有:
      1. 进程是程序的一次执行
      2. 进程是一个程序及其数据在处理机上顺序执行时所发生的活动
      3. 进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位
    2. 进程的特征
      1. 动态性:动态性是进程的最基本的特征
      2. 并发性
      3. 独立性
      4. 异步性:进程是按异步方式运行的,即按各自独立的,不可预知的速度向前推进
    3. 进程实体
      通常,进程实体由程序控制块(PCB)、程序段、数据段三部分组成
  2. 进程的状态及转换

    1. 进程有三种基本状态:

      1. 就绪状态:进程已处于准备好运行的状态,已分配到除CPU以外的所有必要资源
      2. 执行状态:进程已获得CPU,其程序正在执行的状态
      3. 阻塞(等待)状态:正在执行的进程由于某事件暂时无法继续执行的状态
        ![[Pasted image 20241104075452.png]]
    2. 引入进程的创建状态和终止状态

      1. 创建状态:
        1. 由进程申请一个空白PCB
        2. 向PCB中填写用于控制和管理进程的信息
        3. 为该进程分配运行时所必须的资源
      2. 终止状态:当一个进程到达了自然结束点,或出现了无法克服的错误
        1. 删除该进程,将其PCB清零
        2. 将空白PCB返回系统
          ![[Pasted image 20241104075614.png]]
  3. 挂起操作和进程状态的转换
    当挂起操作作用于某个进程时,该进程将被挂起,意味着此时该进程处于静止状态。如果进程正在执行,它将暂停执行。若原本处于就绪状态,则该进程此时暂不接受调度与挂起搡作对应的操作是激活操作

    1. 引入挂起原语操作后三个进程状态的转换
      1. 活动就绪→静止就绪
      2. 活动阻塞→静止阻塞
      3. 静止就绪一活动就绪
      4. 静止阻塞一活动阻塞
    2. 引入挂起操作的原因
      1. 终端用户的需要:暂停自己程序的运行
      2. 父进程请求:挂起自己的某个子进程
      3. 负荷调节的需要
      4. 操作系统的需要
    3. 引入挂起操作后五个进程状态的转换
      ![[Pasted image 20241104080739.png]]
  4. 进程控制块(PCB)

    1. 概念:
      PCB 是一记录型数据结构,它作为进程实体的一部分,记录了操作系统所需的、用于描述进程 的当前情况以及管理进程运行的全部信息
    2. PCB的作用
      1. 作为独立运行基本单位的标志
      2. 能实现间断性运行方式
      3. 提供进程管理所需要的信息
      4. 提供进程调度所需要的信息
      5. 实现与其他进程的同步与通信
    3. 进程控制块中的信息
处理机状态进程调度信息进程控制信息
通用寄存器进程状态程序和数据的地址
指令计数器进程优先级进程同步和通信机制
程序状态字进程调度所需的其他信息资源清单
用户栈指针事件链接指针
  1. 进程控制块的组织方式
    1. 线性方式:系统中所有的PCB都组织在一张线性表中,首址存放在内存的专用区域中
    2. 链接方式:把具有相同状态进程的PCB通过PCB中的链接字链接成一个队列
    3. 索引方式:
      根据所有进程状态的不同,建立几张索引表,各索引表的首址存放在内存的一些专用单元中
进程控制

进程控制是进程管理中最基本的功能,主要包括

  1. 创建新进程
  2. 终止已完成的进程
  3. 将因发生异常情况而无法继续运行的进程置于阻塞状态
  4. 负责进程运行中的状态转换

等功能

进程的创建
  1. 引起创建进程的事件
    1. 用户登录
    2. 作业调度
    3. 提供服务
    4. 应用请求
  2. 进程的创建
    1. 申请空白PCB,从PCB集合中索取一个空白PCB
    2. 为新进程分配其运行所需的资源,包括物理和逻辑资源
    3. 初始化进程控制块PCB
      1. 初始化标识信息
      2. 初始化处理机状态信息
      3. 初始化处理机控制信息
    4. 如果进程就绪队列能够接纳新进程,将新进程插入就绪队列
进程的终止
  1. 引起进程终止的事件
    1. 正常结束
    2. 异常结束
    3. 外界干预
  2. 进程的终止过程
    1. 根据被终止进程的标识符PID,检索出该进程的PCB,读出该进程的状态
    2. 立即终止该进程的执行
    3. 将其所有子孙进程终止
    4. 将该进程所拥有的全部资源归还给其父进程或系统
    5. 将PCB从所在队列中移出
进程的阻塞与唤醒
  1. 引起进程阻塞和唤醒的事件
    1. 向系统请求共享资源失败
    2. 等待某种操作完成
    3. 新数据尚未到达
    4. 等待新任务到达
进程同步
  1. 进程同步的基本概念
    1. 进程同步机制的主要任务
      对多个相关进程在执行次序上进行协调,使并发执行的诸进程之间能按照一定的规则(或时 序)共享系统资源,并能很好地相互合作,从而使程序的执行具有可再现性
    2. 两种形式的制约关系
      1. 间接相互制约关系:由于临界资源,必须保证多个进程对之只能互斥地访问
      2. 直接相互制约关系:源于进程之间的相互合作
    3. 临界资源
      一次仅允许一个进程使用的资源称为临界资源
    4. 临界区
      将在每个进程中访问临界资源的那段代码称为临界区
    5. 同步机制应遵循的规则
      1. 空闲让进:临界资源处于空闲状态,允许一个进程立即进入临界区
      2. 忙则等待:临界资源正在被访问,其他试图进入的进程必须等待
      3. 有限等待:保证访问临界资源的进程在有限时间内能进入自己的临界区
      4. 让权等待:进程不能进入临界区时,立即释放处理机
  2. 硬件同步机制
    1. 关中断
    2. 利用 Test-and-Set 指令实现互斥
    3. 利用 Swap 指令实现进程互斥
  3. 管程机制
    1. 定义
      一个管程定义了一个数据结构和能为并发进程所执行(在该数据结构上)的一组操作,这组操作能同步进程和改变管程中的数据
    2. 组成
      1. 管程的名称
      2. 局部于管程的共享数据结构说明
      3. 对该数据结构进行操作的一组过程
      4. 对局部于管程的共享数据设置初始值的语句
进程通信
  1. 进程通信的概念
    1. 进程通信的定义
      进程通信是指进程之间的信息交换
    2. 进程通信的分类
      进程通信可分为高级进程通信和低级进程通信两种
  2. 高级进程通信的类型
    1. 共享存储器系统
      1. 基于共享数据结构的通信方式
      2. 基于共享存储区的通信方式
    2. 管道通信系统
    3. 消息传递系统
      1. 直接通信方式
      2. 问接通信方式
    4. 客户机-服务器系统
线程的基本概念

线程——比进程更小的基本单位,用来提高程序并发执行的程度,进一步改善系统的服务质量

  1. 线程的引入

    1. 进程的两个基本属性
      1. 进程是一个可拥有资源的独立单位
      2. 进程同时又是一个可独立调度和分派的基本单位
    2. 线程引入原因
      1. 减少程序并发执行所需付出的时空开销,使操作系统具有更好的并发性
  2. 线程与进程的比较

    1. 调度的基本单位
      1. 在传统的OS中,进程是作为独立调度和分派的基本单位,因而进程是能独立运行的基本单位
      2. 而在引入线程的OS中,已把线程作为调度和分派的基本单位,因而线程是能独立运行的基本单位
    2. 并发性
      不同进程之间、在一个进程中的多个线程之间或者不同进程中的线程之间都能并发执行
    3. 拥有资源
      1. 进程是系统中拥有资源的一个基本单位
      2. 线程本身并不拥有系统资源,而是仅有一点必不可少的、能保证独立运行的资源
      3. 多个线程共享该进程所拥有的资源,还可以访问进程所拥有的资源
    4. 独立性
      在同一进程中的不同线程之间的独立性要比不同进程之间的独立性低得多
    5. 系统开销
      1. 创建或撤消进程时所付出的开销明显大于线程创建或撤消时所付出的开销
      2. 线程的切换代价也远低于进程的切换代价
  3. 线程的状态和线程控制块

    1. 线程运行的三个状态
      1. 执行状态
      2. 就绪状态
      3. 阻塞状态
    2. 线程控制块TCB

    线程控制块通常有这样几项信息

    1. 线程标识符
    2. 一组寄存器
    3. 线程运行状态
    4. 优先级
    5. 线程专有存储区
    6. 信号屏蔽
    7. 堆栈指针

    在多线程OS中,线程作为独立运行(或称调度)的基本单位;而进程仍是资源分配的基本单位

线程的实现方式
  1. 内核支持线程KST
  2. 用户级线程ULT
  3. 组合方式

组合方式下包括三种不同的模型
![[Pasted image 20241104082536.png]]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/463663.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

移远通信推出八款天线新品,覆盖5G、4G、Wi-Fi和LoRa领域

近日,全球领先的物联网整体解决方案供应商移远通信宣布,再次推出八款高性能天线新品,进一步丰富其天线产品阵容,更好地满足全球客户对高品质天线的更多需求。具体包括5G超宽带天线YECT005W1A和YECT004W1A、5G天线YECT028W1A、4G天…

k8s简单的指令以及图解

k8s简单的操作指令 1.kubectl get pods 查看全部的pods 也就是k8s中的最小颗粒度 2.kubectl describe podsname 查看pod的详情 3.kubectl get pods -n podsname 查看pod服务是否正常 4.kubectl logs -f 容器name --tail1000 -n podname 查看pod 的日志 5.kubectl get service …

Python复习1:

一、数据类型 1.数字:int、float、bool 2.字符串:string 3.列表:list 4.集合:set 5.字典:dictionary 二、Test 1.print输出固定格式 num110 str1"hello world" #输出的固定格式 print("num1%d&…

UVM验证该去大公司还是中型公司呢?

无论是UVM验证还是系统C验证亦或是其它,大公司的普遍特点是做过多层封装、已经准备好轮子、各式各样的工具库。如果一毕业就进大公司,那你会在UVM等基础之上再学习公司封装的那部分工具、脚本或者是库,一旦掌握以后你接下来将会脱离一些初级的…

法律文件智能识别:免费OCR平台优化数字化管理

一、系统概述 在法律行业,纸质文件的数字化需求日益迫切,合同、判决书、协议等文件的管理成为法律部门的一大难题。传统手动输入不仅耗时,且易出错。思通数科的OCR识别平台应运而生,以其开源、免费的特性为法律文档管理提供了智能…

koa + sequelize做距离计算(MySql篇)

1.核心思路 1.利用sequelize的fn方法调用MySql原生函数(st_distance_sphere、point) 2.这里利用到了MySql的原生函数,不懂可以去看看mysql的函数知识 2.核心代码 //st_distance_sphere、point函数用来计算当前经纬度和目的地经纬度 //col…

小程序分包看完这一篇秒懂

前言 在小程序开发中,分包是一种优化加载时间和用户体验的方法。通过将小程序拆分成多个包,可以按需加载,从而减少首次加载时间。很多刚涉及小程序开发的小伙伴对小程序分包都相对茫然或者头疼。也不知道该合适进行分包,怎么进行…

第02章 MySQL环境搭建

一、MySQL的卸载 如果安装mysql时出现问题,则需要将mysql卸载干净再重新安装。如果卸载不干净,仍然会报错安装不成功。 步骤1:停止MySQL服务 在卸载之前,先停止MySQL8.0的服务。按键盘上的“Ctrl Alt Delete”组合键&#xff0…

1.探索WebSocket:实时网络的心跳!

序言 你可能听说过"WebSokcet"这个词,感觉它好像很高深,但其实它是一个超级酷的小工具,让我们在Web应用里实现实时通信。想象一下,你可以像聊天一样,在浏览器和服务器之间来回“畅聊“,没有延迟…

Qt6 CMake 中引入 Qt Linguist 翻译功能

qt cmake 使用自带翻译工具配置步骤 创建Qt CMake 程序大体流程配置项目 CMake 及 代码使用流程最终CMake 如下最终工程链接为:参考 创建Qt CMake 程序 大体流程 配置项目 CMake 及 代码 在CMake 中添加如下代码, 导入相关的翻译库 find_package(QT NAMES Qt6 Qt…

【Linux】——如何安装g++

g的安装 sudo yum install -y gcc-c

FET113i-S核心板已支持RISC-V,打造国产化降本的更优解 -飞凌嵌入式

FET113i-S核心板是飞凌嵌入式基于全志T113-i处理器设计的国产工业级核心板,凭借卓越的稳定性和超高性价比,FET113i-S核心板得到了客户朋友们的广泛关注。作为一款拥有A7核RISC-V核DSP核的多核异构架构芯片,全志科技于近期释放了T113-i的RISC-…

基于python的机器学习(二)—— 使用Scikit-learn库

目录 一、样本及样本划分 1.1 划分样本的方法 1.1.1 train_test_split()函数 1.1.2 时间序列划分 1.1.3 交叉验证 二、导入或创建数据集 2.1 导入Sklearn自带的样本数据集 2.2 利用Sklearn生成随机的数据集 2.3 读入自己创建的数据集 2.3.1 用Python直接读取文本文件…

【LQB15_模拟】C风险对冲

Description 小蓝所在的蓝星集团即将建立执行一个重要的项目,在建立项目的时候需要考虑执行这个项目对集团的风险。他们组有三个备选方案,方案A的风险评估值为a,方案B的风险评估值为b,方案C的风险评估值为c。方案风险评估值越低&…

第二十八章 Vue之自定义指令

目录 一、引言 二、自定义指令的注册和使用方式 2.1. 自定义指令-全局注册使用 2.2. 自定义指令-局部注册使用 三、自定义指令完整代码 3.1. 自定义指令全局注册/使用 3.1.1. main.js 3.1.2. App.vue 3.2. 自定义指令局部注册/使用 3.2.1. main.js 3.2.2. App.vue …

银行信贷知识竞赛活动策划方案

为了落实20xx年省分行工作会议精神,进一步加强信贷队伍建设,普及和强化员工对信贷业务知识的掌握和运用,提高信贷从业人员素质,推动全省农行20xx年员工成长计划实施,实现我行全面提升信贷管理水平,促使信贷…

【学术论文投稿】探索嵌入式硬件设计:揭秘智能设备的心脏

【IEEE出版】第六届国际科技创新学术交流大会暨通信、信息系统与软件工程学术会议(CISSE 2024)_艾思科蓝_学术一站式服务平台 更多学术会议论文投稿请看:https://ais.cn/u/nuyAF3 目录 引言 嵌入式系统简介 嵌入式硬件设计的组成部分 设…

谷歌浏览器报“喔唷,崩溃啦!”怎么办?

表现 Chrome浏览器所有页面崩溃,“喔唷,崩溃啦!( STATUS_INVALID_IMAGE_HASH )” 原因 Google 在79版本(2019年12月20号左右)的更新中又重新启用了Renderer Code Integrity Protection(渲染器代码完整性保…

双因子认证(Two-factor authentication)简介

一、核心概念 双因子认证(Two-Factor Authentication,简称2FA)是一种身份验证机制,它要求用户提供两种不同类型的证据来证明自己的身份,通常包括用户所知道的(如密码)、用户所拥有的&#xff0…

vue3项目中实现el-table分批渲染表格

开篇 因最近工作中遇到了无分页情景下页面因大数据量卡顿的问题&#xff0c;在分别考虑并尝试了懒加载、虚拟滚动、分批渲染等各个方法后&#xff0c;最后决定使用分批渲染来解决该问题。 代码实现 表格代码 <el-table :data"currTableData"borderstyle"wi…