目录

  • 进程的描述
    • 进程的定义和特征
      • 什么是进程
        • 所以进程到底什么呢?
      • 进程控制块(PCB)
        • PCB的作用
      • 进程的特点
      • 进程的缺点
      • 进程的基本状态
        • 就绪状态
        • 执行状态
        • 阻塞状态
        • 创建状态
        • 终止状态
        • 挂起状态
  • 进程的控制
    • 操作系统内核
      • 什么是操作系统内核
      • 操作系统内核的作用
      • 处理机的执行状态
      • 内核一般具有的功能
        • 支撑功能
        • 资源管理功能
    • 进程的创建
      • 创建进程的过程
      • 子进程和父进程
      • 引起创建进程的事件
    • 进程的终止
      • 引起进程终止的事件
      • 进程终止过程
    • 进程的阻塞和唤醒
      • 注意
      • 引起进程阻塞和唤醒的事件
      • 进程阻塞的过程
      • 进程唤醒过程
    • 进程的挂起和激活
      • 进程挂起的过程
      • 进程激活的过程
  • 进程同步
    • 两种制约关系
    • 同步机制遵循规则
  • 进程的例子

进程的描述

进程的定义和特征

进程和过程的英文都是process(你懂的)

什么是进程

1.程序仅仅只是一堆代码而已,而进程是 cpu执行程序的 运行过程
2.进程是一个程序及其数据在处理机上顺序执行时发生的活动
3.进程是系统进行资源分配和调度的一个独立单元
4.进程是一个可拥有资源的独立单位,该资源包括:程序相应的代码,数据的磁盘 内存地址空间,运行时所需要的IO设备 已打开的文件,信号量等
5.启动一个程序的时候 操作系统会为该进程创建一块内存 用来存放代码,运行中的数据和一个执行任务的主线程

所以进程到底什么呢?

总结一下
首先我们知道程序是一堆可执行的代码。
而进程可以干嘛呢 可以拥有资源(好像说拥有资源不太对 进程又不是对象为什么能拥有资源呢 所以我们在程序开始执行的时候都会分配一些内存(PCB) 用来存这些资源) 这些资源保证程序的正常执行
进程还会保存cpu在该进程时间片用完时的环境上下文 以保证cpu下次再来执行时的上下文一致 但是进程又只是一个过程怎么能保存环境呢 同样PCB 用来存这些信息
那么在应用程序运行所需要的资源都充足时 创建PCB存储所需资源然后开始运行 这时就创建了进程 进程也可也说是应用程序运行的时间段的描述
误区:电脑任务栏的就是进程 其实并不是那个只是应用程序窗口
因为进程只是抽象概念 所以在任务管理器显示的应该是进程的PCB(系统根据进程PCB感知进程的存在)

进程控制块(PCB)

为了使参与并发执行的每个程序都能独立运行 设立了进程控制块PCB
系统利用PCB描述进程的基本情况和活动过程 进而控制和管理进程
程序段 相关的数据段和PCB三部分构成了进程实体(又称进程印象)简称进程 创建进程 实质上使创建进程实体中的PCB 撤销就是清除PCB
PCB类似于进程的身份证

PCB的作用

1.系统可根据进程的PCB感知进程的存在
2.根据PCB中的信息 对进程进行调度(PCB中存储了该程序在内存中的起始地址)
3.将断电信息保存在进程PCB中 在利用进程PCB中的信息来恢复进程允许的现场(CPU现场信息保存在被中断进程的PCB中)
4.使进程在多道程序环境下可以独立运行(什么是独立运行 例如打开文件系统中的文件 请求获得系统的IO设备 以及于其他相关进程进行通信)(PCB中有进程独立运行所需要的资源)

进程的特点

1.动态性 进程的实质时进程实体的执行过程 它由创建而产生 由调度而执行 由撤销而消亡
2.并发性 进程实体和其他进程实体时并发执行
3.进程实体时一个独立运行 独立获得资源和独立接收调度的基本单位 但凡未建立PCB的程序都不能作为一个独立的单位参与运行
4.异步性 进程时按异步方式运行的 即按各自独立的 不可预知的速度向前推进
5.非封闭性 封闭性是一个程序在执行的时候不受其他程序的影响 一个程序运行完才运行下一个 进程运行与之相反
6.不可再现性 多次执行这些并发的程序结果可能不一样 因为并发执行了

进程的缺点

