文章目录
目录
前言
1.进程的一些概念
2.进程的优先级
二、进程切换
三、进程调度
总结
前言
在我们的windows电脑上,常常会开启许多不同的软件,我们知道他们会一种和谐的方式存在于我们的电脑上,它们会随着我们的点击而启动,会随着我们计算机的关闭而关闭。那么本文想要介绍的是在Linux的操作系统中是如何对这些软件处理,来到达这种“和谐”状态。
一、Linux进程的概念准备
1.进程的一些概念
①独立性:进程与进程之间是不会相互影响的,一方的错误退出并不会导致另一方出错
②共享性:通常计算机只有一块CPU,所有的进程共享这一块CPU及其周边资源
③并发:假如计算机有多块CPU,多个进程在不同的CPU上运行叫做并发
④并行:只有一块CPU,多个进程在一段时间内在一块CPU上以进程切换的方式执行,叫做并行
我们要讲的Linux进程调度与切换起始就归属于并行。
2.进程的优先级
进程一共有140等级,其中0-99不允许用户使用,这一部分由操作系统控制,100-139开放给用户,用户可以使用并通过接口调控进程的优先级。
二、进程切换
我们要知道的是,在计算机的CPU中其实集成了很多寄存器,这些寄存器来帮助CPU中的运算器进程运算和数据读取等等操作,当我们的进程在加载到CPU中运行时会产生很多的数据,这些数据中的一部分就会保存在CPU的寄存器中,当进程切换发生时,会将这些数据返回到进程中管理这部分数据的空间中(需要说明的是进程载出CPU时不一定将执行内容全部执行完毕)。当进程再一次加载到CPU中时,会继续从上一次执行到的部分往后执行,而实现这一步的重要步骤就是要将上一次执行完载出的寄存器中的数据重新加载回CPU中的寄存器。
关于为什么CPU知道再次载入的进程从哪里开始执行,这个其实是一个叫做PC指针的寄存器来完成的,这个指针指向该进程下一条指令的地址,只要CPU读取了该指针指向地址的内容,就可以读取该内容,就可以得知下一步应该做什么。
实际上,操作系统会维护一个运行队列,在这个队列中操作系统会依次执行排好队的程序。
需要注意的是:“进程替换”与“进程切换”不是一个概念。
三、进程调度
要讲清楚进程的调度,就必须先介绍一下,操作系统维护的运行队列。
在该结构中,维护了两个队列——运行队列、休眠队列。操作系统会优先执行活跃队列中的内容,而将过期进程和新到来的进程按照对应的优先级链入到对应优先级休眠队列中的链表上,等待活跃队列中的进程全部完成执行或时间片到期,此时活跃队列转换为休眠队列,休眠队列转换成为活跃队列,这一过程是通过指针来进行的,所以是十分高效的。
需要说明的是进程的优先级体现在休眠队列转换为活跃队列的时候,这个时候优先级高的先执行,优先级低的后执行。
总结
Linux中的进程调度与切换是通过操作系统根据优先级的调度完成的,当然本文只是解释了在正常情况下,进程的优先级。