[Linux]——进程(2)
目录
编辑
一、前言
二、正文
2.1 进程状态
R/R+状态
S状态
D状态
T/t状态
X状态
Z状态
2.2孤儿进程
2.3进程优先级
2.3.1基本概念
2.3.2PRI and NI
一、前言
在这一章,会为大家进行进程状态以及进程优先级的讲解
二、正文
2.1 进程状态
在一节中我们简单了描述了下进程的概念,进程粗略的来说就是由一个内核PCB数据结构加上我们自己的数据和代码。同时,我们也学会了如何通过指令来查看进程的相关属性。我们通过ps axj就可以查看所有进程的属性。
通过屏幕显示出来的数据,我们已经认识了PID,PPID,也就是我们讲的父进程和子进程对应的ID,但是我们还发现了一个属性“STAT”,它的全程是station,即状态。所以每一个进程都是有其对应的状态,那么对于进程的状态我们应该如何去认识呢?
博主在网上找了些进程状态的图,小伙伴们可以先看看,有什么想法?
我们会发现,如果我们去网上去搜索关于进程状态的图片,其实都没有一个准确的说法,那么今天我们该如何去认识进程的状态呢?
首先,我们先来从操作系统学科的角度来谈谈进程的状态。无论网上的图片有多少状态,教材上有多少状态,笔者认为我们可以先将它们简单地归为三种状态:运行、阻塞和挂起。
1.运行状态——R
对于CPU来说,当它面临很多的进程的时候,它会创建一个运行队列,将要运行的进程一个个链入到队列当中,那么只要一个进程位于这个运行队列的时候,这个时候它的状态就属于运行态,即告诉CPU,它这个进程已经准备好了,可以随时被调度。因此,有些小伙伴会认为一个进程只有当它正在运行的时候才处于运行状态,这个想法其实是不太对的。
2.阻塞状态——S
在讲解阻塞状态之前,我们先要了解一个叫做时间片的概念,即CPU分配给每个进程的时间,可能是10ms,也可能是其他的时间,那么这个时间片有什么用呢?有了这个时间片,就能能够保证在一段时间内,所有的进程代码都会被执行,也叫做并发执行,而不会因为一直在等待某一个进程,让其他进程一直无法被执行。因此随着时间一到,进程就会被CPU放上去或者拿下来,那么大量的把进程从CPU放上去,拿下来的动作就叫做进程切换。
讲了这么多,那么到底什么是阻塞状态呢?我们都知道操作系统是一个可以帮助用户去管理软硬件的软件,那么除了能够帮助我们去管理不同的进程,它还要去管理各种的设备,外设,因为有些进程需要去访问这些硬件资源。相信,在座的小伙伴一定面临过这种情况,当我们在学习C语言的时候,有一个函数叫做scanf,这个函数能够帮助我们从键盘去读取数据,但是当我们运行程序的时候,我们一直不输