1.需要付出较大的时空开销创建进程需要为其分配该进程所必须的除处理机意外的所有资源 如内存空间 IO设备 以及建立相应的PCB
2.进程切换过于频繁会限制并发程度的进一步提高 需要花费处理机很多时间

进程的基本状态

就绪状态

进程已经分配到除CPU意外的所有必要资源

执行状态

进程已经获得了CPU和其他必要资源 对于任何一个时刻 单处理机系统中 只有一个进程处于执行状态

阻塞状态

正在执行的进程由于发生某事件(I/O请求 申请缓冲区失败)暂时无法继续执行时的状态 此时给他CPU也无法执行

创建状态

先由进程申请一个空白PCB 并向PCB中填写用于控制和管理进程的信息 然后为该进程分配运行时所必须的资源 最后 把该进程转入就绪状态并插入就绪队列之中 如果进程所需的资源尚不能得到满足 比如系统尚无足够内存使进程无法装入其中 此时创建工作尚未完成 进程不能被调度运行 进程所处的状态为创建状态
所以创建状态就是进程在创建时所需的资源尚不能得到满足的状态

终止状态

先等待操作系统进行善后处理 最后将其PCB清零 并将PCB空间返还系统 当一个进程到达了自然借宿

挂起状态

挂起的进程在激活前都无法被分配到CPU
系统被挂起的原因
1.终端用户的需要 例如最小化
2.父进程请求 有时父进程希望挂起 协调各子进程间的活动
3.复合调节的需要 系统把一些不需要的进程挂起 以保证系统能正常运行

进程的控制

操作系统内核

什么是操作系统内核

将一些与硬件紧密相关的模块(中断处理程序),常用设备的驱动程序运行频率较高的模块(时钟管理,进程调度的一些基本操作)都安排在紧靠硬件的软件层次中 将他们常驻内存 这些通常被称为操作系统内核(没弄懂这为什么就算内核了)
好处:这样安排便于对这些软件进行保护 还可以提高操作系统的运行效率

操作系统内核的作用

内核提供操作系统的最基本的功能,是操作系统工作的基础

处理机的执行状态

为了防止操作系统和相关关键数据(如PCB)遭受其他应用程序破坏
将处理机的执行状态分为:
系统态 (又称管态 ,内核态):具有较高的特权 能执行一切指令 访问所有寄存器和存储区
用户态 (又称目态):较低特权 仅能执行规定指令 访问指定的寄存器和存储区 一般情况应用程序只能在用户态运行 这样应用程序无法执行操作系统指令和访问操作系统区域 防止应用程序对操作系统的破坏

内核一般具有的功能

支撑功能

中断处理(中断处理是内核最基本的功能) ,时钟管理,原语操作:
原语:由若干条指令组成 用于完成一定功能的过程 原语操作的特点是他进行的是原子操作,所以原语在执行过程中是不允许被中断的
原子操作:一个操作中的所有动作要么全做要么全不做 是一个不可分割的基本单位 原子操作在系统态下执行 常驻内存

资源管理功能

进程管理(就是上面所说将那些适合放进内核的功能模块放进内核);存储器管理;设备管理

进程的创建

创建进程的过程

操作系统调用Creat原语创建新进程
1.申请PCB 为新进程申请获得唯一的数字标识符 并且从PCB集合中索取一个空白PCB
2.为新进程分配器运行所需要的资源(物理和逻辑资源) 如内存 ,文件,IO设备 CPU时间等 资源从操作系统或仅从其父进程获得
3.初始化PCB:
(1)初始化表示信息 将系统分配的标识符和父进程的标识符填入新PCB中
(2)初始化处理机状态信息 使程序计数器指向程序的入口地址 使栈指针指向 栈顶
(3)初始化处理机控制信息 将进程的状态设置为就绪或静止就绪状态 优先级设置为最低优先级
4.如果进程进程就绪队列能够接纳新进程 就使新进程插入就绪队列

子进程和父进程

进程可以创建进程 被创建的是子进程 另一个是父进程 子进程可以继承父进程所拥有的资源 例如继承父进程打开的文件 继承父进程分配到的缓冲区
子进程被撤销时 会归还从父进程获取的资源
父进程被撤销时 也必须同时撤销其所有子进程
如果一个进程创建另外的进程时获得了一个句柄 这个句柄相当于一个令牌 可以用来控制被创建的进程 句柄可以传递 任何一个进程获得了该句柄都有控制权 所以所有进程之间时同一个地位

引起创建进程的事件

