本文介绍: 内核根据线程优先级调度策略来确定下一个执行线程内核维护一个调度队列,其中包含所有可运行runnable状态线程。当一个CPU核心空闲时,内核调度队列选择最高优先级线程,并将其分配给该核心。线程被放入正在运行running状态,并在该CPU上执行一段时间,直到发生某种事件例如时间片用完、等待I/O、睡眠等)导致它进入阻塞blocked)或睡眠(sleeping状态。如果一个线程进入阻塞或睡眠状态内核会将其移出运行队列,并选择一个运行的线程继续执行。

1.自我介绍介绍你的背景教育经历,特别强调与嵌入式系统相关学习项目经验)

2.linux中的线程一般是怎么调度的?

  1. 内核根据线程的优先级调度策略来确定下一个要执行的线程。
  2. 内核维护一个调度队列,其中包含所有可运行runnable状态的线程。
  3. 当一个CPU核心空闲时,内核从调度队列选择最高优先级的线程,并将其分配给该核心
  4. 线程被放入正在运行(running状态,并在该CPU上执行一段时间,直到发生某种事件例如时间片用完、等待I/O、睡眠等)导致它进入阻塞(blocked)或睡眠(sleeping状态
  5. 如果一个线程进入阻塞或睡眠状态,内核会将其移出运行队列,并选择另一个可运行的线程继续执行。
  6. 当阻塞或睡眠的条件满足后,内核会重新唤醒相应的线程,并将其放回到运行队列中进行调度。

3.如果现在是一个单核的CPU,那么多个线程是按什么顺序去运行的?也就是线程的系统调度?

在单核CPU上,多个线程是通过时间片轮转调度算法来运行的。每个线程被分配一个固定的时间片(通常几毫秒),然后按照顺序依次执行。当一个线程的时间片用完时,内核会暂停该线程的执行,并切换到下一个等待执行的线程。

这种调度方式称为抢占式调度,因为内核可以在任何时间点中断正在运行的线程,并将CPU资源分配给其他等待执行的线程。具体而言,当以下情况发生时,当前运行的线程可能会被中断

  1. 时间片用完:当一个线程耗尽其分配给它的时间片后&

原文地址:https://blog.csdn.net/super828/article/details/134762033

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_32526.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注