我正在打开这些问题,因为我找不到易于理解的有关此主题的摘要信息。甚至没有一个好的YouTube视频可以解释这一点。
我目前正在研究实时编程,统计和动态调度是其中的一部分。我似乎无法理解它。
如果有人能够以教育方式解释统计和动态调度的优缺点,那将非常有帮助。
到目前为止我得到的是以下内容:
谁能解释这两个比我好一点?或者可能添加有关这两者的更多信息。也许用图像来说明它,这样就可以更容易地绕过它。
简单来说,
静态调度是一种机制,我们已经控制了线程/进程在代码中执行的顺序/方式(编译时)。如果您在程序中的线程上使用了任何控件(锁,信号量,连接,休眠)(以实现某些目标),那么您打算使用静态(编译时)调度。
动态调度是一种机制,其中线程调度由操作系统基于OS级别中实现的任何scheduling algorithm完成。所以线程的执行顺序将完全依赖于该算法,除非我们对它进行了一些控制(使用静态调度)。
我认为“优势”这个词并不是这里最好的术语。简单地说,当您使用代码实现对线程的任何控制以实现某些任务时,您应确保使用最少的控件并且还以最优化的方式使用。 :))
加成:
静态和动态调度的比较
通常,我们永远不会有完全依赖于静态或动态调度之一的计算机程序。
相反,我们会有一些程序几乎可以从代码本身控制(强静态)。 This就是一个很好的例子。
有些程序会强烈动态(弱静态)。 This就是一个很好的例子。在那里你可能会看到除了2个线程的开始之外,程序执行的其余部分将是一个免费的传单。
请不要试图找到一个免责声明的标准,这个标准会将程序密封为强静态或强烈动态的程序。 :))
积极与否定
我想我已经涵盖了很多东西。如果有的话,请提出我的问题。 :))
动态调度 -
o主要优点(PRO): - 允许在编译时处理未知依赖的情况 - 简化编译器 - 允许编译的代码在不同的管道上高效运行
o缺点(CON): - 硬件复杂性显着增加 - 功耗增加 - 可能产生不精确的异常
在静态调度期间,一个或多个线程的顺序已由编译器控制。所以它发生在编译时。这里如果存在涉及内存的数据依赖性,则在编译时不会解决或识别它,因此引入了动态调度的概念。
动态调度也决定了执行的顺序,但硬件在这里而不是编译器。