我的理解是,用户模式下的线程通常更便宜,并且不需要系统调用。为什么在多核机上不可接受?
线程不需要系统调用,但这并不意味着他们无法拨打系统调用。
在用户模式库中实现线程的两个基本问题:
- 当系统调用块
时会发生什么如果用户模式线程发出阻止的系统调用(例如打开或读取(,则该过程被阻止,直到该操作完成为止。这 意味着当线程块时,所有线程(在该过程中( 停止执行。由于线程是在用户模式中实现的 操作系统不知道它们,也不知道其他 线程(在此过程中(仍然可以运行。
- 利用多处理器
如果CPU具有多个执行核,则操作系统可以安排每个操作系统以并行运行。但是如果运行 系统不知道一个过程由多个线程组成, 这些线程无法在可用的内核上并行执行。
如果操作系统而不是用用户模式线程库实现线程,则可以解决这两个问题。
从这里取。