最近在学习操作系统,有几个小问题想请教大牛,望不吝赐教。
1.单CPU机器中,每个瞬间最多只有一个进程在运行?
2.如果确实在每个瞬间最多只有一个进程在运行的话,那么并行处理是怎么实现的?是把一个进程分成很多线程?这些线程真的是在同一时刻一起运行?
3.如果是这样的话,那么这里的线程应该指的是内核级线程吧,因为用户级线程是一个瞬间只有一个进程在运行。
------解决方案--------------------
1)单CPU机器中,可以有多个进程在内存中并发运行,但每个瞬间确实只有一个进程占用CPU;
2)一个进程在运行时,其他的进程处于阻塞状态(等待资源),或者在就绪等待;
3)线程是比进程更小的执行单位,把上述1)和2)中的进程替换成线程一样成立。
------解决方案--------------------
宏观并行,微观串行
------解决方案--------------------
宏观上,多个进程都在运行,微观上,CPU执行这个进程一下,马上切换到下个进程运行,具体到某一个时间点,只有一个进程在运行。
------解决方案--------------------
1、在linux操作系统中,进程和线程几乎是一样的,都用task_struct结构体表示。
2、在单处理器上,从来就没有真正的并发执行,那只是错觉,因为人类感知的1秒钟,处理器已经执行了几十,甚至上百的百万指令。