【问题标题】:Process and threads scheduling in an operating system操作系统中的进程和线程调度
【发布时间】:2014-02-18 19:36:49
【问题描述】:

我正在学习关于操作系统的课程,并且我到达了它讨论进程和线程的部分。我知道 CPU 一次只能运行一个进程,因此有几种调度算法可以对就绪队列中的进程进行优先级排序。

现在,当我转向线程时,事情开始变得有些混乱。由于一个进程可能由多个线程组成,调度是针对每个线程还是针对每个进程?

例如:

我在 Windows 上。我双击一首歌曲在 VLC 中开始播放,然后双击 MS Word 开始编写报告,最后打开 Chrome 来查看我的邮件。

让我们假设以下内容来简化事情:

  • VLC 进程只有一个线程。
  • MS Word 在其进程中有 5 个线程。
  • Chrome 会为我在浏览器中打开的每个标签创建一个线程。
  • 所有这些程序都是用 Java 编写的,这些程序中的所有线程都是使用 Thread class 创建的。

现在哪些是用户线程,哪些是内核线程?

调度是在进程上还是在线程上?

线程数多的进程会运行得更久,还是操作系统不知道每个进程的线程数?

【问题讨论】:

  • 线程 == 轻量级进程。调度发生在线程级别,而不是进程级别。

标签: java multithreading process operating-system kernel


【解决方案1】:

应用程序是通过不同的语言开发的,不同的语言实现线程的方式也不同。基本上有两种不同的实现方式。

  1. 为应用程序中创建的每个线程创建单独的内核线程。
  2. 在应用程序的主线程中管理应用程序创建的线程。

注意:Java 的实现也可能因 JVM 不同而不同,因此这取决于所使用的 JVM 和操作系统。

来回答你的下一个问题。调度将在线程上而不是在进程上。

【讨论】:

    猜你喜欢
    • 2020-02-20
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-24
    • 1970-01-01
    • 2012-03-27
    相关资源
    最近更新 更多