用户登录:登录成功时 系统为该用户创建一个进程
作业调度:作业调度程序调度到某个作业时 将他们装入内存 并且为他们创建进程
提供服务:用户程序剔除请求时 系统会专门创建一个进程提供用户所需要的服务
上面三类都是系统内核为用户创建一个新进程
应用请求:这一类是用户进程自己创建新进程

进程的终止

引起进程终止的事件

**正常结束:**进程正常完成任务 退出运行 在批处理系统中 通常会在程序的最后安排一条Halt指令 用于向操作系统表示允许已经结束 当程序运行到Halt指令时 将产生一个中断 去通知操作系统本进程已经完成 在分时系统用户可以用Logs off 效果一样
**异常结束:**越界,访问到不被允许访问的资源或文件,运行超时,非法指令 算术运算错误,IO故障,特权指令错误(例如用户进程试图执行系统态指令)
**外界干预:**操作员或操作系统干预,父进程请求子进程终止,因父进程终止所以子进程也要终止

进程终止过程

1,根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程的状态
2,若被终止进程正处于执行状态,立即停止该进程的执行,并置调度标志为真 用于只是该进程被终止后应重新进行调度
3,若该进程还有子孙进程,将子孙进程也终止
4,将被终止进程的所有资源归还父进程或者系统
5,将被终止进程(PCB)从所在队列(或链表)中移除 等待其他程序来搜集信息

进程的阻塞和唤醒

注意

被阻塞的进程无法唤醒自己 必须由合作进程用唤醒原语唤醒
block和wakeup必须成对使用

引起进程阻塞和唤醒的事件

这些都是进程请求把自己阻塞 阻塞都是主动的行为
1.向系统请求共享资源失败:系统无足够资源分配给该进程
2.等待某种操作完成
3.新数据尚未到达 常发生在相互合作的两个进程中
4.等待新任务的到达

进程阻塞的过程

进程调用阻塞原语block将自己阻塞
1.停止执行状态,将进程控制块中的现行状态从执行改为阻塞
2.将该进程的PCB插入阻塞队列 如果系统中设置了因不同事件而阻塞的多个阻塞队列 则将本进程插入到具有相同事件的阻塞队列
3.保留被阻塞进程的处理及状态 按新进程的PCB中的处理及状态设置CPU的环境

进程唤醒过程

进程调用唤醒原语wakeup
1.把阻塞的进程从等待该事件的阻塞队列中移出
2.将该进程PCB中的现行状态由阻塞改为就绪
3.将该PCB插入到就绪队列

进程的挂起和激活

进程挂起的过程

进程执行挂起原语suspend
1.检查被挂起进程状态,若处于活动就绪状态 便将其改为静止就绪。若处于活动阻塞状态的进程,则改为静止阻塞 若处于执行状态,则转向调度程序重新调度
2.将该进程的PCB复制到某指定的内存区域 方便用户或父进程考察该进程运行情况

进程激活的过程

进程执行激活原语active
1.将进程从外存调入内存
2.检查进程的现行状态,若为静止就绪 便改为活动就绪 若为静止阻塞 便改为活动阻塞

假如采用的时抢占调度策略 则每当由静止就绪进程被激活而插入就绪队列时 便检查是否进行重新调度 即由调度程序将被激活的进程与当前进程两者的优先级进行比较 如果被激活进程的优先级低 就不必重新调度 否则 立即剥夺当前进程的运行 把处理机分配给刚刚被激活的进程

进程同步

为了保证多个进程能有条不紊的并发执行 所以引入了进程同步机制
简单来说 进程同步的作用是对多个并发执行的相关进程在执行次序上进行协调
临界资源:多个进程采取互斥的方式共享的资源 类似于打印机 CPU
临界区:每个进程中访问临界资源的那段代码称为临界区

两种制约关系

间接相互制约
多个进程并发执行 由于共享了部分系统资源 例如CPU IO设备等(就是例如打印机这种临界资源)形成间接相互制约关系

直接相互制约
两个相互合作的进程容易产生 例如 输入进程A和计算进程B

同步机制遵循规则

1.空闲让进:临界资源处于空闲状态 应允许一个请求进入临界区的进程立即进入自己的临界区
2.忙则等待:临界资源正在被访问 其他试图进入临界区的进程必须等待
3.优先等待:保证在有限时间捏能进入自己的临界区域 以免陷入死等
4.让权等待:当进程不能进入自己的临界区时 立即释放CPU

进程的例子

