多线程体系结构中嵌套线程的管理深度

时间:2019-02-06 16:58:48

标签: multithreading operating-system scheduler

我有一个简单的问题。假设您启动一个程序,然后创建5个线程,然后每个线程创建5个线程,然后每个线程创建5个线程。假设他们每个人都在进行各种不同的活动,也就是说,它们不只是并行运行的简单进程的克隆或类似的东西。它们是正在运行的特定于上下文的进程。

问题是所有这些线程是否需要全局/中央管理器,或者是否可以/应该以其他方式完成。

所以你有类似的东西:

|------------ 1
    |________ 1.1
    |   |____ 1.1.1
    |   |____ 1.1.2
    |   |____ 1.1.3
    |   |____ 1.1.4
    |   |____ 1.1.5
    |
    |________ 1.2
    |   |____ 1.2.1
    |   |____ 1.2.2
    |   |____ 1.2.3
    |   |____ 1.2.4
    |   |____ 1.2.5
    |
    |________ 1.3
    |   |____ 1.3.1
    |   |____ 1.3.2
    |   |____ 1.3.3
    |   |____ 1.3.4
    |   |____ 1.3.5
    |
    | ...
    |________ 1.5
        |____ 1.5.1
         ...

因此,在此图中,大约有31个进程,但是如果再添加5个嵌套层,则会得到更多的结果。

我想知道的是来管理流程。看来您可以采用多种不同的方式。以一种方式,您可以让顶级1“主”进程来控制所有嵌套的和深度嵌套的子级。这意味着所有进程都有一个“全局”管理器层。似乎有一个中央管理器,因此可以更轻松地安排/优先处理访问资源的进程。但是,与此同时,它缺乏模块化,不能像现实世界中的多进程那样工作。

但是您也许可以采用其他方式。您可以让每个父节点仅管理其直接后代。从纯洁的角度来看,这是有道理的,因为每个过程仅负责管理其子进程。这是一种分层管理的组织/业务的工作方式。但是我很快就对如何处理顺序体系结构中的调度问题感到困惑。我还没有实现它,所以我不确定它有多难,但是乍一看似乎很难。您可能会遇到1.3.5使用大量资源的情况,但是1.1.1确实需要完成一些处理,而1.2高层也希望完成一些工作。因此,某些中央经理(似乎)必须协调这些流程之间的消息传递,以帮助它们彼此按计划进行。但是,现在我们回到了全球中央经理的第一种情况。所以我不知道如何避免这种情况。

第三种方法可能是每个流程都自行管理。他们有一个中心类型的“注册表”类型的东西,可以在其中标记自己的进度,并且对于该“合同”,他们都以某种公平的方式行事。通过这种方式,实际上没有中央管理器,而是分散式网络。但是,当尝试想象如何在调度和优先级排序期间解决复杂的冲突链/图形时,这似乎也很快变得复杂。我不知所措。

所以我想知道解决这个问题的一般方法是什么。如果是(1)全球中央经理,(2)父母/子女管理,或(3)分散的注册表/自我管理,或者(4)除这些方法外的其他事情。知道了这一点,就可以更清楚地了解如何在诸如JavaScript的顺序体系结构中实现多个线程以进行学习。您将执行1、2或3,并且可能有每个线程都有机会进行处理的线程。我只是无法确定是否需要中央管理人员,所以我想知道健壮系统中的典型方法是什么,以及最佳方法是什么)大致来说。

0 个答案:

没有答案