启动时多线程?

时间:2013-10-31 21:39:33

标签: c++ c assembly concurrency native

我们正在开发一个非常低级的应用系统,它在操作系统启动之前运行,实际上是一个启动应用程序 问题是我们应该如何利用CPU核心/线程? 我们将运行多少线程?
有可能吗?!有没有链接/教程?

1 个答案:

答案 0 :(得分:12)

由于您正在讨论在启动操作系统之前线程,我将假设您还没有可用的内核。这意味着没有系统调用,所以没有fork()或clone()。然而,出于这个答案的目的,我还假设您已经设置了A20门,GDT,受保护(用于IA-32)或长(用于x86-64)模式,等等上。如果您不知道这些是什么,我们可能不应该在开始之前讨论线程。

您可以使用操作码和技巧让您的处理器使用其他内核,从而直接实现线程化。你可以在英特尔x86中找到所有这些东西(你正在使用x86,是吗?如果你使用不同的架构,你显然需要一套不同的手册)手册:http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-manual-325462.pdf

坦率地说,没有类似这样的教程的原因是它不是很有用。在将内核加载到内存之前设置的整个过程就是让更容易将内核加载到内存中。线程并不完全有助于实现这一目标。简单地让内核处理这种低级实现要求是可取的,这样你就可以使用fork()和clone()系统调用来满足你所有的线程需求。

编辑:Sinn的良好修正:fork()创建一个新进程,当然实际上并不是线程。