进程的描述、控制与通信

news2025/1/16 9:11:30

一、概念

  1. 进程的状态
    • 进程的最基本状态
      • 就绪态
      • 执行态
      • 阻塞态
        请添加图片描述
    • 为保证完整性,再引入两种状态
      • 创建态
      • 终止态
        请添加图片描述
    • 引入挂起操作后,引入的状态
      • 活动就绪
      • 静止就绪
      • 活动阻塞
      • 静止阻塞
        请添加图片描述

挂起:当挂起操作作用于某个进程时,该进程将被挂起,意味着此时该进程处于静止状态。如正在执行的进程会暂停执行;处于就绪状态的进程将暂不接受调度。与挂起对应的操作是激活

  1. 进程管理中的数据结构:系统对每个资源和进程都设置了一个数据结构用于表征其实体,其中包含了资源和进程的各种信息和一批指针。通过这些指针,可以将同类资源和进程的信息表,或同一进程所占用的资源信息表分类链接成不同队列,便于OS查找。OS管理的这些控制表一般可分为如下四类
    • 内存表
    • 设备表
    • 文件表
    • 进程表(即PCB)
      • 作用:
        • 作为独立运行基本单位的标志:系统通过PCB来感知进程,一个程序只有配置了PCB后,才表示其能够开始在多道程序环境下独立运行
        • 实现间断性运行方式:因调度或阻塞而暂停运行时,系统将CPU现场信息保存在该进程的PCB中(这点也可证明第一点,传统意义上的静态程序因为没有这些保护运行现场的手段,故而不能在多道程序环境下正常执行)
        • 提供进程管理所需信息:如程序和数据(在内存或外存的)始址、该进程所需的全部资源信息等
        • 提供进程调度所需信息:如进程优先级、进程等待时间和已执行时间等
      • PCB的组织方式
        • 线性方式:把系统中所有PCB组织在一张线性表中
        • 链接方式
        • 索引方式:根据进程状态的不同建立不同的索引表,如就绪索引表、阻塞索引表,把各索引表在内存中的起始地址记录在内存的一些专用单元中。在每个索引表的表目中,记录具有相应状态的某个PCB在PCB表中的地址

