【发布时间】:2014-04-25 17:38:42
【问题描述】:
在我的理解中,抢占式多任务处理是指时间片(例如 1 毫秒时间片)使(操作系统的)调度程序将一个线程传递给 CPU 用于特定的时间跨度(本例中为 1 毫秒),然后切换到另一个线程(执行 1 毫秒,然后切换回第一个线程,依此类推 - 为简单起见,假设只有两个线程)。 参考:https://www.youtube.com/watch?v=hsERPf9k54U
与抢先式多任务相比,优先级的概念 - 操作系统以数字设置应用程序的优先级,例如1 到 39 等,无论基于什么 - 这不是现在的问题。
这样做的好处是,如果一个应用程序挂起,时间切片器只需返回另一个线程(假设该线程属于不同的应用程序,而第一个应用程序已挂起)并继续正常工作。然后您可以关闭被挂起的应用程序。 参考:https://www.youtube.com/watch?v=hsERPf9k54U
现在我不认为这是这种多任务处理的特别优势。在抢占式多任务中应该是一样的吧?
提前谢谢你。
【问题讨论】:
-
抢先式多任务处理是一种将线程与它们可用时所需的资源进行匹配的方法,例如。 CPU、磁盘、网卡、KB、鼠标。大多数此类系统都有一个计时器驱动程序,如果机器因仅等待 CPU 的线程而过载,即可能导致抢占。比核心更多的就绪线程。先发制人的设计不仅仅是为了在就绪线程之间进行“时间片”,它们旨在提供良好的 I/O 性能。如果这样的盒子经常在就绪线程之间进行“时间切片”,那么它就会过载并且运行效率低下。
-
一个基于线程优先级调度的操作也会根据线程没有机会执行的时间动态调整线程的优先级。这解决了优先级反转问题并提供了一种实现循环调度的方法。
-
@HansPassant - 在我们之间,我希望这应该涵盖它。似乎 OP 一直在阅读/查看错误的网站。不足为奇,有这么多:(
-
@MartinJames James 谢谢你,我明白了,虽然有些术语对我来说是新的,因为我没有研究过操作系统,我只是在阅读 java 中的线程。这带来了那个视频,我开始观看它。
-
@HansPassant 谢谢你,我明白了,虽然有些术语对我来说是新的,因为我没有研究过操作系统,我只是在阅读java中的线程。这带来了那个视频,我开始观看它。
标签: multithreading time operating-system