Linux--进程优先级和进程切换

目录

一,引言

二,进程优先级

三,进程切换


一,引言

本章主要讲解进程优先级相关概念,在Linux如何查看,修改进程的优先级。最后讲解在平时使用的大众计算机中,分时操作系统是如何进行进程切换的。

二,进程优先级

在Linux操作系统中,一个cpu对应一个调度队列,而一个调度队列中有许多进程,在进程状态中详细讲解了进程方面的知识Linux--进程状态-CSDN博客。因此,就存在了进程先后被cpu所执行的顺序。就引出了进程优先级的概念。首先先介绍以下在Linux中如何查看进程:

复制代码
ps -al | head -1 && ps -al | grep 目标文件名

这里的PRI就是优先级。这里引入一个知识点这里的uid代表执行人--也就是用户。因此,在执行一个程序有没有权限,是谁在执行,进程都有记载。

PRI的默认值是80,PRI越小代表优先级越高,反之越低。

NI表示权限的修正值,通过改变NI的值来间接改变PRI的值。

修改优先级:

复制代码
top  r   加pid  加修改的数值

PRI = 默认值加减NI。默认值是不会变的。

除了上述调整优先级的方法之外,nice,renice等指令也可以用来调整优先级。在代码内部可以通过getpriority()来调整优先级。

linux进程优先级的范围是60,99

三,进程切换

在进程进行处理的过程中,很多情况下,当个进程并不能一次执行结束,因此产生了进程切换的概念。

在cpu处理进程的过程中,cpu中有许多寄存器。这些寄存器都会存储进程中的临时数据。当这个正在执行的进程到cpu的使用时间之后,这些寄存器中的数据就会拷贝给这个进程。当下一次轮到这个进程时,该进程的数据会重新给寄存器,寄存器通过读取数据,就会知道上次进程运行到了什么地方,以及运行的结果是什么。并且cpu会沿着上次的进行向下运行依次往复。这个过程就叫做进程的切换。如下图:

注意:这里的寄存器都是在cpu开的临时空间。这里的寄存器指的是开辟的空间。

四,linux内核进程0(1)调度队列

在进程的简要介绍中讲到一个cpu对应一个调度队列,调度队列本身是一个结构体,下面大致将以下调度队列的原理。如图:

每一个进程对应一个PCB储存进程信息的结构体。而这些结构体组成队列,也就是调度队列,那么队列究竟是如何工作的。当一个进程需要进程调度队列时,会首先看该进程的优先级信息。如上图,queue是一个pcb结构体指针构成的数组,会根据要进入调度队列的优先级进行,链接。这和过程和哈希表的映射过程比较相似。如果遇到相同优先级的进程,会根据进程的先后顺序进行,向该优先级的位置向后进行链接。当cpu进行运行是,会运行优先级最高的进程。如果该进程的优先级不高。就需要一个个看这个数组到底哪个有进程,哪个没有进程,因此引入了bitmap数组的概念。这个数组存入五个整形,也就是20个字节,160个bit位。这个bit位会记录,queue数组哪一个位置有进程哪一个没有。根据bit位的0或者1进行判断。当该进程执行之后,这个进程并不一定执行结束,当该进程没有执行结束时,就会将该进程链接到arry2这个中,也就是红色的框框中,直到蓝色框框的所有都执行结束,操作系统会交换这两者的地址,重新依次往复。

相关推荐
A小辣椒19 小时前
TShark:Wireshark CLI 功能
linux
A小辣椒1 天前
TShark:基础知识
linux
AlfredZhao1 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式