二、进程控制

  1. 进程的创建
    • 引起进程创建的事件
      • 用户登录:分时系统中,用户在终端登录成功后,系统会为该用户创建一个进程并将其插入就绪队列中
      • 作业调度:调度作业时,会将他们装入内存、为其创建进程,并把它们插入就绪队列中
      • 提供服务:如用户进程要求打印文件,系统就为其创建一个打印进程,这样打印进程可与该用户进程并发执行,还便于计算完成打印任务所需花费的时间
      • 应用请求:上述三种都是系统内核为用户创建新进程,应用请求这类事件是用户进程自己创建新进程,以使新进程以同创建进程并发执行的方式完成特定任务。如某用户进程需要不断地先从键盘终端读入数据,再对读入的数据进行相应处理,最后将处理结果以表格的形式显示在屏幕上。该用户进程为使这几个操作能并发执行以加速完成任务,可分别建立键盘输入进程、数据处理进程和表格输出进程
    • 进程创建的步骤:
      • 申请空白PCB
      • 为新进程分配其运行所需的资源:如内存、文件、I/O设备、CPU时间等
      • 初始化PCB
      • 若进程就绪队列能接纳新进程,就将新进程插入就绪队列
  2. 进程的终止
    • 引起进程终止的事件
      • 正常结束
      • 异常结束
        • 越界错:程序所访问的存储区越出该进程所占存储区域的范围
        • 保护错:进程试图去访问一个不允许访问的资源或文件,或写一个只读文件这种
        • 指令错:程序试图执行一条不存在的指令(非法指令),出现该错误的原因可能是程序错误地转移到了数据区,把数据当成了指令
        • 特权指令错:进程试图执行特权指令
        • 运行超时:进程的运行时间超过了设定的最大值
        • 等待超时:进程等待某事件的时间超过了指定的最大值
        • 算术运算错:如整除0
        • I/O错:指在I/O过程中发生了错误
      • 外界干预
        • 操作员或OS干预:如发生系统死锁,则由操作员或OS采取终止某些进程的方式,把系统从死锁状态中解救出来
        • 父进程请求:当子进程完成父进程所要求的任务时,父进程可提出请求以结束该子进程
        • 父进程终止:当父进程终止时,它的所有子孙进程都应当结束
    • 进程的终止过程
      • 根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,并读出其状态
      • 若处于执行状态:则立即终止该进程的执行,并置调度标志为真,以指示该进程被终止后应重新进行调度
      • 若该进程还有子孙进程:则应终止其所有子孙进程,以防止它们成为不可控的进程
      • 将被终止的进程所拥有的全部资源,或归还给其父进程,或归还给系统
      • 将被终止进程的PCB从其所在队列(或链表)中移出,等待其他程序来搜集信息
  3. 进程的阻塞与唤醒
    • 引起进程阻塞与唤醒的事件
      • 向系统请求共享资源失败:如进程请求使用打印机,而系统已将打印机分配给了其他进程,这时该进程就会被阻塞,仅在其他进程释放打印机后,才会被唤醒
      • 等待某种操作的完成:如进程在启动了某I/O设备后,变自动进入阻塞状态等待,I/O操作完成后,再由中断处理程序将该进程唤醒
      • 新数据尚未到达
      • 等待新任务的到达
    • 进程阻塞过程:正在执行的进程,若发生了上述事件,就会自动调用block原语阻塞。进入block阶段后,系统先停止执行该进程,把PCB中的现行状态由执行改为阻塞,并将PCB插入阻塞队列。最后转到调度程序进行重新调度操作,将处理机分配给另一就绪进程并进行切换,即保留被阻塞进程的处理机状态,并按照新进程的PCB中的处理机状态设置CPU的环境
    • 进程唤醒过程:当被阻塞进程所期待的事件发生时,有关进程会调用唤醒原语wakeup以将等待该事件的进程唤醒。调用wakeup后,首先把被阻塞进程从等待该事件的阻塞队列中移出,将其PCB中的现行状态由阻塞态改为就绪,然后将该PCB插入就绪队列中
  4. 进程的挂起与激活
    • 挂起:首先检查被挂起进程的状态,若为活动就绪状态则将其改为静止就绪状态,若为活动阻塞状态则也将其改为静止就绪状态。然后将该进程的PCB复制到某指定的内存区域。最后若被挂起的进程正在执行,则转向调度程序重新调度
    • 激活:先将进程从外存调入内存,然后检查其现行状态。若为静止就绪就改为活动就绪,若为静止阻塞就改为活动阻塞。若采用抢占调度策略,则每当有静止就绪进程被激活而插入就绪队列时,就检查是否要进行重新调度,即调度程序比较被激活进程和当前进程的优先级

三、进程通信

  1. 概念:
    • 低级进程通信:效率低(生产者每次只能向缓冲区中投放一个产品,消费者每次只能从缓冲区中取得一个消息)、通信对用户不透明(进程之间通信所需的共享数据结构设置、数据的传送、互斥与同步等,都必须由程序员实现)。如进程的互斥与同步,由于它们的实现需要在进程间交换少量信息,因此归为低级进程通信
    • 高级进程通信:使用方便,通信过程对用户透明、高校传送大量数据
  2. 进程通信的类型:
    • 共享存储器系统:即相互通信的进程共享某些数据结构或存储区
      • 基于共享数据结构的通信方式
      • 基于共享存储区的通信方式
    • 管道通信系统:连接一个读进程和一个写进程以实现它们之间通信的一个共享文件。管道机制必须提供以下三种能力:
      • 互斥:一个进程正在对管道执行读/写操作时,另一进程必须等待
      • 同步:写进程把一定数量的数据写入管道后,便去睡眠(等待),直到读进程取走数据后,再把它唤醒。当读进程读一空管道时,也应睡眠(等待),直至写进程将数据写入管道后,再把它唤醒
      • 确定对方是否存在:只有确定对方存在,才能通信
    • 消息传递系统:不必借助共享数据结构或存储区,而是以格式化的消息为单位,将通信的数据封装在消息中,并利用OS提供的一组通信命令(原语),在进程间进行消息传递,完成进程间的数据交换
      • 直接通信方式:发送进程利用OS所提供的发送原语,直接把消息发送给目标进程
        • 直接通信原语
        • 消息的格式
        • 进程的同步方式:在完成消息的发送或接收后,都存在阻塞和不阻塞这两种可能性,由此可得到三种情况:
          • 发送进程阻塞,接收进程阻塞:主要用于进程之间紧密同步,发送和接收进程之间无缓冲
          • 发送进程不阻塞,接收进程阻塞:平时发送进程不阻塞,因而可以尽快的把一个或多个消息发送给多个目标;而接收进程平时阻塞,直到发送进程发来消息才被唤醒
          • 发送进程和接收进程均不阻塞:平时发送进程和接收进程都在忙其他事情,仅当发生某事件而使它们无法继续运行时,它们才会把自己阻塞起来进行等待
        • 通信链路:分为单向和双向
      • 间接通信方式(信箱通信):发送进程和接收进程都通过共享中间实体(即信箱,是一种共享数据结构)的方式进行消息的发送与接收。该实体建立在随机存储器(RAM)的共享缓冲区上,用来暂存发送进程发送给目标进程的消息
        • 信箱的结构:信箱头+信箱体
        • 信箱通信原语:系统为信箱通信提供了若干条原语,分别用于如下情况:
          • 信箱的创建和撤销
          • 消息的发送和接收
        • 信箱的类型:有私用信箱、公用信箱、共享信箱
    • 客户-服务器系统(不在大纲)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于LSTM时间序列预测(简单又好用)无脑代码