浏览器是一个应用程序 我们打开它其实并不只是创建了一个进程
浏览器进程。主要负责页面显示、用户交互、子进程管理,同时提供存储等功能。
渲染进程。核心任务是将HTML、CSS 和 JavaScript 转换为用户可以与之交互的网页,排版引擎 Blink 和 V8 引擎都是运行在这个进程中,默认情况下,Chrome 会为每个 Tab 标签创建一个渲染进程。同时,处于安全考虑,渲染进程都是运行在沙箱模式下。
GPU 进程。GPU 的使用初衷是为了实现 3D CSS 效果
网络进程。主要负责页面的网络资源加载,之前是作为一个模块运行在浏览器进程里面的
插件进程。主要是负责插件的运行,因为插件容易崩溃,所以需要通过插件进程来隔离,以保证进程崩溃不会对浏览器和页面造成影响。
又例如暴风影音打开时有三个进程,一个是升级的,一个是右下角的小图标,另一个就是主界面 小图标进程是主界面的子进程
所以我们了解到 创建进程的应用程序并不只是我们桌面上那些应用程序
每个进程是负责应用程序的一部分
有个形象的例子 来自什么是进程
想象一位有一手好厨艺的计算机科学家egon正在为他的女儿元昊烘制生日蛋糕。
他有做生日蛋糕的食谱,
厨房里有所需的原料:面粉、鸡蛋、韭菜,蒜泥等。
在这个比喻中:
做蛋糕的食谱就是程序(即用适当形式描述的算法)
计算机科学家就是处理器(cpu)
而做蛋糕的各种原料就是输入数据。
进程就是厨师阅读食谱、取来各种原料以及烘制蛋糕等一系列动作的总和
并且同一个程序执行两次,那也是两个进程,比如打开暴风影音,虽然都是同一个软件,但是一个可以播放苍井空,一个可以播放饭岛爱。
还有个形象的例子来自什么是进程
我们先来做一个思维实验. 想象一下我们有一台最简单的计算机. 我们先完全不考虑什么操作系统什么虚拟内存, 就当这些东西完全不存在.这台 “计算机” 的全部功能就是每秒钟神奇地从 “磁盘” 找到一条指令, 送入 “CPU” , 让 “CPU” 按顺序执行.假设磁盘上有个程序A, 里面包含17条指令, 那么我们的计算机就需要17秒去完成这个程序. 而这17秒之内, 我们的计算机无法做别的事情. 这看起来很蠢不是么? 想象一下一台电脑无法边打字边听音乐.所以我们要对计算机做出改进, 让他能够交替的执行程序A程序B程序C程序D.再一次假设全知全能的我们完成了对计算机的改造, 现在我们的计算机可以做到同时执行多个程序. 还是那个拥有17条指令的程序A和一个拥有42条指令的程序B. 我们可以先执行一秒钟程序A, 再执行一秒钟程序B, 再执行一秒钟程序A. 看上去在同时执行两条程序似的. 那程序A对应的进程到底是什么? 是那17条指令? 是那17秒钟? 好像都不是.进程A就是处理这17条指令的过程; 而进程B就是处理这42条指令的过程.什么? 进程就是过程? process is process? 这说了和没说有什么区别?没错, 很遗憾的说, 对于一个还未入门的人来说, 这就是最低程度的抽象了.你看, 哪怕是最最简单的计算机, 我们依旧无法说清「进程到底是什么」.因为进程这个概念本身就是抽象的.
作者:刘理铖
链接:https://www.zhihu.com/question/55185966/answer/1327290370
来源:知乎
顺便提一下他在里面说的几句话我很喜欢
费曼在里说过微观世界无论是对新手还是物理学家都是抽象的
请怀揣着这种不确定感继续学习, 不要有自拾包袱, 不要假装自己很聪明. 这个世界本身就是抽象又复杂的. 这没什么大不了.

