欢迎来到天天文库
浏览记录
ID:8816623
大小:21.77 KB
页数:4页
时间:2018-04-08
《多核程序设计(简答等)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、一、简述用户级线程和内核级线程之间的映射模型有哪些,并分别加以说明:1.多对一模型1)多对一模型把多个用户级线程映射到一个内核级线程。2)线程的管理在用户空间实现,所以效率高。3)当一个线程因调用系统调用被阻塞时,整个进程被阻塞。2.一对一模型1)一对一模型把每个用户级线程影射到一个内核级线程。2)当一个线程阻塞时,其他线程仍然可以运行。3.多对多模型1)多对多模型将m个用户级线程影射到n个内核级线程,m≥n。2)用户可以创建所需要的用户级线程,通过分配适当数目的内核级线程获得并发执行的优势并节省系统资源。二、简述集群系统(cluster)的特点:1
2、.机群的每个结点都是一个完整的计算机2.机群各结点总有本地磁盘3.各结点通过低成本的商用网络互连4.结点与系统级网络的网络接口是连接到I/O总线上的(松耦合),而MPP的网络接口是连到结点的存储总线上(紧耦合)5.每个结点上驻留有完整的操作系统,并在上面附加软件层以支持单一系统映像、通信等,而MPP中结点上只是一个操作系统微核6.软件技术是集群的关键三、衡量处理器性能的主要指标是什么,并以此说明多核处理器产生的原因:衡量处理器性能的主要指标是每个时钟周期内可以执行的指令数(IPC:InstructionPerClock)和处理器的主频。因此,提高处理
3、器性能就是两个途径:提高主频和提高每个时钟周期内执行的指令数(IPC)。而通过改良架构来提高IPC的幅度是非常有限的,所以在单核处理器时代只能通过提高(处理器的)主频来提高性能,由于处理器功耗正比于主频的三次方,所以给处理器提高主频不是没有止境的。而将单核处理器增加到双核处理器,如果主频不变的话,IPC理论上可以提高一倍。所以为了达到更高的性能,在采用相同微架构的情况下,可以增加处理器的内核数量同时维持较低的主频。(这样设计的效果是,更多的并行提高IPC,较低的主频有效地控制了功耗的上升)四、阐述超线程技术和多核架构在并行计算应用领域上的区别和联系:
4、区别:超线程技术是通过延迟隐藏的方法提高了处理器的性能,本质上,就是多个线程共享一个处理核。因此,采用超线程技术所获得的性能并不是真正意义上的并行,从而采用超线程技术多获得的性能提升将会随着应用程序以及硬件平台的不同而参差不齐。多核处理器是将两个甚至更多的独立执行核嵌入到一个处理器内部。每个指令序列(线程),都具有一个完整的硬件执行环境,所以,各线程之间就实现了真正意义上的并行。联系:超线程技术:充分利用空闲CPU资源,在相同时间内完成更多工作。与多核技术相结合:给应用程序带来更大的优化空间,进而极大地提高系统的吞吐率。五、简述使用临界区(criti
5、calsection)的原则:1)每次只允许一个进程处于它的临界区(CS)中2)若有多个进程同时想进入CS,应在有限时间内让其中一个进程进入CS,以免阻塞3)进程在CS内只能逗留有限时间4)不应使要进入CS的进程无限期地等待在CS之外5)在CS之外的进程不可以阻止其他进程进入CS6)不要预期和假定进程进展的相对速度以及可用的处理器数目.因为这是不可预期的.六、简述程序员在申请互斥资源时避免产生死锁现象的三种程序设计方案:1)线程以相同的次序进行加锁。2)使用非阻塞的加锁操作。3)(由于调度可能造成某些线程长时间等待,这时可以再线程释放锁之后)通过调用
6、yield后者类似功能的库函数或系统调用放弃cpu以便其他进程被投入执行并获得锁。七、什么是“内存墙性能瓶颈问题”,采用何种办法解决该问题:相比较而言,内存的访问速度要比处理器执行速度慢很多,数据存取速度(即数据填充指令处理流水线的速度)难以满足微处理器的峰值计算速度,这就是所谓的内存墙性能瓶颈问题。为了解决该问题,一个简单的办法就是在内存和处理器之间增加一个高速缓存cache。一般的,在节点内部的cache被称为“二级cache”,在处理器内部更小的cache成为“一级cache”。八、简述如何衡量“锁”的粒度,“锁”的粒度与数据并行性之间的关系:
7、锁的粒度是上锁后保护的共享数据的多少。减小锁的粒度可以提高对共享数据访问的并行性。PS:并行加速比定理基本前提:1)Amdahl定理固定负载(计算总量不变时)的量化标准,即计算总量一定。2)在很多计算中,计算负载是可以改变的,我们在增加处理器的同时增加了问题的规模,那么就得到了Gustafson定理的加速比公式。3)Sun-Ni定理中引入了一个函数G(p)表示存储容量受限时工作负载的增加量。Sun-Ni定理是G(p)=p的情况;而如果G(p)=1,则是表明工作量无增加,即Amdahl定理中的情况。程序设计例题:Java多线程同步简单举例:多个线程对一
8、个长度为50的数组进行赋值,并打印输出packagesub1;importjava.util.concurr
此文档下载收益归作者所有