在操作系统中,线程通常在用户模式或内核模式下处理。各自有哪些优点和缺点?
答案 0 :(得分:0)
用户模式线程在用户模式下由进程中的某些东西调度,并且进程本身是内核调度程序处理的唯一内容。
这意味着您的进程会从CPU获得一定数量的咕噜声,您必须在所有用户模式线程中共享它。
简单的情况,你有两个进程,一个有一个线程,一个有一百个线程。
使用简单的内核调度策略,单线程进程中的线程获得50%的CPU,并且百线程进程中的每个线程各占0.5%。
使用内核模式线程,内核本身可以管理您的线程并独立调度它们。使用相同的简单调度程序,每个线程只需触摸1%的CPU grunt(101个线程共享100%的CPU)。
答案 1 :(得分:0)
用户级线程的一个问题是:如果一个线程阻塞,则整个进程阻塞。 即使其他线程可以运行并且与被阻止的线程无关。对于操作系统,它不知道线程,因此整个过程被阻止。
答案 2 :(得分:0)
从软件开发的角度来看,用户模式和内核模式之间的主要区别在于对系统资源的访问级别。
这里关于用户模式和内核模式的优缺点很少
内核模式
在内核模式下,执行代码对底层硬件具有完整且不受限制的访问权限。它可以执行任何CPU指令并引用任何内存地址。内核模式通常保留给操作系统的最低级别,最受信任的功能。内核模式下的崩溃是灾难性的;他们将停止整个PC。
用户模式
当操作系统运行用户应用程序(例如处理文本编辑器)时,系统处于用户模式。当应用程序请求操作系统的帮助或发生中断或系统调用时,就会发生从用户模式到内核模式的转换。
答案 3 :(得分:0)
在操作系统中,线程通常在用户模式或内核模式下处理。
通常情况下,线程是在内核模式下处理的。
每种产品都有哪些优点和缺点?
从理论上讲,在用户模式下处理线程的优势在于,它避免了在线程需要等待某些东西时(从内核到特权级切换,这可能会相对昂贵),从而避免了从内核切换到内核的成本。实际上,这种“优势”通常不会发生,因为线程无论如何都必须切换到内核,要求内核做线程要等待的所有事情(例如,切换到内核以要求它从文件中读取数据,然后返回到用户空间来阻止/等待,而不是在内核中阻止/等待)。大多;只有在根本不涉及内核的情况下,它才有帮助。只有当用户空间线程在同一进程中与其他线程通信或与其他线程共享锁时,这种情况才会发生。
在内核中处理线程的优点是内核可以正确支持线程优先级。例如,如果您有两个进程都具有一个高优先级线程和一个低优先级线程;然后内核可以确保在可能的情况下将CPU时间分配给高优先级线程(包括在高优先级线程解除阻塞时抢占低优先级线程),因为它知道所有线程;但是用户空间无法做到这一点-一个进程不知道属于另一个进程的线程,因此用户线程会弄错它并破坏性能(一个进程将CPU时间分配给它自己的低优先级线程,而一个进程则将CPU时间分配给它自己的低优先级线程属于不同进程的高优先级线程需要CPU,但没有得到它。)
在内核中处理线程的另一个优点是(特别是对于具有多个CPU的系统)内核可以访问更好的信息,并且可以做出更明智的调度决策。这包括平衡所有CPU的负载(来自任何数量的进程),同时考虑“ CPU拓扑”(NUMA,SMT等;可能包括异构CPU,例如“ big.LITTLE”布置);并在线程优先级,CPU温度和功耗之间进行权衡(例如,如果其中一个CPU变得太热,请降低该CPU的时钟速度以使其冷却并用于低优先级线程,以便获得高优先级的性能)线程不受影响)。