开发者学堂课程【物联网开发- Linux 高级程序设计全套视频:进程的状态及切换】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/660/detail/10982
进程的状态及切换
内容简介:
一、进程的状态
二、进程各状态之间的切换
三、多任务原理的另一种操作系统
一、进程的状态
1、进程的状态种类
接下来看进程的状态以及其相互的转换,因为知道程序是静态的,而进程是动态的,它包括创建、调度以及消亡,在进程存在的过程当中,它有一些状态,状态之间也会进行切换,为了便于理解任务切换讲的简单一点,其实它的状态有好多种,为了简单讲三种状态,即三种比较主要的状态,一种称之为就绪态、一种称之为直形态,一种称之为等待态。
2、多任务原理
什么叫就绪态?就是程序已经具备一切执行条件,正在等待分配 CPU的处理时间,这什么意思?
在此顺便讲一下多任务的原理,操作系统好多都是多任务的,在操作系统中比如说有多个任务,
如下图所示:
图中的每个长方形各表示一个任务,这是一个多任务的操作系统,即是多个任务的多个进程,同时有几个进程正在执行,比如正在听音乐的同时可以聊 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 ,而等待态是等待某件事情发生,某个条件成立。
二、进程各状态间的切换
接下来看一下进程在存在的过程当中,三种状态的切换,
如下图所示:
从等待开始讲,比如程序执行了 sleep 1秒钟,一秒钟之后这个事件发生了,它就进入就绪态了,它要排队等 CPU 给它分配时间片,就像在等朋友来给送钱,然后朋友把钱送来了之后,就进入就绪态,便可以去排队了,终于排到之后售票员给你卖票了,或者是 CPU 去执行这个进程了,即进程被调度了,就进入到执行态,执行时要注意若突然执行了一个 sleep ,就再去等一秒钟到来,是由执行态又可以进入等待态,当你执行 sleep 挂起的时候又进入等待态;
还有一个由执行态可以进入就绪态,
举个例子:
CPU 给每个进程分配一个时间片,当时间片用完了, CPU 就去执行下一个进程,正在执行的进程时间片用完了, CPU 去调度其它进程去了,那进程就由执行态进入到就绪态,比如有钱也在火车站,且正在交易,国家规定火车站排一次队只能买三张票,那买了三张票之后,虽然还想买票,即使有钱也在火车站,但是必须要重新排队,重新进入就绪态,即售票员再次发票,这是三种状态之间的切换。
三、多任务原理的另一种操作系统
多任务的原理是讲了一个时间片轮转,还有一种操作系统叫实时操作系统,它是基于优先级的,它优先执行优先级最高的进程,谁的优先级高就执行谁,当高优先级的进程进入挂起状态的时候,才执行次优先级高的进程,那是基于优先级的。