当前位置: 首页 > 面试题库 >

linux是否调度进程或线程?

漆雕深
2023-03-14
问题内容

在阅读了这样的问题之后,我有了一些疑问。请帮助理解。

调度涉及确定何时运行流程以及运行时间的多少。

  1. linux内核是否调度线程或进程?由于内核中的进程和线程没有区别,调度程序如何对待它们?

  2. 如何确定每个线程的数量?一个。如果为一个进程确定了一个时间量(例如100us),是在该进程的所有线程之间共享该时间吗?或b。每个线程的数量由调度程序决定吗?

注意:问题1和问题2是相关的,可能看起来相同,但只是想弄清楚事情的进展方式,请在此处将它们都贴上。


问题答案:

Linux调度程序(至少在最新的Linux内核(例如3.0)上)正在调度 可调度任务 或仅 调度 任务

任务可能是:

  • 单线程进程(例如,由fork不带任何html" target="_blank">线程库的进程创建)
  • 多线程进程内的任何线程(包括其主线程),特别是Posix线程(pthread)
  • 核心任务,这是在内核土地内核和住宿内部开始(例如kworkernfsiodkjournaldkauditdkswapd等等…)

换句话说,多线程进程内部的线程的调度方式类似于非线程(即单线程)进程。

低级clone(2)
syscall创建用户级可调度任务(并且可用于创建fork-ed进程或用于实现线程库,如 pthread
)。除非您是低级线程库实现者,否则您不希望clone直接使用它。

AFAIK,对于多线程进程,内核(几乎)不是在调度进程,而是内部的每个线程(包括主线程)。

实际上,在调度中有一些线程组和相似性的概念,但是我不太了解它们

如今,处理器通常具有多个内核,并且每个内核都正在运行一个任务(在某个给定的瞬间),因此您确实有多个并行运行的任务。

CPU量子时间分配给任务,而不是分配给进程



 类似资料:
  • 问题内容: 如果我们在Linux上使用默认调度策略创建pthreads(pthread_create)或进程(fork),那么调度程序在调度进程和线程时会优先处理优先级相同的进程和线程吗? 假设有一个进程P1有一个线程,有进程P2有2个线程T1 T2 可以说只有一个核心..调度将是P1 T1 P1 T2 P1 T1 P1 T2 要么 P1 T1 T2 P1 T1 T2 问题答案: Linux不再计

  • 问题内容: 我试图了解Linux如何处理进程调度和线程调度。我读过Linux可以安排进程和线程。 Linux是否具有线程调度程序和进程调度程序?如果是,他们如何合作? 问题答案: 的Linux内核调度器被实际调度的任务,并且这些要么螺纹或(单线程)工艺。 因此,在调度程序的上下文中, 任务 (内核内部)是正在调度的事物,可以是某些 内核线程( 例如或),多线程进程的某些 用户线程 (例如)或单线程

  • 调度器 调度器的算法有许多种,我们将它提取出一个 trait 作为接口 os/src/algorithm/src/scheduler/mod.rs /// 线程调度器 /// /// 这里 `ThreadType` 就是 `Arc<Thread>` pub trait Scheduler<ThreadType: Clone + Eq>: Default { /// 优先级的类型 t

  • 问题内容: 您如何告诉Linux中的线程调度程序不因任何原因中断您的线程?我正在用户模式下编程。简单地锁定互斥锁是否可以完成此操作?我想防止执行某些功能时调度进程中的其他线程。它们会阻塞,我会用上下文切换浪费CPU周期。我希望任何执行该功能的线程都能够完成执行而不会中断,即使超出了线程的时间片。 问题答案: 您如何告诉Linux中的线程调度程序不因任何原因中断您的线程? 无法真正完成,您需要一个实

  • 问题内容: 我知道“线程”的含义,并且如果我将事件分发线程(EDT)理解为“只是一个线程”,它可以解释很多,但是显然,它并不能解释所有内容。 我不了解此线程有什么特别之处。例如,我不明白为什么要在EDT中启动GUI?为什么“主”线程是GUI的床?好吧,如果我们只是不想占用主线程,为什么为什么不能仅在“另一个线程”中启动GUI,为什么它应该是一些称为“ EDT”的“特殊”线程呢? 那我不明白为什么我

  • 主要内容:1 Java 线程调度程序,2 抢占式调度与时间片调度的区别1 Java 线程调度程序 Java中的线程调度程序是JVM(Java虚拟机)的一部分,它决定应该运行哪个线程。 我们无法保证线程调度程序将会选择哪个线程来运行。 一次只能在一个进程中运行一个线程。线程调度程序主要使用抢占式或时间片调度来调度线程。 2 抢占式调度与时间片调度的区别 在抢占式调度下,最高优先级的任务会一直执行,直到进入等待状态或死机状态或存在更高优先级的任务为止。 在时间分片调度下