好的,我们知道单个处理器一次可以执行一条指令,这意味着单个处理器可以一次执行操作系统的指令或用户程序的指令。
现在操作系统和用户程序怎么可能在单处理器中同时运行呢?
当您打开程序时,cpu 是否分配给用户程序,而当您关闭用户程序时,cpu 是否分配回操作系统?
时间切片。CPU 每隔几毫秒就会在任务之间切换,因此在观察者看来,它同时在做两件事或多件事。还有一个事实是,操作系统对如何授予线程执行时间有一定的控制权,因此它可以堆叠甲板,但是线程调度超出了我愿意在这个答案中讨论的任何内容。
CPU 将进程作为一个或多个指令线程运行,每个线程代表它自己正在执行的指令(寄存器值等)的“上下文” 。
CPU 将多个线程的指令流水线化到一个队列中,并按顺序执行它们。当来自不同线程的指令到达队列前端时,CPU 执行“上下文切换”以暂停一个线程并执行来自另一个线程的指令。这是必要的,以便 CPU 可以看似同时运行多个线程,并处理CPU 执行其他任务时发生的中断。
您特别提到了操作系统和用户程序。就程序运行时操作系统用户界面保持对用户的响应而言,这就是时间切片,但同样重要的是当程序使用操作系统功能执行任务时会发生什么。正如@Techie007 指出的那样,当操作系统服务完成一半或全部工作时,操作系统和用户程序之间的区别就会缩小。这种模糊比程序链接到系统库以获得功能时更深。当程序使用操作系统调用来执行一个函数时,该函数的实际机器代码作为线程指令流的一部分加载到 RAM 中,因此用户程序线程实际上是在执行操作系统的代码,而不是相反!
归档时间: |
|
查看次数: |
1040 次 |
最近记录: |