【发布时间】: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