什么是一对一映射?多对一的映射?多对多映射?
这些用户/内核映射是什么?它对系统有什么影响?
答案 0 :(得分:4)
多对一将许多用户级线程映射到一个内核线程。 一对一将一个用户级线程映射到一个内核线程。 多对多映射将许多用户级线程映射到许多内核线程。
多对一由用户空间中的线程库管理,因此效率很高;但是如果一个线程进行阻塞系统调用,整个进程将阻塞。此外,由于一次只能有一个线程访问内核,因此多个线程无法在多处理器上并行运行。
通过在进行阻塞系统调用时允许另一个线程运行,一对一提供更多的并发性,即多对一模型;它还允许多个线程在多处理器上运行。这个模型的唯一缺点是创建用户线程需要创建相应的内核线程,因为创建许多内核线程会使系统负担过重,大多数实现限制了可以创建的内核线程数。
多对多是最稀有的实现,它将许多用户级线程多路复用到许多内核线程。理论上它应该提供最好的并发性,但是没有获得真正的并发性,因为内核一次只能安排一个线程。开发人员可以根据需要创建任意数量的用户线程,相应的内核线程可以在处理器上并行运行。此外,在执行阻塞调用时,内核可以调度另一个线程来执行。
答案 1 :(得分:4)
从我在OS课程中的笔记作为作业的答案。我希望它有所帮助。
多对一
由于所有线程控制结构都存在于其中 单个进程的可寻址内存,在它们之间切换 线程不需要上下文切换,因此速度很快。
它们比基于内核线程更灵活 实现,因为它们给应用程序级别 程序员控制线程调度的能力。该 程序员可能对行为有更多的了解 应用程序,因此可以更多地调度线程 比OS内核更有效。
一对一
在这个模型中,操作系统知道每个线程和 如果特定线程阻塞,可以安排另一个。操作系统 无法在多对一模型中执行此操作。
多个线程可以在多处理器上并行执行 系统
多对多
与一对一模型一样,操作系统也知道 每个线程,如果一个特定的线程可以安排另一个 块。
一对一模式的危险在于,如果太多 创建线程,创建进程/线程的开销, 进程/线程销毁和上下文切换可以 超过线程的任何并发优惠。该 多对多模型使应用程序程序员从中解放出来 担心任何此类限制的数量 线程。在创建线程应用程序时, 程序员只需创建所需的线程, 然后操作系统将它们分配给一些较小的 根据自己的标准处理的数量。
作为参考check this out