定义(非正式):
进程是运行中的程序
我们写的这些代码、程序都是没有生命的。是操作系统赋予了它们生命,让他们“活”了起来,变成了进程,实现了一些功能。
进程的生命周期:
在我们编译好程序后,生产了一个可执行文件。当我们运行该文件,一个进程就的生命周期就开始了。运行之后,操作系统就会把该可执行文件的数据读入内存,由CPU执行它的指令,执行完所有指令后,操作系统释放这个进程的所有资源,进程的生命周期就结束。
时分共享技术(并发):
在这个过程中会有几个问题产生:
-在数据未到达CPU时,CPU只能傻等
-在数据到达CPU运行一段时间后,突然需要其他资源,去申请的过程CPU又只能傻等
-CPU的速度比其他IO操作性速度快的多
面对以上问题,操作系统使用了时分共享技术。即一个CPU同时运行多个进程,这种技术也可以简称并发。而现代计算机往往一个CPU有多个核心,每个都可以看作一个单独的运行单元,这些运行单元运行不同进程的过程称为并行。
进程调度:
知道了并发以后,又有新的问题产生:
-CPU如何运行多个进程?
-多个进程之间的运行顺序应该是怎么样的?
其中,问题一很好理解。现在假设有进程A和进程B两个进程,当CPU正在运行进程A过程中,进程B的磁盘IO操作已经完成,这时,进程B会让操作系统帮忙,用硬件给CPU发送一个中断,这个中断即告诉CPU,我现在需要运行了!
于是CPU将进程A信息保存,切换到进程B,等进程B的时间片用完后,再保存进程B的信息,运行下一个进程(可能是进程A也可能不是)。
那么,CPU是如何决定在运行完一个进程后,下一个进程运行哪个呢?
这时就涉及到了进程调度算法,进程调度算法的作用就是:
决定CPU在多个进程之间运行哪一个
常见进程调度算法:
-先进先出算法(FIFO)
-最短任务优先算法(SJF)
-最短完成时间优先算法(STCF)
-多级反馈队列算法(MLFQ)
-彩票算法
进程调度算法中,多级反馈队列算法往往是现代系统中常常采用的算法。有关进度调度算法,会另开一篇文章:
//TODU:进程调度算法
本篇内容非常简单,是我自己对进程这一概念的理解,其实有关进程的细节非常多,详情请看书,我应该是不会将其补充完整的,一是没有必要,无非是将书上内容搬到文章里。二是太累了,我懒。