解释
流程(任务) :是一个正在执行的程序。例如:记事本
线程 :线程是单个指令序列。一个进程由一个或多个线程组成(但一次只能执行一个)。
根据讲座,单个核心处理器可以一次运行一个进程(任务)。一个线程一次只能执行,但操作系统使用time slicing(线程上下文切换)实现多线程。这种线程切换经常发生,用户认为线程同时运行(但它们并不是并行运行!)并且它发生在一个进程内。
一个进程上下文切换类似于线程上下文切换,区别在于进程之间(例如mediaplayer和notepad之间的例子),而不是线程之间。
我不确定此示例是否有效:在单核处理器上执行两个过程,例如:Notepad和Mediaplayer。人们可以同时播放音乐并在记事本中写入,虽然这两个过程并不是并行运行(进程上下文切换或多任务处理)。在一个过程中,例如:Mediaplayer可以听音乐并创建播放列表时间虽然两个线程并不是并行运行的(线程上下文切换或多线程)
第1个问题:我的信息是否正确?
第二个问题:多核进程中的线程执行在一个内核中看起来是一样的,但是不同进程的线程可以平行运行吗?这里是多线程的过程在差异进程上同时运行多个线程或在一个核心上的线程之间进行切换的过程?同样的问题也适用于多任务处理。 在这种情况下,如何进行Process上下文切换和线程上下文切换?
第3个问题:教授使用了Term单线程处理器。这个术语是sigle核心处理器的另一个名称吗?
或
属于同一进程的多个线程可以同时在多个CPU内核上执行。时间切片仍然发生在多核系统上。假设一个具有在四核上运行的20个线程的进程 - 操作系统仍然必须安排21个线程仅在4个核心上运行。
单线程进程一次只能在一个核心上运行。但这并不意味着它会在退出之前在同一个核心上运行。操作系统可能会给他一个时间片来在Core 1上运行,暂停它,然后在Core 2上给它另一个时间片
note :在我决定在这里问之前,我读了很多书并且用Google搜索了。
EDITED
答案 0 :(得分:1)
是的,您似乎对此主题有很好的理解(不确定它是否真的很有趣)。但是,你似乎在思考它。我建议用一种更简单的方式来理解它在现代系统中的工作方式(当你开始回顾它时,它真的是狂野的西方,有轻量级处理的想法等等,但我不会谈论它。)
该过程是一个shell。生命中唯一的目的是为线程提供环境。只有线程才真正执行,进程本身永远不会被执行。单个进程可以在其中托管多个线程,当它只托管一个线程时,可以说进程被执行 - 但这只是一种说法。 CPU只能执行线程,而不能执行进程。
你的教授,正如他们经常做的那样,会做出误导性陈述。没有单线程处理器这样的东西。有单处理器和多处理器,这些处理器可以连接在一起以提供多处理器环境。从应用程序开发人员的角度来看,具有4个内核的单个CPU与4个单核CPU没有区别。当然,存在差异 - 但通常不适用于应用程序开发人员。
多任务是一个非专业术语。它可能意味着任何人想要它的意思,并且在非特定的背景下更好地避免。
我希望我确实澄清了你的困惑。
答案 1 :(得分:0)
您的问题的答案如下:
Q1:在单核处理器上,两个任务不能同时以两个(处理器)指令的形式并行运行,多线程的唯一可行方式是时间 - 切片由任务调度程序(OS)实现,所以在这种情况下,你大约正确。我会用这个事实完成你对这个主题的观点,现在几乎没有一个应用程序是单线程的。我不知道记事本是否使用多个线程,但我很确定,媒体播放器是多线程的,任务调度程序调度线程之间的时间片而不是进程。 (有趣的事实:单线程.NET应用程序已经运行了4-5个线程。)
Q2:任何系统上的任务调度程序都会尝试在可用内核之间分配负载,因此时间片最有可能与您在上面显示的方式有关,但如果进程执行其他线程,它将是在核心上执行,负载最小。多核也意味着,多个(处理器)指令可以并且可以同时执行。
Q3:实际上,多线程处理器和多核处理器意味着非常相似,但不一样。例如,您可以看到英特尔酷睿i3 / i5 / i7 CPU配备了内部伪任务调度程序,通过在同一内核上调度两个线程的执行,可以将虚拟内核的数量增加一倍,因此例如我的i5系统是2有条纹但有4个线程。
答案 2 :(得分:-1)
您的大多数概念似乎对非标准术语有效。 这里解释什么是线程和进程,然后是多线程
进程正在运行的程序实例为true
当没有线程时,资源只在进程间分配。
现在进程有线程,因此资源被分配给线程,但隔离与进程相同意味着两个进程仍然需要IPC相互通信。您可以将多线程称为可由操作系统调度的轻量级进程。 multit-hreading
是multi-tasking
的扩展,所以如果有一个核心和两个进程:一个有两个线程,一个有4个线程,访问核心的争用是在6个线程而不是2个进程之间。
对于thread switch
和process switch
,请参阅thread context switch vs process context switch