5.操作系统的多核多线程、并发、并行详解

迄今为止所讨论的进程模型暗示:每个进程是一个只能进行运行单个 线程(thread)的程序。例如,如果一个进程运行一个字处理程序,那么只能执行单个指令线程。这种单一控制线程使得进程一次只能执行一个任务。例如,用户不能在同一进程内,同时输入字符和拼写检查。现代许多操作系统扩展了进程的概念,以便支持一次能够执行多个线程。

多核多线程

在计算机设计早期,为了响应更多计算性能的需要,单处理器系统发展成为多处理器系统。更现代的、类似的系统设计趋势是将多个计算核心放到单个芯片。无论多个计算核心是在多个CPU芯片还是在单个CPU芯片上,我们称之为 多核(multicore)多处理器(multiprocessor)系统。多线程编程提供机制,以便更有效地使用这些多个计算核和改进的并发性。考虑一个应用,它有4个线程。对于单核系统,并发仅仅意味着线程随着事件推移交错执行,因为处理器只能同一时间执行单个线程。不过,对于多核系统,并发表示线程能够并行运行,因为系统可以为每个核分配一个单独线程。

5.操作系统的多核多线程、并发、并行详解

注意这里讨论的 并行性(parallelism)并发性(concurrency)的区别。并行系统可以同时执行多个任务,相比之下,并发系统执行多个任务,允许所有任务都能取得进展,而异步恰恰是并发的一种方式。因此,没有并行,并发也是可能的。在SMP和多核架构出现之前,大多数计算机系统只有单个处理器。CPU调度器通过快速切换系统内的进程,以便允许每个进程取得进展,从而提供并行假象。这些进程并发运行,而非并行运行。

随着系统线程数量从几十个到几千上万个,CPU设计人员通过增加硬件来改善线程性能的提高系统性能。现代Intel CPU的每个核经常支持两个线程,而Oracle T4 CPU的每个核支持8个线程。这种支持意味着,可以将多个线程加载到处理核以便快速切换。毫无疑问,多核计算机将继续增加多核数量核硬件线程支持。

并行类型

通常,由两种类型的并行:数据并行和任务并行。数据并行(data parallelism)注重将数据分布于多个计算核上,并在每个核上执行相同操作。例如,考虑一下对大小为N的数组的内容进行求和。对于单核系统,一个线程只能简单相加元素[0]…[N-1]。不过,对于双核系统,线程A,运行在核0上,相加元素[0]…[N/2-1];而线程B,运行在核1上,相加元素[N/2]…[N-1]。这两个线程可并行运行在各自的计算核上。

任务并行(task parallelism)设计将任务(线程)而不是数据分配到多个计算核。 每个线程都执行一个独特的操作。不同线程可以操作相同的数据,或者也可以操作不同的数据。再考虑刚才的例子。与那个情况相反,一个并行任务的例子可能设计两个线程,每个线程对元素数组执行一个唯一的统计操作。再次,线程在单独计算核上并行操作,但是每个执行一个独特操作。

从根本上说,数据并行涉及分布数据到多个核,而任务并行分布多个任务到多个核。然而,在实践中,应用程序很少严格遵循数据或任务并行。在大多数情况下,应用程序混合使用这两个策略。

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/linux/os/11632.html

(2)
huoxiaoqiang的头像huoxiaoqiang
上一篇 2022年1月4日
下一篇 2022年7月20日

相关推荐

  • 3.计算机操作系统的组成部分

    操作系统是管理计算机硬件资源的软件,可将操作系统看作资源分配器(resource allocator),这些资源可能包括:CPU时间、内存空间、文件存储空间、I/O设备等。操作系统管理这些资源,面对许多甚至冲突的资源请求时,操作系统应考虑如何为各个程序和用户分配资源,以便计算机系统能有效且公平地运行。 操作系统由内核(…

    操作系统教程 2022年1月3日
    07710
  • 4.操作系统的进程详解

    早期的计算机一次只能运行一个程序,这种程序完全控制操作系统,并且访问操作系统所有硬件资源。相比之下,现代计算机允许加载多个程序到内存,以便并发执行,这种改进要求:对各种程序提供更严的控制和更好的划分。这种需求导致了进程(process)概念的产生,即进程为执行程序。 进程是现代操作系统的工作单元,进程需要一定的资源,如…

    操作系统教程 2022年1月4日
    06320
  • 1.计算机生态的组成部分

    计算机生态可分为:硬件、操作系统、应用程序、用户。

    操作系统教程 2022年1月1日
    05190

发表回复

登录后才能评论