Linux进程和线程任务调度是如何的

发布于 2022-09-11 22:02:04 字数 311 浏览 23 评论 0

看了好久的Linux都没搞懂这个。。。各位帮帮忙

在Linux内核态里面只有task的概念,一个包装task_struct的node结构的红黑树,那么linux如何调度进程、线程的呢?

  1. 是进程和线程都有task_struct结构;还是进程才有task_struct,说调度进程其实是调度进程的主线程,如果是创建的线程可能是复制的task_struct的结构。
  2. 进程是无法运行的,是进程中的主线程才能运行,是这样的么?就相当于进程的创建时会创建一个主线程。如果是这样的,那么可以说linux的调度其实就是调度线程了?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦断已成空 2022-09-18 22:02:04

1.是进程和线程都有task_struct结构;还是进程才有task_struct,说调度进程其实是调度进程的主线程,如果是创建的线程可能是复制的task_struct的结构。

task_struct对应的是线程,内核调度以task_struct为单位。task_struct有字段记录线程的虚拟地址空间。进程和线程是包含的关系。多线程程序中,这些线程属于同一个进程,从task_struct的角度,它们的虚拟地址空间相同而已.

进程是无法运行的,是进程中的主线程才能运行,是这样的么?就相当于进程的创建时会创建一个主线程。如果是这样的,那么可以说linux的调度其实就是调度线程了?

如上一个问题,内核以task_struct作为调度单位。进程创建时实际上也是创建一个线程,也就是一个task_struct,这个线程当然也就是作为该进程的主线程。

通俗点说,把线程比作人,进程就是一个家庭。 内核调度是按人进行的。

绿萝 2022-09-18 22:02:04

别光看内核,多线程编程有关的资料里基本都会提这个
例如 https://blog.csdn.net/mm_hh/a...

linux线程又名轻量级进程,有自身的函数调用堆栈和指令序列,但没有独立的地址空间,
linux内核里并没有截然不同的线程和进程区分

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文