4.3 隐藏操作系统的任务
真正的目标是在软件设计不需要陷入到进程和线程实现细节的前提下,理解在执行多线程和多处理程序中操作系统的作用。您最终希望摆脱线程和进程实现细节的主要原因是因为CMP发展的方向是多个内核位于一个芯片上,终极目标是一个芯片上具有成百上千个内核的大规模并行。了解操作系统的任务将很重要,但是您不会希望在设计中接触到它。在程序清单4-1和程序清单4-2中,涉及了操作系统。随着芯片数目的增加和并行程度的增强,您需要在软件开发中实现两个重要的目标:
(1) 利用操作系统的同时令它对软件设计透明。
(2) 从并行编程(www.cppentry.com)的过程式范型转到声明式范型。
4.3.1 利用C++(www.cppentry.com)抽象和封装的能力
幸运的是,C++(www.cppentry.com)对面向对象、泛型(genericity)、谓词、多范型编程(www.cppentry.com)的支持,给出了未来软件设计和开发的方向。面向对象编程(www.cppentry.com)(OOP)是软件开发的声明式范型的一部分[Meyer,1988][Stroustrup,1997]。在第4.3.2节中您将看到,C++(www.cppentry.com)所支持的封装的概念有助于实现软件设计中操作系统级透明。模板可用于实现并行编程(www.cppentry.com)高阶(higher-order)声明式方法中的泛型技术,C++(www.cppentry.com)中的类、谓词和断言的思想可用于转向支持大规模复杂并行编程(www.cppentry.com)技术的声明式编程(www.cppentry.com)技术。类和模板库,如STAPL和TBB,是支持转向CMP大规模并行的初步的组件。其思想是构建封装底层过程化驱动的操作系统API的功能的类,并提供更高级别的声明式接口。C++(www.cppentry.com)接口类非常适用于为底层操作系统API、同步机制和通信组件提供包装 [Stroustrup,1997]。同时,您可以使用C++(www.cppentry.com)模板来捕获并行模式,在用户访问更高层、更具功能性接口的同时实现细节。还可以从捕获支持并行化架构的C++(www.cppentry.com)组件应用框架开始进行构建。使用高级组件、框架和架构,可以直接实现在SDLC的设计和规格说明等活动中产生的模型。