# 基于LSTM时间序列预测(简单又好用)无脑代码, 这里是列表文本使用很简单,跟着注释和使用手册用就行. 简介: 1、单变量,多变量输入,自由切换 2、单步预测,多步预测,自动…

1.集合框架

一、JDK版本之间的关系 1.1、Oracle JDK与OpenJDK的区别 1.Oracle JDK是基于OpenJDK源代码构建的,因此Oracle JDK和OpenJDK之间没有重大的技术差异。 2.Oracle JDK将更多地关注稳定性,它重视更多的企业级用户,而OpenJDK经常发布以支持其他性能…

电子技术基础(三)__第7章 时序逻辑电路_第6篇__时序逻辑电路的分类

时序逻辑电路的分类, 通常按两种来分类: 按逻辑功能, 按触发器状态的变化规律。 一. 同步、异步的定义 同步时序逻辑电路 是 所有触发器有一个共同的时钟控制信号CP, 在CP脉冲信号的作用下,触发器状态的变化同时发生,…

40G光模块的兼容性与协议标准

40G光模块的兼容性与标准化是确保光通信系统稳定运行的关键因素。在下文中,易天光通信将对40G光模块的兼容性和标准化进行分析和讨论。 一、关于40G光模块的兼容性方面 40G光模块的兼容性主要涉及两个方面:光接口的兼容性和协议的兼容性。 光接口兼容…

零基础如何自学C#?

前言 本文来源于知乎的一个提问,提问的是一个大一软件工程专业的学生,他想要自学C#但是不知道该怎么去学,这让他感到很迷茫,希望有人能给他一些建议和提供一些学习方向。 个人建议 确认目标:自学C#首先你需要大概了解…

“第四十四天”

这道题也不是难,但可能会忽略一种情况,当最大小出现在首位的时候,那个时候如果进行交换的话,大小值可能出现覆盖的情况,最终导致丢失最大值或者最小值,比如最大值 10 在第一位,最小值 0 随意&am…

对电动汽车的高压互锁的理解

什么是高压互锁系统 什么是高压互锁系统?高压互锁系统(HighVoltageInter-lock,简称HVIL),也叫高压互锁回路系统(HazardousVoltageInterlockLoop) 高压互锁的原理 高压互锁是利用低压回路的检测信号来判断高压回路每个高压接插件各自是否连…

文件管理系统的基本认识

1.文件的属性 文件的定义:一组有意义的信息的集合。 1.文件名: 由创建文件的用户决定文件名,主要是为了方便用户找到文件,同一目录下不允许有重名文件。 2.标识符: 一个系统内的各文件标识符唯一,对用户来说毫无可读性, 因此…

C++实现AC自动机,剪枝、双数组压缩字典树!详解双数组前缀树(Double-Array Trie)剪枝字典树(Patricia Trie)

代码在:github.com/becomequantum 最近研究了一下字典树,什么AC自动机,双数组压缩字典树,剪枝字典树都自己写代码实现了一下。这本该是本科学数据结构时该玩明白的东西,我到现在才会玩。本视频主要介绍一下双数组和剪…

Stanford CS224N - word2vec

最近在听Stanford放出来的Stanford CS224N NLP with Deep Learning这门课,弥补一下之前nlp这块基础知识的一些不清楚的地方,顺便巩固一下基础知识😁 关于word2vec: 1.为什么要把单词表示成向量 一开始人们造了一个类似于词典表…