计算机操作系统-进程的描述与控制相关推荐

  1. 操作系统 进程的描述与控制

    本系列是计算机操作系统的笔记 采用的书是<计算机操作系统>汤子瀛 第二章 进程的描述与控制 2.1前驱图和程序执行 2.1.1前驱图 1. 所谓前驱图,是指一个有向无循环图,可记为DAG( ...

  2. 计算机操作系统(第四版)第二章(进程的描述与控制)知识点整理

    进程的描述与控制 2.1 前驱图和程序执行 2.1.1 前驱图 2.1.2 程序顺序执行 2.1.3 程序并发执行 2.2 进程的描述 2.2.1 进程的定义与特征 2.2.2 进程的基本状态及转换 ...

  3. 【操作系统】 第二章 进程的描述与控制

    第二章 进程的描述与控制 2.1 什么是进程 程序代码+相关数据+程序控制块PCB 当处理器开始执行一个程序的代码时,称这个执行的实体为进程 2.1.1 进程和进程控制块PCB PCB(Process ...

  4. 进程的描述与控制 操作系统第二章知识点归纳总结

    系列文章 第一章 操作系统概述 第二章 进程调度 第二章 进程的描述与控制 2.1 什么是进程 程序代码+相关数据+程序控制块PCB 当处理器开始执行一个程序的代码时,称这个执行的实体为进程 2.1. ...

  5. 【操作系统】第二章--进程的描述与控制--笔记与理解(2)

    笔记理解之后可以进行深入解释→[操作系统]第二章–进程的描述与控制–深入与解释(2) 文章目录 第二章--进程的描述与控制--笔记与理解(2) 经典进程的同步问题 生产者-消费者问题 读者-写者问题 ...

  6. 操作系统 第二章 进程的描述与控制(4)进程同步(重点)

    计算机操作系统 读书笔记 第二章 进程的描述与控制 进程同步(重点) 计算机操作系统 前言 进程同步 一.进程同步的基本概念 1.1 两种形式的制约关系 1.2 临界资源(Critical Resou ...

  7. 操作系统第二章进程的描述与控制

    第二章进程的描述与控制 前驱图和程序执行 程序并发执行 程序的并发执行 程序并发执行时的特征 间断性 失去封闭性 不可再现性 进程的描述 进程的定义 进程是程序的一次执行 进程是一个程序及其数据在处理 ...

  8. 【操作系统】第二章-进程的描述与控制

    第二章.进程的描述与控制 前言 在传统的操作系统中,为了提高资源利用率和系统吞吐量,通常采用多道程序技术,将多个程序同时装入内存,并使之并发运行,传统意义上的程序不再能独立运行.此时,作为资源分配和独 ...

  9. 模拟进程创建、终止、阻塞、唤醒原语_操作系统第二章--进程的描述与控制

    操作系统第二章--进程的描述与控制 前趋图和程序执行 前趋图 前趋图是一个有向无循环图DAG,用来描述进程之间执行的前后关系 初始结点:没有前趋的结点 终止结点:没有后继的结点 重量:表示该结点所含有 ...

最新文章

  1. python查询mysql中文乱码问题
  2. 重磅直播|GDR-Net:基于几何信息指导的单目6D物体姿态估计算法(CVPR2021作者开讲啦)...
  3. [转载]offsetHeight , clientHeight, scrollHeight 区别
  4. [原创]浅谈在创业公司对PMF的理解
  5. 在VS Code中直接调试Web程序,是怎样一种体验?
  6. Python 3实现k-邻近算法以及 iris 数据集分类应用
  7. jbuilder运行一闪而过
  8. RocketMQ入门到入土(二)事务消息顺序消息
  9. .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  10. JetBrain全家桶教育账号申请,每年官方发送一封验证邮箱,验证身份,安全有效
  11. 我的世界里 有你还不知道的秘密 边走边学习 且行且珍惜吧
  12. Win10 LTSC版如何安装应用商店Microsoft Store
  13. zookeeper之watcher
  14. Unity 中的随机数!
  15. 【向生活低头】win10电脑使用录音机的注意事项
  16. 单身公寓app开发,年轻人的租房首选
  17. 玩机器人可以学到什么?
  18. windows调整窗口大小_175 Windows 7调整,提示和操作方法文章
  19. 如何让自己的品牌上百度百科,品牌百度百科怎么做
  20. 交换机设置trunk端口报错:Command rejected: An interface whose trunk encapsulation is “Auto“

热门文章

  1. 知识图谱 | (3) 知识图谱技术综述(下)
  2. 计算机excel二级试题及答案,(新)计算机(Excel表格处理)二级考试试题及答案.docx...
  3. ERP对接过程中遇到的问题总结(webapi)
  4. 2021,shell脚本手机微信8.0,微信运动,自动点赞小伙伴的一些总结
  5. iOS开发 Xcode13-iOS 15适配(OC、Swift)
  6. 非稳态导热Matlab诺莫图,第三章非稳态导热讲课.ppt
  7. 人工智能时代企业获客仅需一键即可完成拓客操作,批量获取信息
  8. 巧用360安全卫士卸载QQ_Simplelife_新浪博客
  9. Golang随机数生成器 rand
  10. Android打开各种文件的MIME TYPE-setDataAndType函数中的Type关联