1

我有一个任务,包括创建一个用户级线程包。我通读了这个帖子,它回答了我的很多问题。但是,我仍然对一些事情感到困惑......

首先,我无法理解如何在没有 pthread 库的情况下实际创建用户级线程......我有一个线程结构,它考虑了堆栈、堆栈指针、线程 ID 和线程状态。我猜这是一个简单的任务,但我无法理解线程是如何在当前进程中“创建”的。

我遇到的另一个问题涉及线程如何传递给调度程序。我实现了一个循环调度程序,以及一个每 100 毫秒处理一次中断以检查线程状态的信号处理程序。但是调度程序是如何知道线程的呢?

我觉得我错过了一个用户级线程的概念,这使我无法理解线程的创建和操作。

请帮帮我!提前致谢!

4

1 回答 1

1

可以以不同的方式创建用户级线程。其中之一是通过context switching。将有一个单一的过程,我们以一种round-robin方式改变上下文。

我们在每个短时间间隔后将上下文更改为某个不同的线程。尽管它是单个进程,但快速切换使其看起来好像它们是并行运行的。

为了使调度成为可能,我们需要跟踪当前运行的所有线程。当发生中断时,将执行的相应例程包含将当前context线程与下一个线程交换的代码。以这种方式处理调度。

更多关于这在我的博客:)

于 2013-10-18T17:43:28.417 回答