进程的状态及切换|学习笔记

简介: 快速学习进程的状态及切换

开发者学堂课程【物联网开发- Linux 高级程序设计全套视频进程的状态及切换】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/660/detail/10982


进程的状态及切换

 

内容简介:

一、进程的状态

二、进程各状态之间的切换

三、多任务原理的另一种操作系统

 

一、进程的状态

1、进程的状态种类

接下来看进程的状态以及其相互的转换,因为知道程序是静态的,而进程是动态的,它包括创建、调度以及消亡,在进程存在的过程当中,它有一些状态,状态之间也会进行切换,为了便于理解任务切换讲的简单一点,其实它的状态有好多种,为了简单讲三种状态,即三种比较主要的状态,一种称之为就绪态、一种称之为直形态,一种称之为等待态。

2、多任务原理

什么叫就绪态?就是程序已经具备一切执行条件,正在等待分配 CPU的处理时间,这什么意思?

在此顺便讲一下多任务的原理,操作系统好多都是多任务的,在操作系统中比如说有多个任务,

如下图所示:

image.gif图中的每个长方形各表示一个任务,这是一个多任务的操作系统,即是多个任务的多个进程,同时有几个进程正在执行,比如正在听音乐的同时可以聊 QQ 、可以上网,但是假如CPU只有一个单核 CPU ,无论几核 CPU , Linux 都是操作系统是做任务的,假如只有一个CPU ,即是单核 CPU ,那操作系统是怎样实现多任务的?

它一种是分时操作系统,分时操作系统就是分时间片,举个例子当第一个任务执行0.00001秒,然后它再去执行第二个任务,执行一段时间后,再执行第三个任务,执行一段时间,然后执行第四个任务,执行一段时间分配时间片,每个进程分配一个小时, CPU 分别去执行它们的代码,执行完最后一个任务之后,它再去执行第一个,然后再去执行第二个,再去给第三个执行一段时间,即分配一个时间片执行,然后再去分配时间、再执行、是一圈又一圈又一圈,注意因为 CPU 的速度非常快,虽然看单个进程时,看上去它是从上往下的,但它肯定是一片一片的去执行的,即执行一会儿停一会,停一会再执行一会,肉眼上去听歌或者是聊 QQ 的时候,没有感觉中断的状态,为什么?因为CPU 的速度很快,处理完了之后很快就回来了,就像放电影一样,一张张的图片,然后叠在一起,快速播放变成了电影,就变成了连续的,所以看上去每个任务都像并发的在执行一样,其实它是通过时间片轮转,肉眼看不出他停顿。

3、就绪态

假如 CPU 正在执行进程,那其他的三个进程具备程序执行的一切条件,就在等 CPU 给它分配时间片,这种状态称之为就绪态,像 A 进程、 B 进程、 C 进程、 D 进程, CPU 正在给 B 进程分配时间片,正在执行 B 进程的代码,那 A 进程、 C 进程、 D 进程就具备一切程序执行的条件,就在等 CPU 给它分配时间片执行代码,那么 A 进程、 C 进程、 D 进程它就处于就绪态,而 B 进程处于执行态。

4、等待态

等待态是什么?进程不具备某些执行条件而暂时无法执行的状态,举个例子:比如在程序当中执行了一个 sleep  1秒,那此时进程就会挂起一秒钟时间,它不具备执行的条件,因为那一秒钟这个事件还没到来,等一秒钟到了之后,它才有资格去执行代码,即那种状态处于等待态。

5、三个状态举例子介绍

举个例子什么叫就绪态,比如过年买火车票,去火车站去买火车票,人在火车站,同时也有钱,但是去了之后,能立马跟售票员交易吗?不行,是要排队的,排队等售票员交易,售票员相当于 CPU ,此时就处于具备一切买票的条件,但是得等 CPU ,即等售票员,这便属于就绪态;

6、就绪态与等待态关系

好像就绪态和等待态都是等,但是等的东西不一样,就绪态是等 CPU ,而等待态是等待某件事情发生,某个条件成立。


二、进程各状态间的切换

接下来看一下进程在存在的过程当中,三种状态的切换,

如下图所示:

image.png

从等待开始讲,比如程序执行了 sleep 1秒钟,一秒钟之后这个事件发生了,它就进入就绪态了,它要排队等 CPU 给它分配时间片,就像在等朋友来给送钱,然后朋友把钱送来了之后,就进入就绪态,便可以去排队了,终于排到之后售票员给你卖票了,或者是 CPU 去执行这个进程了,即进程被调度了,就进入到执行态,执行时要注意若突然执行了一个 sleep ,就再去等一秒钟到来,是由执行态又可以进入等待态,当你执行 sleep 挂起的时候又进入等待态;

还有一个由执行态可以进入就绪态,

举个例子:

CPU 给每个进程分配一个时间片,当时间片用完了, CPU 就去执行下一个进程,正在执行的进程时间片用完了, CPU 去调度其它进程去了,那进程就由执行态进入到就绪态,比如有钱也在火车站,且正在交易,国家规定火车站排一次队只能买三张票,那买了三张票之后,虽然还想买票,即使有钱也在火车站,但是必须要重新排队,重新进入就绪态,即售票员再次发票,这是三种状态之间的切换。

 

三、多任务原理的另一种操作系统

多任务的原理是讲了一个时间片轮转,还有一种操作系统叫实时操作系统,它是基于优先级的,它优先执行优先级最高的进程,谁的优先级高就执行谁,当高优先级的进程进入挂起状态的时候,才执行次优先级高的进程,那是基于优先级的。

相关文章
|
10月前
|
Kubernetes Ubuntu Cloud Native
深入剖析Kubernetes学习笔记-05 | 白话容器基础(一):从进程说开去
深入剖析Kubernetes学习笔记-05 | 白话容器基础(一):从进程说开去
88 0
|
4月前
|
Linux 调度
Linux学习笔记十一:进程管理
Linux学习笔记十一:进程管理
|
9月前
|
消息中间件 Shell Linux
计算机操作系统学习笔记(7)——进程通信
计算机操作系统学习笔记(7)——进程通信
65 0
|
7月前
|
存储 安全 Linux
Go语言学习笔记-进程和线程
Go语言学习笔记-进程和线程
36 0
Go语言学习笔记-进程和线程
|
9月前
|
Linux
计算机操作系统学习笔记(6)——进程和线程
计算机操作系统学习笔记(6)——进程和线程
54 0
|
9月前
|
存储 算法 程序员
[计算机操作系统(慕课版)]第二章 进程的描述与控制(学习笔记)
[计算机操作系统(慕课版)]第二章 进程的描述与控制(学习笔记)
|
9月前
|
安全 Java
Java复习与学习笔记----进程和线程与同步(下)
Java复习与学习笔记----进程和线程与同步(下)
|
9月前
|
Java 调度
Java复习与学习笔记----进程和线程与同步(上)
Java复习与学习笔记----进程和线程与同步
|
Linux
Linux学习笔记(六) 进程管理
Linux学习笔记(六) 进程管理
65 0
|
Linux 调度
Linux学习笔记十一:进程管理
大家好,我是阿萨。 今天我们学习Linux 系统里的进程给管理。Linux 使用命令来进行进程管理。进程管理主要是查看系统中运行的程序和进程,前后端服务器的健康状态和强制中止不需要的进程。