引言
- 小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。 我们在打游戏的时候可以听歌,还可以进行通话,那游戏有游戏进程,听歌有听歌进程,通话还得有通话进程,此外还得有系统进程等等,那我们的cpu一般就是四核或者八核的,你就算核数再多也不过几十核,那我们的用户请求可是成百上千的,cpu如何驾驭的了呢?
轮询策略
这里面就不得不提操作系统的轮询策略了,有了轮询策略,操作系统就可以使用这个策略来安排进程给cpu,由于cpu执行速度非常快,游戏开启,那就可以将游戏进程交给cpu,然后执行一段时间,听歌开启,那就切换到听歌进程执行一段时间,通话开启,那就再切换到通话进程执行一段时间,这样在外界看起来就是并行执行的,轮询策略不是本章的重点,就按下不表了。
进程的生命周期
进程在cpu的运行情况主要有两种:一种是需要等待cpu的执行,另一种就是不需要等待cpu的执行,所以进程就有了三种状态:运行、堵塞、等待运行。
- 运行:进程在cpu运行的状态,处在正在运行的进程数要小于等于cpu核数。
- 等待运行:进程已经准备好了要运行的所有资源,但是没有可执行的cpu,就需要等待。
- 堵塞:也叫睡眠,当一个进程准备的资源不充足,就算给cpu也没用,此时的进程也就是进入了堵塞状态,比如:等待
I/O或者等待锁。
线程的生命周期
我们的cpu在进程之间切换的成本是非常高的,因此轻量级的进程备受我们亲赖,我们可以把线程理解成轻量级的进程,只不过线程在进程中创建,cpu在线程切换的成本更低,我们的用户请求也可以看成一个个线程,同进程一样,线程也有自己的生命周期,各位可以思考并评论,这里就不多提了。