【系统与工具】系统环境——VMware安装系统

文章目录 0.1 安装VMware0.2 下载ubuntu镜像0.3 创建系统实例0.4 安装ubuntu0.5 实例配置项0.5.1 安装VMware tools0.5.2 修改静态IP0.5.3 ssh连接 0.6 克隆0.6.1 克隆实例生成MAC地址 0.6.2 修改静态ip0.6.3 修改主机密码名称 参考:https://blog.csdn.net/m0_51913…

MySQL字段的字符类型该如何选择?千万数据下varchar和char性能竟然相差30%?

MySQL字段的字符类型该如何选择?千万数据下varchar和char性能竟然相差30%? 前言 上篇文章MySQL字段的时间类型该如何选择?千万数据下性能提升10%~30%🚀我们讨论过时间类型的选择 本篇文章来讨论MySQL中字符类型的选择并来深入实践char与varchar类型…

DVWA-JavaScript Attacks

JavaScript Attacks JavaScript Attack即JS攻击&#xff0c;攻击者可以利用JavaScript实施攻击。 Low 等级 核心源码&#xff0c;用的是dom语法这是在前端使用的和后端无关&#xff0c;然后获取属性为phrase的值然后来个rot13和MD5双重加密在复制给token属性。 <script&…

成集云 | 成销云移动商城集成用友NC | 解决方案

方案产品介绍 成销云移动商城系统&#xff0c;支持商品管理、会员管理、营销活动、订单管理等多种模块功能&#xff0c;帮助企业解决时间、库存和服务方面的难题&#xff0c;助力企业实现数字化产业升级。 用友NC是用友NC产品的全新系列&#xff0c;是面向集团企业的世界级高…

09-Vue基础之实现注册页面

个人名片&#xff1a; &#x1f60a;作者简介&#xff1a;一名大二在校生 &#x1f921; 个人主页&#xff1a;坠入暮云间x &#x1f43c;座右铭&#xff1a;懒惰受到的惩罚不仅仅是自己的失败&#xff0c;还有别人的成功。 &#x1f385;**学习目标: 坚持每一次的学习打卡 文章…

企业IT资产设备折旧残值如何计算

环境&#xff1a; 企业/公司 IT资产 问题描述&#xff1a; 企业IT设备折旧残值如何计算&#xff1f; 解决方案&#xff1a; 1.按三年折旧 净值原值-月折旧额折旧月份 &#xff0c; 月折旧额原值(1-3%)/36 折旧月份ROUND(E2*(1-3%)/36,2) 2.净值E2-F2*G2

实测文心一言4.0,真的比GPT-4毫不逊色吗?

10月17日&#xff0c;李彦宏在百度世界2023上表示。当天&#xff0c;李彦宏以《手把手教你做AI原生应用》为主题发表演讲&#xff0c;发布文心大模型4.0版本。 今天&#xff0c;咱们就开门见山啊。这一回要测一测&#xff0c;昨天才发布的文心一言大模型 4.0。 之所以要测它&…

腾讯待办宣布关停,哪款待办事项提醒APP好?

如果你之前一直使用微信中的“腾讯待办”小程序来记录待办事项并设置定时提醒&#xff0c;那么你就会发现腾讯待办在2023年10月16日通过其官方微信公众号、小程序发布了业务关停公告&#xff0c;将于2023年12月20日全面停止运营并下架&#xff0c;并且有导出数据的提示。 腾讯…

Systemverilog断言介绍(四)

3.3 SEQUENCES, PROPERTIES, AND CONCURRENT ASSERTIONS 3.3.1 SEQUENCE SYNTAX AND EXAMPLES 一个序列是在一段时间内发生的一组值的规范。构建序列所使用的基本操作是延迟规范器&#xff0c;形式为##n&#xff08;表示特定数量的时钟&#xff09;或##[a:b]&#xff08;表示…

【AIGC核心技术剖析】用于高效 3D 内容创建生成(从单视图图像生成高质量的纹理网格)

3D 内容创建的最新进展主要利用通过分数蒸馏抽样 &#xff08;SDS&#xff09; 生成的基于优化的 3D 生成。尽管已经显示出有希望的结果&#xff0c;但这些方法通常存在每个样本优化缓慢的问题&#xff0c;限制了它们的实际应用。在本文中&#xff0c;我们提出了DreamGaussian&…