前言
在了解完不同进程的状态后,我们知道了进程在做什么事情时应该处于什么状态,但进程的运行有没有先后顺序呢?如果有,系统如何决定谁先谁后?而且进程在切换时是如何进行的?
一、基本概念
CPU 资源分配的先后顺序,即进程的优先级(priority)。
优先级产生的本质是目标资源的稀缺,导致需要用优先级确认先后顺序。电脑的 CPU 只有一两块,但进程有成百上千,因此必然存在优先级。
在操作系统内,优先级是 PCB 中的一种整型数字。值越低,优先级越高;反之优先级越低。大多数操作系统基于时间片的分时操作系统,每个进程分有自己的时间片。进程运行时并不一直占有 CPU,而是有一定的运行时间,时间到了需等待下一轮。这类系统通常考虑各进程之间的公平性,虽然有优先级差别,但不能过大。
优先级 VS 权限
优先级本质上是指得到资源的先后问题。权限本质是指是否能得到某种资源。
二、查看系统进程
查看优先级常用 ps -la 指令。
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int main() {
pid_t id = fork();
if (id == 0) {
// child
while (1) {
printf("我是一个子进程,pid: %d, ppid: %d\n", getpid(), getppid());
sleep(1);
}
} else {
// parent
int cnt = 5;
while (1) {
(, getpid(), getppid());
sleep();
}
}
;
}


