根据video,来自Udacity的入门操作系统课程:
要使用户级线程首先实际执行,它必须与内核级线程相关联。然后,OS级别调度程序必须将该内核级线程调度到CPU上。
根据Remzi H. Arpaci-Dusseau's book (Operating Systems: Three Easy Pieces) in chapter 6:
我们已经描述了一些实现CPU的关键低级机制 虚拟化,一组我们统称为有限的技术 直接执行。基本思路很简单:只需运行程序即可 你想在CPU上运行,但首先要确保设置硬件 以便在没有OS协助的情况下限制流程可以执行的操作。
这种一般方法也适用于现实生活。例如,那些 有孩子的,或者至少听过孩子的,可能是 熟悉婴儿打样房间的概念:锁柜包含 危险的东西和覆盖电源插座。当房间是 这样准备就绪,你可以让宝宝自由地漫游,保证知识 房间最危险的方面受到限制。
以类似的方式,操作系统“婴儿证明”CPU,首先(在 启动时间)设置陷阱处理程序并启动中断计时器, 然后只运行受限模式的进程。通过这样做, 操作系统可以放心,流程可以高效运行,只需要 操作系统干预以执行特权操作或何时执行特权操作 垄断了CPU太长时间,因此需要关闭。
第一个引用声明内核级线程必须与要运行的用户级线程相关联,但根据第二个引用,OS直接执行用户级线程但受到严格控制,没有任何关联。
问题:
1)我是新手Linux用户。对于Linux操作系统,上述哪种方法更正确?
2)是的,有很多关于互联网多线程模型的帖子和链接。但是找不到单个示例代码。你能给一个简单的C代码一对一和多对一的Linux代码吗?