【发布时间】:2015-12-29 12:41:57
【问题描述】:
定义:
进程(任务):是一个正在执行的程序。例如:记事本
线程:线程是单个指令序列。一个进程由一个或多个线程组成(但一次只能执行一个)。
根据讲座,单核处理器一次只能运行一个进程(任务)。一次只能执行一个线程,但操作系统使用time slicing(线程上下文切换)实现多线程。这种线程切换发生得足够频繁,以至于用户认为线程同时运行(但它们不是并行运行!)并且它发生在一个进程内。
进程上下文切换类似于线程上下文切换它发生在进程之间(例如媒体播放器和记事本之间)而不是线程之间的差异。
我不确定此示例是否有效:采用两个进程,例如:单核处理器上的记事本和 Mediaplayer。尽管两个进程没有并行运行(进程上下文切换或多任务处理),但可以同时播放音乐和在记事本中写作。在一个进程中,例如:Mediaplayer 可以同时听音乐和创建播放列表,尽管两个线程没有并行运行(线程上下文切换或多线程)
第一个问题:我上面的信息是否正确?
第二个问题:多核进程中的线程执行在一个内核中看起来是否相同,但不同之处在于不同进程的线程可以并行运行?。多线程在这里的过程在不同的进程上同时运行多个线程或在一个内核上的线程之间切换的进程?同样的问题也适用于多任务处理。 在这种情况下,进程上下文切换和线程上下文切换将如何发生?
第三个问题:教授使用术语单线程处理器。这个词是单核处理器的别称吗?
或
属于同一进程的多个线程可以同时在多个 CPU 内核上执行。时间切片仍然发生在多核系统上。假设一个进程有 20 个线程在四核上运行 - 操作系统仍然必须安排 21 个线程才能仅在 4 个核心上运行。
单线程进程一次只能在一个内核上运行。但这并不意味着它会在同一个核心上运行,直到它退出。操作系统可能会给他一个时间片,让他现在在 Core 1 上运行,暂停它,稍后再给它在 Core 2 上的时间片
注意:我读了很多书,在我决定在这里问之前我已经用谷歌搜索了很多。
已编辑
【问题讨论】:
-
java标签放错了!
标签: multithreading operating-system multiprocessing multitasking