初看这标题,简直就是个渣写的,程序运行嘛,就是一个程序在运行嘛.......比如说这个暴风影音正在放片儿,这个QQ正在发送消息等等,这些都是看得见的,那么看不见的呢?
不管咋滴,我觉得还是弄得清楚些好点,弄懂了基本上不会忘记,记住的东西往往会忘记。说一个程序在运行是什么意思,这个问题其实回归到现代计算机的模型这个问题上。就是冯诺依曼模型吧。Let's have a look:
咳,以上图片来自维基百科哈。
现代CPU中,图中的控制器和ALU现在应该都是属于CPU的。控制单元应该是属于流水线时序等装置。
那么,我们经常所说的一个程序在运行是什么意思呢? 在这个问题开始之前有个问题要说明:进程和程序还是要分清的!一个程序有可能有多个进程哦。
我们主要来讲一个进程(线程,Linux内核中进程和线程是一个东西),也就是一个任务在运行是什么意思。
简单而实在地说,进程在运行就是说CPU(某个核)在执行这个进程的指令。确实是很实在的,虽然计算机离不开任何一个部件,但是CPU确实是计算机的核心。一个任务在运行也就是这个任务占有这个CPU。我这里所说的运行可是很实在地运行,而不是说这个进程的状态是RUNNING,那些即将运行而没有运行的进程的状态也是RUNNING状态的。
前面我说的很清楚,是CPU正在运行这个进程的指令。我的理解是CPU是主动的,你一个程序要运行的话,那么你把你的指令“送给”CPU去执行。
待续...