【问题标题】:What are the mappings of user to kernel?用户到内核的映射是什么?
【发布时间】:2011-02-16 01:05:19
【问题描述】:

什么是一对一映射?多对一映射?多对多映射?

这些用户/内核映射是什么?对系统有什么影响?

【问题讨论】:

  • 听起来像是考试中的作文题。也就是说,在这里期待任何真正的答案太模糊了。

标签: operating-system mapping kernel


【解决方案1】:

多对一将许多用户级线程映射到一个内核线程。 一对一将一个用户级线程映射到一个内核线程。 多对多将许多用户级线程映射到许多内核线程。

多对一由用户空间中的线程库管理,因此效率很高;但是如果线程进行阻塞系统调用,整个进程将阻塞。此外,由于一次只有一个线程可以访问内核,因此多个线程无法在多处理器上并行运行。

一对一通过在进行阻塞系统调用时允许另一个线程运行,提供了比多对一模型更多的并发性;它还允许多个线程在多处理器上运行。此模型的唯一缺点是创建用户线程需要创建相应的内核线程,因为创建许多内核线程会使系统负担过重,大多数实现都会限制可以创建的内核线程的数量。

多对多是最罕见的实现,它将许多用户级线程多路复用到许多内核线程。理论上它应该提供最好的并发性,但并没有获得真正的并发性,因为内核一次只能调度一个线程。开发人员可以根据需要创建尽可能多的用户线程,并且相应的内核线程可以在处理器上并行运行。此外,在执行阻塞调用时,内核可以调度另一个线程来执行。

【讨论】:

    【解决方案2】:

    从我在操作系统课上的笔记中作为作业的答案。希望对你有帮助。

    多对一

    1. 由于所有线程控制结构都存在于 单个进程的可寻址内存,在 线程不需要上下文切换,因此速度很快。

    2. 它们比基于内核线程的更灵活 实现,因为它们提供了应用程序级别 程序员控制线程调度的能力。这 程序员可能对行为有更多的了解 应用程序,因此可以调度线程更多 比操作系统内核更有效。

    一对一

    1. 在这个模型中,操作系统知道每个线程和 如果特定线程阻塞,可以安排另一个。操作系统 在多对一模型中无法做到这一点。

    2. 多个线程可以在多处理器上并行执行 系统。

    多对多

    1. 与一对一模型一样,操作系统知道 每个线程,如果一个特定的线程可以调度另一个 块。

    2. 一对一模型的一个危险是,如果太多 创建线程,进程/线程创建的开销, 进程/线程破坏和上下文切换可能 超过线程的任何并发优势。这 多对多模型将应用程序程序员从 担心对数量的任何此类限制 线程。在创建线程应用程序时, 程序员只需根据需要创建尽可能多的线程, 然后操作系统将它们分配给一些较小的 进程数根据自己的标准。

    作为参考check this out

    【讨论】:

    • +1,纯粹是为了参考恐龙书。鲍比,你应该读这本书!
    猜你喜欢
    • 1970-01-01
    • 2011-09-16
    • 2014-01-14
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    相关资源
    最近更新 更多