看的网上关于这些区别的概念真的是五花八门,并且漏洞很多,真是误导吃瓜观众,本人抱着愤怒的心情写下这篇博客,告诉操作系统入门的新手们,仔细看大学教材,理解透字眼。
进程挂起:网上很多都说是主动行为,仔细重新阅读了操作系统后,我并不反对这个观点。但要注意的是,挂起这个操作是一个比较特殊的操作,当系统中负荷较高的时候,系统会主动挂起一些进程,把这些进程淘汰到外存,或者在系统需要检查某些进程时候才会进行的操作。并且,挂起进程在外存中不参与调度,同时磁盘是不能直接联系cpu的,某些博客为什么会提出挂起不会释放CPU呢?我强烈质疑。
可以这样理解挂起是os主动发起的将某个或者某些进程暂时冻结,如果有需要,OS又会将其激活,以作特殊用途的操作是挂起。
内存置换:有些伙伴会有疑问,这个动作有点类似挂起,但这并不是挂起,而是为了提高内存利用率,解决内存空间紧张时才发生的内存与磁盘发生的IO交换,当内存中太多进程处于阻塞或者说睡眠状态,CPU为了提高内存利用率和CPU本身工作效率,将磁盘后备队列的程序跟阻塞进程交换,并没有涉及到挂起,因为挂起和激活是两个成对的原子操作。当然,这种交换只发生在内存紧张的时候,虽然DMA型IO操作没有直接影响cpu工作效率,但若内存都是阻塞进程,CPU也一样在等待。
进程阻塞:这个是存在内存的阻塞队列中的,并且会释放CPU,等待CPU的下一次调度。
CPU时间片调度:注意,这里并没有提到阻塞而执行的调度,一定要重新看教材,CPU只是将时间片到了的进程重新调到就绪队列尾部,并不是阻塞。阻塞是进程同步机制的东西,阻塞当然也涉及到CPU切换。
网上千篇一律的答案,并且漏洞百出,新手一定要先相信教材,这些都是国内知名学者编写的,网上那些相关答案真的太不负责任,误人子弟。