Operating system 在多任务系统中,进程如何将控制权返回给任务管理器?

Operating system 在多任务系统中,进程如何将控制权返回给任务管理器?,operating-system,multitasking,Operating System,Multitasking,只是一个简单的问题:在一个单任务系统中,操作系统将smt复制到内存中,然后“转到”那个里的某个地方,然后程序将控制权返回给任务管理器。但在多任务操作系统中,我们只需在过程中进行几步,然后返回任务管理器等待轮到自己。如果没有“goto”和“ret”,我们如何“转到任务管理器” (我唯一想到的是,CPU中出现了一些奇怪的中断,如“发出一条指令”)有两种主要类型的多任务系统。合作和先发制人 在协作系统中,每个任务都被赋予控制权,然后期望运行一段时间。然后,它必须自动将控制权返回给调度程序。这可以通过运

只是一个简单的问题:在一个单任务系统中,操作系统将smt复制到内存中,然后“转到”那个里的某个地方,然后程序将控制权返回给任务管理器。但在多任务操作系统中,我们只需在过程中进行几步,然后返回任务管理器等待轮到自己。如果没有“goto”和“ret”,我们如何“转到任务管理器”


(我唯一想到的是,CPU中出现了一些奇怪的中断,如“发出一条指令”)

有两种主要类型的多任务系统。合作和先发制人

在协作系统中,每个任务都被赋予控制权,然后期望运行一段时间。然后,它必须自动将控制权返回给调度程序。这可以通过运行一个调度函数来完成,也可以通过调用yield()函数来完成。通过执行不产生响应的任务,可以使系统无响应


在抢占式系统中,调度器通过执行时间切片和/或任务优先级来保持对任务运行内容和运行时间的完全控制。强制本身通常由系统时钟触发,该时钟以某个固定速率生成中断。由于这种特性,使系统无响应变得更加困难,但仍然可能通过优先级反转或资源死锁来实现。

这是通过中断实现的。以下是我曾经发布的一个关于实时操作系统vxWorks如何重新获得控制并安排一项可能有帮助的新任务的答案:谈论“返回”,你应该真正尝试这个
编辑
按钮,并修复你问题中的许多拼写错误。@indiv非常感谢。真的很有趣。@ring0,这样更好吗?它在其他操作系统中的工作方式是否相同?还有一个常见的问题。