我正在学习操作系统类(class),并且学到了讨论进程和线程的部分。我知道 CPU 一次只能运行一个进程,因此有几种调度算法可以对就绪队列中的进程进行优先级排序。
现在,当我转向线程时,事情开始变得有些困惑。由于一个进程可能由多个线程组成,那么调度是针对单个线程还是针对每个进程?
例如:
我使用的是 Windows。我双击一首歌曲以在 VLC 中启动它,然后双击 MS Word 开始编写报告,最后打开 Chrome 来检查我的邮件。
让我们假设以下内容来简化事情:
- VLC 进程只有一个线程。
- MS Word 进程中有 5 个线程。
- Chrome 会为我在浏览器中打开的每个标签页创建一个线程。
- 所有这些程序都是用 Java 编写的,并且这些程序中的所有线程都是使用 Thread class 创建的。 .
现在哪个是用户线程,哪个是内核线程?
调度是在进程上还是在线程上?
线程数量较多的进程是否会运行更长时间,或者操作系统是否不知道每个进程中的线程数量?
最佳答案
应用程序是通过不同的语言开发的,不同的语言以不同的方式实现线程。基本上有两种不同的实现。
- 为应用程序中创建的每个线程创建单独的内核线程。
- 管理应用程序主线程内的应用程序创建的线程。
注意:Java 的实现也可能因 JVM 的不同而不同,因此这取决于所使用的 JVM 和操作系统。
回答你的下一个问题。调度将在线程上进行,而不是在进程上进行。
关于java - 操作系统中的进程和线程调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21389765/