操作系统如何获得进程切换
How operating system obtain process switching
操作系统如何获取进程切换。我想更笼统地谈谈它。我们处于多任务处理时代,我知道一些基本概念,即有一些调度程序可以权威地指出现在哪个进程将 运行。我的问题更多处理器如何保证某个进程将消耗 X 时间然后执行下一个进程。是否有任何低级机制可以在特定时间后中断进程?或者它是某种实现它的抽象方法?
是否可以在没有特殊处理器帮助的情况下实现中断当前任务并将执行切换到另一个任务的功能?如果不是,我们需要什么来实现它。假设我想在像 Atmega8 这样的一些简单的 uC 中实现类似的东西(它只是 uC 的例子,我们可以使用其他的,来自其他系列)
Google 'interrupts'。对于现代抢占式内核,来自 运行ning threads/processes 的系统调用以及导致驱动程序 运行 的硬件中断是可以驱动 OS 内核调度状态机和因此 processes/threads 的集合将 运行 接下来是可用的核心。
在许多 OS 设计中,尤其是在有限的硬件上,没有 'processor guarantee that some process will consume X time' 这样的东西。其他人在调度程序中内置了反饥饿算法。
还有其他调度算法寻求提供保证,但面对 I/O 完成事件时系统调用和硬件中断的冲突需求,这是非常困难的
有两种方法(我能想到)可以导致上下文切换:
1) process/thread 产量。这往往是上下文切换的最常见原因。线程排队和 I/O 请求并等待响应。等待导致 thread/process 屈服。
2) 定时器,如上所述。在计算密集型进程(所有处理,无 I/O,无页面错误)的情况下,CPU 计时器生成在内核模式下处理的中断。操作系统将有一组内务处理任务来执行定时器中断。其中之一是查看当前过程是否超出其量程。如果是这样,并且有另一个进程以更高的优先级准备就绪,请执行上下文切换。
操作系统如何获取进程切换。我想更笼统地谈谈它。我们处于多任务处理时代,我知道一些基本概念,即有一些调度程序可以权威地指出现在哪个进程将 运行。我的问题更多处理器如何保证某个进程将消耗 X 时间然后执行下一个进程。是否有任何低级机制可以在特定时间后中断进程?或者它是某种实现它的抽象方法?
是否可以在没有特殊处理器帮助的情况下实现中断当前任务并将执行切换到另一个任务的功能?如果不是,我们需要什么来实现它。假设我想在像 Atmega8 这样的一些简单的 uC 中实现类似的东西(它只是 uC 的例子,我们可以使用其他的,来自其他系列)
Google 'interrupts'。对于现代抢占式内核,来自 运行ning threads/processes 的系统调用以及导致驱动程序 运行 的硬件中断是可以驱动 OS 内核调度状态机和因此 processes/threads 的集合将 运行 接下来是可用的核心。
在许多 OS 设计中,尤其是在有限的硬件上,没有 'processor guarantee that some process will consume X time' 这样的东西。其他人在调度程序中内置了反饥饿算法。
还有其他调度算法寻求提供保证,但面对 I/O 完成事件时系统调用和硬件中断的冲突需求,这是非常困难的
有两种方法(我能想到)可以导致上下文切换:
1) process/thread 产量。这往往是上下文切换的最常见原因。线程排队和 I/O 请求并等待响应。等待导致 thread/process 屈服。
2) 定时器,如上所述。在计算密集型进程(所有处理,无 I/O,无页面错误)的情况下,CPU 计时器生成在内核模式下处理的中断。操作系统将有一组内务处理任务来执行定时器中断。其中之一是查看当前过程是否超出其量程。如果是这样,并且有另一个进程以更高的优先级准备就绪,请执行上下文切换。