linux学习笔记03

举报
qingchuan666 发表于 2025/07/25 12:09:48 2025/07/25
【摘要】 1.孤儿进程我们知道这个进程之间是存在着这个父子关系的,当我们的子进程退出的时候,我们知道这个子进程的信息需要被我们的这个父进程获取,没有获取的话这个子进程就是僵尸进程,这个是我们之前学习的这个问题;但是针对于这个父子关系的进程,如果我们的这个父进程掉线了,这个时候我们的这个子进程就变成孤儿进程,这个进程会被1号进程领养; 2.进程的优先级 2.1通俗理解食堂吃饭,排队的本质就是确认自己的...

1.孤儿进程

我们知道这个进程之间是存在着这个父子关系的,当我们的子进程退出的时候,我们知道这个子进程的信息需要被我们的这个父进程获取,没有获取的话这个子进程就是僵尸进程,这个是我们之前学习的这个问题;

但是针对于这个父子关系的进程,如果我们的这个父进程掉线了,这个时候我们的这个子进程就变成孤儿进程,这个进程会被1号进程领养;

2.进程的优先级

2.1通俗理解

食堂吃饭,排队的本质就是确认自己的优先级,因此优先级的本质就是衡量我们等到某一种资源的先后顺序;

对于进程而言,这个进程的优先级就是决定我们的进程获取CPU资源的先后顺序;

2.2为什么需要优先级

因为我们的目标资源稀缺,例如我们的食堂吃饭需要排队,如果这个窗口的数量足够多,我们也就不需要排队;

进程里面很多的进程竞争一个或者几个CPU,因此需要进程的优先级的概念;

就是因为这个CPU资源稀缺,因此我们需要优先级确定这个资源获取的先后顺序;

2.3怎么设计优先级

优先级是一个数字,这个数值的值越小,这个进程的优先级就会越高,这个其实是很容易理解的;

大部分的操作系统是基于时间片的分时操作系统,优先级可能会变化,但是这个变化的幅度不能很大;

2.4PRI和NI

PRI就是我们的进程的默认的优先级;

NI就是我们的进程的优先级的修正数据;

进程的真正的优先级:默认的优先级+我们的修正数据;

我们的这个最开始默认的优先级是80(本来就是),修正数据是0,但是这个修正数据是可以被我们修改的,假设我们修改成为10,这个时候就是90的优先级了,如果我们把这个NI修改成为-10,这个时候的真正的优先级不是80,而是70,因为这个优先级的基准值是相对于这个默认的优先级80而言的;

2.5优先级的极值

优先级的范围是60-99,因此这个NI数值的范围就是-20和19之间;

3.进程切换

3.1死循环是如何执行的

死循环不会直接把我们的这个系统卡死,就说明这个死循环不会一直占用我们的这个CPU,而是使用的时间片的技术,每一个进程在我们的这个CPU上面执行的按照时间片的分配去执行的;

这个就证明了,我们的这个进程不会一直占用这个CPU,而是时间片轮转的;

3.2聊聊CPU和寄存器

1.寄存器就是CPU里面的保存数据的临时的空间

2.寄存器!=寄存器里面的这个数据,寄存器就是我们的这个保存数据的空间本身,这个寄存器里面的对应的数据是可以发生变化的

3.3关于进程的切换故事

进程切换的本质,其实就是保存和回复我们的当前进程的硬件上下文的数据,也就是我们的CPU里面的寄存器;

image-20250706134029458

进程的硬件上下文数据,其实是保存到了这个进程对应的PCB,也就是这个task_struct里面去;

在这个进程的task_struct里面的某一个字段里面,就保存着我们的进程的硬件上下文数据的相关的具体的内容;

4.O(1)进程的调度算法

这个部分的内容老师讲了很久,但是我觉得自己没有完全的理解,只是知道这个里面的一些调度的设计的方法把;

其实就是这个active和expired两个指针分别指向不同的这个区域,每一个区域都有一个140大小的队列,两个指针分别指向的其实活跃的队列和过期的队列;

我们的这个进程本来是在这个active指向的这个队列里面的,如果这个进程被我们的调度器调度之后,就会上CPU进行执行,执行之后就全部放到这个expired指向的这个过期的队列里面去;

只有当我们的这个活跃的进程全部执行完毕之后,我们才可以去照顾到这个过期的进程,也就是我们的这个活跃的进程全部执行完毕,全部都放到了这个过期的队列对应的位置上面之后,我们的这个活跃进程才算是全部调度完成了;

这个时候,我们的这个active指针和这个expired指针进行swap操作,也就是修改这个指针的指向,这个时候继续开始新的调度的过程啦;

每一个140大小的队列都是有这个进程的优先级的,1-100主要是实时的优先级,101-140就是我们熟悉的这个进程的优先级的编号;

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。