1.5 从单核到多核
在单核结构中,尽管很多当前的单核结构中包含特殊的图形处理部件、多媒体处理部件以及一些特殊的算术协同处理器,但您只需要关注一个(通用)处理器。但是即使使用单核或单处理器计算机,多线程、并行编程(www.cppentry.com)、软件流水以及多道程序设计也都是可能的。所以本节将澄清一些基本事实,帮助您从单核编程(www.cppentry.com)迁移到多核编程(www.cppentry.com)。
1.5.1 多道程序设计和多处理
多道程序设计(multiprogramming)通常是在讨论操作系统时被提及,而不是在讨论应用程序时被提及。多道程序设计是一种调度技术,使得在任何时候都允许多个任务处于执行状态。在多道程序设计系统中,任务(或进程)共享系统资源,如主系统内存和处理器。在单核系统中,进程同时执行的假象是由于操作系统使用了时间片(time slice)技术。在时间片模式中,给每个进程一个小的时间间隔来执行。这些时间间隔被称作时间片,这些时间片非常短,而且操作系统能够非常快地切换上下文,这样就给出了在任意时刻执行多个进程或任务的假象。因此在单核架构并发执行两个主要任务(如刻录DVD的同时渲染计算机图像)的场景中,将系统称作多道程序设计。
多道程序设计是一种调度技术。相反,多处理器是有着多个处理器的计算机。在这种情况下,是特指有着两个或多个通用处理器。从技术上而言,有着CPU和GPU的计算机也是多处理器。但是为了本讨论的目的,我们集中于多通用处理器。这样,多处理是一种使用多个处理器来并发执行任务的编程(www.cppentry.com)技术。在本书中,我们主要关心属于并行编程(www.cppentry.com)范畴的技术。