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

Linux如何处理线程和进程调度

叶晋
2023-03-14
问题内容

我试图了解Linux如何处理进程调度和线程调度。我读过Linux可以安排进程和线程。

Linux是否具有线程调度程序和进程调度程序?如果是,他们如何合作?


问题答案:

的Linux内核调度器被实际调度的任务,并且这些要么螺纹或(单线程)工艺。

因此,在调度程序的上下文中, 任务task_struct内核内部)是正在调度的事物,可以是某些 内核线程(
例如kworker或)kswapd,多线程进程的某些 用户线程 (例如firefox)或单线程。由 单线程进程bash标识
的单线程进程 (如)。

一个过程是一个非空有限集(有时是单身)的线程共享相同的虚拟地址空间(和其他东西一样文件描述符,工作目录,等等…)。另请参阅凭据(7),功能(7)等…

Linux上的 线程内核线程
(在某种意义上,由内核管理,内核也创建自己的线程),由Linux特定的克隆
syscall(也可用于在Linux上创建进程)创建。将在pthread_create函数可能建于(在Linux上)上述clone内部NPTL和GNU库(其中集成NPTL在Linux上)和MUSL-
libc中。



 类似资料:
  • 问题内容: 如果我们在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内核是否调度线程或进程?由于内核中的进程和线程没有区别,调度程序如何对待它们? 如何确定每个线程的数量?一个。如果为一个进程确定了一个时间量(例如100us),是在该进程的所有线程之间共享该时间吗?或b。每个线程的数量由调度程序决定吗? 注意:问题1和问题2是相关的,可能看起来

  • 我一直在阅读有关多线程的Head First。我对多线程的了解是: 当我们使用Thread类的对象调用start()时,线程将进入可运行状态。因此,所有线程在通过这些线程的对象调用start()后都会进入可运行状态。它是JVM线程调度器,它从可运行状态随机选择线程,使其处于运行状态。进入运行状态后,该特定线程的已确定调用堆栈将被执行。 同样,JVM线程调度器可以通过将线程从运行状态切换到可运行状态

  • 默认情况下,C++容器应该是线程安全的。我必须错误地使用多线程,因为对于此代码: 我得到了:

  • 这就是我试图解决但不确定如何解决的问题:我有一个对象数组(假设大小为100),每个对象都有一些id。 有10个线程将从该数组中读取数据并将其插入数据库。 如何确保数据以递增序列的方式根据员工ID的序列插入数据库。例如: 如果数组中的对象具有员工ID 6、8和4,那么这些对象应该按照员工ID 4、6和8在数据库中的顺序插入数据库。如何为此编写多线程代码? 更新:请忽略数据库部分,如果它令人困惑,我的

  • 问题内容: Java如何确定分配线程或进程的内核?有什么办法可以控制吗?防止两个大线程在同一内核上执行? 基本上,我要问的是有关Java中多线程如何工作或如何在Java中控制它的更多信息。 问题答案: 您不能为特定线程设置处理器关联。但是,如果将程序分为两个进程,则应该能够将这些进程分配给操作系统级别的特定处理器。 http://www.cyberciti.biz/tips/setting-pro