竞争性、独立性、并行性、并发性。
系统进程数码众多,而CPU的资源只有固定的那些,很少,比如说CPU,一般情况下CPU只有一个,所以进程之间是具有竞争属性的。为了高效的完成任务,更合理竞争相关的资源,便具有了优先级。
多进程运行,需要独享各种资源,多进程运行期间互不干扰。
之前我介绍了进程的僵尸状态,回顾一下:僵尸状态是某进程A运行后,fork创建了子进程,子进程运行了一会就退出了,而进程A的子进程成为了僵尸状态,但父进程仍在happy的执行着,没有收到半点影响,所以说子进程的退出并不影响父进程的执行,多进程的运行期间互不干扰!
多个进程在多个CPU下分别同时运行,这就称之为并行。
我们的笔记本电脑只有一个CPU,就只能同时进行一个进程的运行。
注:这里说的运行,并不是之前讲进程状态那部分内容说的“进程处在CPU的运行队列”,而说的是该进程正在被CPU做运行处理!
多个进程在一个CPU下采用进程切换的方式运行,即在一段时间之内,让多个进程都得以推进,称之为并发。
例:并发就是指我们在刷抖音的同时还能继续回复微信的消息。
深入理解就是说:当两个甚至多个进程被执行后,抖音进程被CPU拿去运行处理,这时微信进程在运行队列的队首等待着,因为CPU的运行速度相当之快,是以纳秒为单位进行处理,所以CPU会处理数毫秒就会换到下一个微信进程处理,而这个抖音进程会被操作系统放到运行队列的队尾,等待着下一次CPU对它的运行处理,CPU处理一个进程几毫秒就会换下一个进程处理,是一瞬间的事情,所以在我们的感觉看来其实就像是它们在并发执行一样。即物理结构上是串行执行,在逻辑结构上是并行执行。
就好比医生给病人看病,给第一个病人A看完后,让他去抽血化验拍CT,医生总不能等到病人A把结果拿回来才继续工作吧,很浪费时间,于是趁着病人A去做化验,医生继续给病人B,病人C看病,等到给病人D看病时,病人A拿着化验报告单回来了,于是医生先给病人A继续看病,根据他的报告开药方,让他去一楼买药,医生继续给病人D看病......周而复始,医生就相当于是CPU,给病人看病的过程是时间片轮转,进程切换。