Ram*_*imi 5 java concurrency multithreading scheduling real-time
我正在打开这些问题,因为我找不到易于理解的有关此主题的摘要信息.甚至没有一个好的YouTube视频可以解释这一点.
我目前正在研究实时编程,静态和动态调度是其中的一部分.我似乎无法理解它.
如果有人能够以教育方式解释静态和动态调度的优缺点,那将非常有帮助.
到目前为止我得到的是以下内容:
静态调度:是一种手动生成调度的离线方法.它可以在运行时修改,但不建议,因为它可能导致线程错过它的截止日期.它易于实施和分析.因为它易于分析,所以很容易看出系统是否会完成所有截止日期.
动态调度:是一种自动生成调度的在线方法.它可以在运行期间被系统修改,并且不应该导致(在大多数情况下)线程错过最后期限.如果系统更改,则很容易生成新的计划,因为它是自动生成的.无法保证系统满足所有截止日期.
谁能解释这两个比我好一点?或者可能添加有关这两者的更多信息.也许用图像来说明它,这样就可以更容易地绕过它.
简单来说,
静态调度是一种机制,我们已经控制了线程/进程在代码中执行的顺序/方式(编译时).如果您在程序中的线程上使用了任何控件(锁,信号量,连接,休眠)(以实现某些目标),那么您打算使用静态(编译时)调度.
动态调度是一种机制,其中线程调度由操作系统基于在OS级别中实现的任何调度算法来完成.所以线程的执行顺序将完全依赖于该算法,除非我们对它进行了一些控制(使用静态调度).
我认为"优势"这个词并不是这里最好的术语.简单地说,当您使用代码实现对线程的任何控制以实现某些任务时,您应确保使用最少的控件并以最优化的方式使用.:))
加成:
静态和动态调度的比较
通常,我们永远不会有完全依赖于静态或动态调度之一的计算机程序.
相反,我们会有一些程序几乎可以从代码本身控制(强静态).这将是一个很好的例子.
有些程序会强烈动态(弱静态).这将是一个很好的例子.在那里你可能会看到除了2个线程的开始之外,程序执行的其余部分将是一个免费的传单.
请不要试图找到一个免责声明的标准,这个标准会将程序密封为强静态或强烈动态的程序.:))
积极与否定
动态调度调度的执行速度比静态调度快,因为它基本上是一个免费的传单,没有任何有意的等待,连接等(线程之间的任何类型的同步/保护).
动态调度是不知道任何的线程依赖(safeness,同步等).如果你按照我提到的上述来源,你可能会有这个想法.
因此,一般来说,多线程程序员的优秀程度取决于您在线程上实现的限制,依赖性和瓶颈有限,以便成功完成任务.:))
我想我已经涵盖了很多东西.如果有的话,请提出我的问题.:))
| 归档时间: |
|
| 查看次数: |
6925 次 |
| 最近记录: |