Assembly 基于时间的流程管理是如何实施的

Assembly 基于时间的流程管理是如何实施的,assembly,x86,operating-system,multiprocessing,Assembly,X86,Operating System,Multiprocessing,请问,基于时间的流程管理是如何实施的 cpu如何从内核功能切换到进程?cpu如何切换回来 例如,当时间片耗尽时,cpu如何强制转换回内核函数?在程序中,没有编译开关函数,这是一个中断吗? 我不太明白,请回答我,如果你可以的话。处理伪并行的方法至少和内核的方法一样多 最幼稚的学生实现方式是在一个进程的时间片用完后触发外部中断,可能是由某种计时器(在传统上称为“PIT”(可编程中断计时器)触发的。此时,内核将隐式或显式地进入特权模式,保存当前进程的上下文(即寄存器的内容和虚拟内存信息),加载旧进程的

请问,基于时间的流程管理是如何实施的

cpu如何从内核功能切换到进程?cpu如何切换回来

例如,当时间片耗尽时,cpu如何强制转换回内核函数?在程序中,没有编译开关函数,这是一个中断吗?
我不太明白,请回答我,如果你可以的话。

处理伪并行的方法至少和内核的方法一样多


最幼稚的学生实现方式是在一个进程的时间片用完后触发外部中断,可能是由某种计时器(在传统上称为“PIT”(可编程中断计时器)触发的。此时,内核将隐式或显式地进入特权模式,保存当前进程的上下文(即寄存器的内容和虚拟内存信息),加载旧进程的上下文,更改为“弱势”模式(例如,基于x86的处理器上的环1-3)最后跳到新进程在执行过程中被中断的地方。

处理伪并行性的方法至少和内核的方法一样多


最幼稚的学生实现方式是在一个进程的时间片用完后触发外部中断,可能是由某种计时器(在传统上称为“PIT”(可编程中断计时器)触发的。此时,内核将隐式或显式地进入特权模式,保存当前进程的上下文(即寄存器的内容和虚拟内存信息),加载旧进程的上下文,更改为“弱势”模式(例如,基于x86的处理器上的环1-3)最后跳转到新进程在执行过程中被中断的位置。

通常,在任何类型的中断时,当前正在运行的进程的CPU状态的一部分会被保存(到内存中)。即使运行相当有限的汇编代码,也需要一部分这样的保存,而另一部分会启用一些更正常的,可能是要运行的C代码,可能是设备驱动程序堆栈的一部分。一旦中断被服务,该部分进程的CPU状态被恢复,被中断的进程可以恢复,而不知道中断

在某些中断期间,操作系统调度程序可能会选择恢复与被中断进程不同的进程,如果恢复了,则会保存被中断进程的所有剩余CPU状态,而恢复进程的状态会恢复到CPU中。这大部分是通过正常的CPU指令完成的,如写入(和读取)寄存器(来自)记忆

切换进程需要额外的努力来保存和恢复CPU上下文,但对于备用进程,处理器缓存也是冷的-因此,性能方面的最佳选择是恢复中断的进程。但是,计划程序可以选择切换进程(上下文切换)如果,高优先级进程的I/O现在已准备好使用,或者,如果当前进程在CPU中占有公平份额,则按时间顺序,并且还有其他同等优先级的进程要运行

硬件工程师将基本机制称为异常处理,它包括软件引起的异常(陷阱/系统调用,除以零)以及访问冲突(页面错误、空指针取消引用、写时复制),和设备中断,包括计时器和设备或I/O就绪信号。这是内置在处理器中的自动机制,它可以对运行进程进行最基本的中断,并将控制权转移到操作系统中断服务例程

此处理器机制决定哪条指令未完成(即中断),并完成所有先前的指令,取消所有后续指令,然后将指令流的控制转移到中断服务例程,为其提供有关中断的一些最小状态,其中包括中断原因和中断进程的程序计数器/指令指针,因为这是ge通常通过将控制权转移到ISR来消除。此后,软件的任务是保存中断进程的任何额外CPU状态,并处理异常,无论是由运行进程引起的还是由外部触发的。处理器还有一种机制(通常称为中断返回的指令)它可以恢复恢复用户进程所需的最后一点状态,这可以通过软件来增强,以恢复任何进程


硬件作为中断进程的上下文保存的内容与软件的责任之间的分工在处理器之间差异很大。在x86上,硬件保存的上下文比严格意义上的最小值要多,这使得一些新的x86 CPU可以在不了解它们的操作系统上运行。在其他处理器上硬件的功能更严格地说是最小的,软件必须完成其余的工作。

通常,在任何类型的中断中,当前运行进程的CPU状态的一部分会被保存(到内存中)。即使要运行相当有限的汇编代码,也需要节省一定数量的内存,而另一部分则允许运行一些更正常的,可能是C代码,可能是设备驱动程序堆栈的一部分。一旦中断得到服务,该部分进程的CPU状态将恢复,中断的进程可以恢复,而不知道中断开

在某些中断期间,OS调度器可能会选择恢复与中断进程不同的进程,如果选择恢复,则会保存中断进程的所有剩余CPU状态,而要恢复的进程状态会恢复到CPU中。这大部分是通过正常的CPU指令完成的,如