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

Multithreading 在多线程体系结构中管理嵌套线程的深度,multithreading,operating-system,scheduler,Multithreading,Operating System,Scheduler,我有个简单的问题。假设您启动一个程序,然后创建5个线程,然后每个线程创建5个线程,然后每个线程创建5个线程。假设他们每个人都在做各种不同的活动,也就是说,他们不仅仅是并行运行的简单流程的克隆或其他东西。它们是正在运行的特定于上下文的进程 问题是,您是否需要为所有这些线程提供一个全局/中央管理器,或者是否可以/应该采用不同的方式 所以你有这样的想法: |------------ 1 |________ 1.1 | |____ 1.1.1 | |____ 1.1.2

我有个简单的问题。假设您启动一个程序,然后创建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
“main”进程管理所有嵌套和深度嵌套的子进程。这意味着所有流程都有一个“全局”管理层。因为有一个中央管理器,所以这似乎可以更容易地安排/优先排序哪些流程可以访问资源。然而,与此同时,它缺乏模块化,不像现实世界中的多进程系统

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

第三种方法可能是每个流程都自行管理。他们有一个中心类型的“注册”类型的东西,在那里他们可以标记他们的进展,并且他们都以某种公平的方式对待“合同”。这样一来,就没有真正的中央管理者,更不用说分散的网络了。但是,当您试图想象如何在调度和优先级排序期间解决复杂的冲突链/图时,这似乎很快变得复杂。我被它压倒了


所以我想知道解决这个问题的一般方法是什么。如果是(1)全局中央管理器,(2)父/子管理,或(3)分散注册/自我管理,或(4)除这些方法之外的其他方法。了解了这一点,就可以更清楚地了解如何在顺序体系结构(如JavaScript)上实现多线程,以便进行学习练习。您可以执行1、2或3,并且每个线程都有机会进行处理。我只是不知道它是否需要一个中央管理器,所以我想知道在一个健壮的系统中典型的方法是什么,粗略地说,最好的方法是什么。

有趣的问题,但它只能由操作系统开发人员来回答。在“普通”操作系统和实时操作系统中,它的处理方式可能有所不同。这是一个有趣的问题,但只能由操作系统开发人员来回答。在“普通”操作系统和实时操作系统中,它的处理方式可能有所不同。