【系统架构设计师】第一章:操作系统(1.2.1)进程的三态模型与五态模型

本篇帖子继续上篇。有兴趣可以点击链接进行查看以前写过的文章。【系统架构设计师】第一章:操作系统(1.1.1—1.1.2)参考教材:《系统架构设计师考试全程指导(第二版)》《系统架构设计师教程》1.2处理器管理在单用户多任务的操作系统中,或者多用户多任务的操作系统中,系统同时运行多个程序,这些程序的并行运行势必形成对系统资源的竞争使用。因此,操作系统必须能够处理和管理这种并行运行的程序,使之对资源的使用按照良性的顺序进行。1.2.1进程的状态首先我们要搞清楚三个东西的区别:程序,进程,.

大家好,又见面了,我是你们的朋友全栈君。

本篇帖子继续上篇。有兴趣可以点击链接进行查看以前写过的文章。
【系统架构设计师】第一章:操作系统(1.1.1—1.1.2)
参考教材:
《系统架构设计师考试全程指导(第二版)》
《系统架构设计师教程》

1.2 处理器管理

在单用户多任务的操作系统中,或者多用户多任务的操作系统中,系统同时运行多个程序,这些程序的并行运行势必形成对系统资源的竞争使用。因此,操作系统必须能够处理和管理这种并行运行的程序,使之对资源的使用按照良性的顺序进行。

1.2.1 进程的状态

1.定义及分类

首先我们要搞清楚三个东西的区别:程序,进程,线程。

先想想看,什么是程序?
我们常说的编程,这个“程”字指的就是我们的程序。很明显,你写的是代码,而不是手写的运行起来以后的那个程序。那个是经过编译你的代码而得到的东西。
因此,我们可以得出结论:程序就是我们的代码,是一个静态的概念。

其次就是进程。
当我们编译好程序以后,运行的那个软件就是我们的进程。这个也很好理解,对吧?
当然,进程也不仅仅有这些,同时还有比如告诉系统,应该分配多少内存之类的信息。
因此,我们的结论是:

  • 从动态的角度看,进程就计算机状态的一个有序集合。
  • 从静态的角度看,进程由程序,数据,进程控制块(PCB)组成。

最后要说的是线程。
这个东西是书上没有的,不过我突然想到了,就临时补充了上来。所谓线程,其实就是一个相对的概念。
比如我们在写一个下载的程序的时候,我们就需要用到线程,并且将下载放到后台来进行。不然的话,我们的程序就会一直在下载中,导致用户在使用的时候,一旦使用下载功能,就会卡死在主界面。
这个系统用来执行我们下载而分配的到后台去运行的资源,就是我们的线程。所以,我们可以这样说:
线程也是一个被用来处理任务的资源,但是由于是我们进程所创建的,因此就叫做线程。
我们甚至可以将我们的主程序理解成一个我们电脑所产生的线程。

行了,关于进程的介绍就先说这么多吧。剩下其实还有更深的概念,比如守护线程之类的东西就先不提了。

2.进程的状态模型与转换

1.三态模型
我们知道了进程的概念以后,接下来需要知道的是进程的每种状态该如何去描述。
拿c语言来举例吧。
比如,我们写好一个程序,这个程序会读取我们输入的数字加一然后显示出来。我们可以很明显的看到两个过程:

  • 程序自动运行的过程,比如读取我们输入的数字然后加一并且显示出来。这些是没有经过我们人工干预的过程。
  • 程序暂停,等待我们输入所需要的数字的过程。

1和2其实就分别对应了我们进程中的两个过程:运行等待
另外还有一个我们看不到的过程,就是 就绪 这个过程。
这个也很好理解吧?有时候你后台跑个lol+赛博朋克,系统的资源不够用了,想跑你自己写的这个程序,就得等有空闲的资源的时候才会去跑。
然后这时候你把这两个游戏关了,那么你的程序就有资源了。此可,你的程序就叫做就绪态。

我们可以很容易的写出三种形态的转换。
在这里插入图片描述
2.五态模型

我们其实还需要考虑一些极端的情况:如果我们同时开了1000个lol和1000个赛博朋克,那么此可你写的程序处于什么状态?等待态还是就绪态?

