Operating system 用户到内核的映射是什么?

Operating system 用户到内核的映射是什么?,operating-system,mapping,kernel,Operating System,Mapping,Kernel,什么是一对一映射?多对一映射?多对多映射 这些用户/内核映射是什么?它对系统有什么影响?多对一将多个用户级线程映射到一个内核线程。 一对一将一个用户级线程映射到一个内核线程。 多对多将多个用户级线程映射到多个内核线程 多对一由用户空间中的线程库管理,因此非常高效;但是,如果线程进行阻塞系统调用,整个进程将被阻塞。此外,由于一次只能有一个线程访问内核,因此多个线程无法在多处理器上并行运行 一对一通过在进行阻塞系统调用时允许另一个线程运行,提供了比多对一模型更多的并发性;它还允许多个线程在多处理器上

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


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

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

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

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


多对多是最少见的实现,它将多个用户级线程多路复用到多个内核线程。理论上,它应该提供最佳的并发性,但由于内核一次只能调度一个线程,因此无法获得真正的并发性。开发人员可以根据需要创建任意多的用户线程,并且相应的内核线程可以在处理器上并行运行。此外,在执行阻塞调用时,内核可以安排另一个线程执行

来自我在OS课堂上的笔记,作为作业的答案。我希望有帮助

多对一

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

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

  • 一对一

  • 在这个模型中,操作系统知道每个线程和 如果某个特定线程阻塞,则可以安排另一个线程。操作系统 无法在多对一模型中执行此操作

  • 多线程可以在多处理器上并行执行 系统

  • 多对多

  • 与一对一模式一样,操作系统知道 每个线程都可以调度另一个线程(如果是特定线程) 街区

  • 一对一模式的一个危险是如果太多 创建线程时,进程/线程创建的开销, 进程/线程破坏和上下文切换可能会导致 超过线程的任何并发好处。这个 多对多模型将应用程序程序员从 担心在数量上有任何这样的限制 线程。创建线程化应用程序时 程序员只需创建所需数量的线程, 然后操作系统将它们分发给一些较小的用户 根据其自身标准的过程数量


  • 作为参考

    听起来像是考试中的一道作文题。也就是说,这里的答案太模糊了,无法期待任何真正的答案。鲍比,你应该读这本书!