单个处理器如何同时执行操作系统和用户程序?

时间:2017-01-09 13:58:05

标签: operating-system

好的,因为我们知道单个处理器可以同时执行一条指令,这意味着单个处理器可以同时执行操作系统的指令或用户程序的指令。

现在,如何在单处理器中同时运行操作系统和用户程序?

打开程序时是否将cpu分配给用户程序,当您关闭用户程序时,cpu被分配回操作系统?

3 个答案:

答案 0 :(得分:3)

基本上,不可能同时在单个处理器内核上运行两个线程。但是,系统可以通过交换CPU上的线程来假装这样做。基本上有两种方法可以做到这一点。合作和抢占式多任务处理。

在Windows 3的时代,CPU只有一个核心(我确定一些昂贵的大型机器有更多而不是普通人不得不看到的)。 Windows 3它没有中断进程。发生的事情是流程必须定期放弃对操作系统的控制。然后操作系统将在稍后的时间再次继续该过程。这种模式称为协同多任务处理。

合作多任务有一点问题。如果进程无法放弃对操作系统的控制(通常是由于错误),它基本上会占用系统资源,系统需要重新启动。这就是为什么当Windows 95发布时微软转而使用先发制人的多任务处理模式。

通过先发制人的多任务处理,硬件允许操作系统在将来设置中断(如何完成此操作因硬件系统而异)。这意味着操作系统可以保证重新使用CPU。当它这样做时,它会存储正在运行的线程的状态(主要是CPU寄存器),然后加载另一个。这意味着操作系统始终具有控制权,因为它不依赖于放弃控制的过程。

我确定其他操作系统在Windows 95之前使用先发制人的多任务处理,但是它确实将它带到了PC上的主流。

答案 1 :(得分:1)

这称为Preemption或时间切片

简单来说:

有多线程CPU可以管理多个线程(指令)

但即使这样还不够。 CPU必须分割工作负载,它通过暂停一个线程(称为中断)和处理另一个线程来完成此任务。

普通计算机可能会运行 个线程,但只有4个CPU核心(一次只能运行4个线程)

它是如何做到的?

有些CPU一次只能运行4个线程,要管理所有其他数千个线程,它必须暂停线程并在另一个线程上工作并暂停并在另一个线程上工作,这称为 < em>时间切片 时间不是唯一的因素,优先事项和用法也发挥作用。 CPU非常快,可以用&lt; 1ms的

编辑:&#34;系统中断&#34;管理这一切的是什么,它不是真正的意义上的过程,但这个窗口是控制所有线程执行的东西

enter image description here

答案 2 :(得分:1)

以下是一个简单的解释:http://doc.qt.io/qt-5/thread-basics.html

  

那么如何实现并发?并行处理单核CPU   是一种幻觉,有点类似于移动的错觉   电影中的图像。对于过程,幻觉产生于   在很短的时间后中断处理器在一个进程上的工作   时间。然后处理器继续进行下一个过程。为了   在进程之间切换,保存当前程序计数器   下载处理器的程序计数器已​​加载。