很显然,都不是。因为如此大的系统开销,电脑为了防止cpu被耗尽,就必须将一些程序挂起,等到有资源的时候在去唤醒。

此刻你的程序正处于磁盘的镜像中,因此就不参与进程的调度了。你可以认为你的程序从“活”变成了“死”。
这里给出了进程挂起的原因,和书上写的不太一样,不过大体相似,但是建议还是去看一下书。
在这里插入图片描述
为了方便区分“活”的等待态以及就绪态,和“死”的状态,我们先将三态模型中的等待态和就绪态的名字改为活跃阻塞态活跃就绪态
此可,我们的三态模型变成了:
活跃阻塞态,活跃就绪态,运行态

那我们想想当进程被挂起以后会有怎样的状态呢?

我们就要看被挂起的时候是什么状态。比如我们在活跃阻塞态的时候将进程挂起,那么被挂起的进程就叫做静止阻塞态
如果在被挂起的时候是活跃就绪态,那么被挂起的进程就叫做静止就绪态

于是,现在就有了我们新的五态模型:
活跃就绪态,活跃等待态,运行态,静止阻塞态,静止就绪态

我们依旧可以将五种状态的变化列出来。懒得写了,直接看别人写好的吧。
在这里插入图片描述https://www.orzzone.com/process-state-transition.html

这一小节写了进程的简介以及三态模型和五态模型。下一节会讲信号量与pv操作。
下一节已更新。
【系统架构设计师】第一章:操作系统(1.2.2) 信号量与pv操作(一)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/129026.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • iPhone使用教程_iphone基础使用

    iPhone使用教程_iphone基础使用iPhone史上最全的使用教程iPhone的解锁、越狱、激活、固件等等是什么意思,有什么分别这几天看见好多新人问这几个词的含义及区别。我在这儿说说我的看法,不是官方解释,不懂的学习一下,懂的绕道,如有错误,敬请指正!第一次买来时或恢复官方固件后,iPhone会处于那种只能拨打紧急电话状态,不能使用其它功能,如果要使用其它功能,就必须进行一项操作,那就是“激活”。一般有锁版的只有使…

  • CSS 你到底有多少长度单位?

    CSS 你到底有多少长度单位?

  • 盘点python工具包并优化pip下载加速

    盘点python工具包并优化pip下载加速1、优化pip下载加速2、vscode使用安装环境python3、python相关工具包与方法3.1、Bilibili.com(B站)数据下载工具包开源地址:https://github.com/wolfbolin/BiliUtil安装命令:pipinstallBi

  • idm下载百度网盘有限制 提示403错误 下载显示没有权限404,最新的解决办法教程

    idm下载百度网盘有限制 提示403错误 下载显示没有权限404,最新的解决办法教程近期idm下载百度网盘速度在20k/s-50k/s左右,针对这个问题,在2020年10月25日,百度网盘直链提取作者更改了下载接口,速度又能达到nm/s了。user-agent需要更改为netdisk没有了下载数的限制,可以尽可能把下载线程拉高以提高下载速度,服务器可以不填写了,支持同时下载多个文件,不会再提示403错误了以下为测试截图我用的是校园网,每秒接近三M已经很快了,一百多M的视频几秒钟就完事儿了,还是很赞的!如果大家喜欢今天的推文的话,希望大家支持一下小编,点个在看啥的,谢谢大家!今

  • python中的type和object详解

    python中的type和object详解关于这篇博客这篇博客主要描述Python的新风格对象(newstyleobjects),如下:1.和分别是什么?2.用户自定义的类和实例之间是怎么联系的?它们和内置类型又是怎么联系的?

  • bwapp 06

    bwapp 06文章目录Base64Encoding(Secret)ClearTextHTTP(Credentials)HostHeaderAttack(ResetPoisoning)HTML5WebStorage(Secret)SSL2.0DeprecatedProtocolTextFiles(Accounts)Base64Encoding(Secret)抓包,找到sercret,进行base64编码以上级别,40位16进制数,推测使用了sha1编码注意先解码,再base

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号