我的作业包括创建用户级线程包。 我通过this线程阅读,它回答了我的很多问题。 但是,我仍然对一些事情感到困惑......
首先,我无法理解如何在没有pthread库的情况下实际创建用户级线程... 我有一个线程结构,它考虑了堆栈,堆栈指针,线程ID和线程状态。我猜这是一个简单的任务,但我不能完全理解线程如何在当前进程中“创建”。
我遇到的另一个问题是如何将线程传递给调度程序。我实现了一个循环调度程序,以及一个每隔100ms处理一次中断以检查线程状态的信号处理程序。但是调度程序如何识别线程?
我觉得我错过了用户级线程的概念,这使我无法理解线程创建和操作。
请帮帮我!提前谢谢!
答案 0 :(得分:1)
可以以不同方式创建用户级线程。其中一个是通过context switching
。将有一个进程,我们以round-robin
方式更改上下文。
我们在每个短时间间隔后将上下文更改为某个不同的线程。虽然它是一个单一过程,但快速切换使它看起来好像是并行运行。
为了使调度成为可能,我们需要跟踪当前正在运行的所有线程。发生中断时,将执行的相应例程包含将当前context
与下一个线程交换的代码。以这种方式处理调度。
关于我blog的更多信息:)