3

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

4

1 回答 1

12

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

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

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

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

于 2013-10-31T23:02:34.577 回答