多核程序设计(简答等).doc_第1页
多核程序设计(简答等).doc_第2页
多核程序设计(简答等).doc_第3页
多核程序设计(简答等).doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、 简述用户级线程和内核级线程之间的映射模型有哪些,并分别加以说明:1.多对一模型1)多对一模型把多个用户级线程映射到一个内核级线程。2)线程的管理在用户空间实现,所以效率高。3)当一个线程因调用系统调用被阻塞时,整个进程被阻塞。2.一对一模型1)一对一模型把每个用户级线程影射到一个内核级线程。2)当一个线程阻塞时,其他线程仍然可以运行。3.多对多模型1)多对多模型将m个用户级线程影射到n个内核级线程,mn。2)用户可以创建所需要的用户级线程,通过分配适当数目的内核级线程获得并发执行的优势并节省系统资源。二、简述集群系统(cluster)的特点: 1.机群的每个结点都是一个完整的计算机2.机群各结点总有本地磁盘3.各结点通过低成本的商用网络互连4.结点与系统级网络的网络接口是连接到I/O总线上的(松耦合),而MPP的网络接口是连到结点的存储总线上(紧耦合)5.每个结点上驻留有完整的操作系统,并在上面附加软件层以支持单一系统映像、通信等,而MPP中结点上只是一个操作系统微核6.软件技术是集群的关键三、衡量处理器性能的主要指标是什么,并以此说明多核处理器产生的原因:衡量处理器性能的主要指标是每个时钟周期内可以执行的指令数(IPC:Instruction Per Clock)和处理器的主频。因此,提高处理器性能就是两个途径:提高主频和提高每个时钟周期内执行的指令数(IPC)。而通过改良架构来提高IPC的幅度是非常有限的,所以在单核处理器时代只能通过提高(处理器的)主频来提高性能,由于处理器功耗正比于主频的三次方,所以给处理器提高主频不是没有止境的。而将单核处理器增加到双核处理器,如果主频不变的话,IPC理论上可以提高一倍。所以为了达到更高的性能,在采用相同微架构的情况下,可以增加处理器的内核数量同时维持较低的主频。(这样设计的效果是,更多的并行提高IPC,较低的主频有效地控制了功耗的上升)四、阐述超线程技术和多核架构在并行计算应用领域上的区别和联系:区别:超线程技术是通过延迟隐藏的方法提高了处理器的性能,本质上,就是多个线程共享一个处理核。因此,采用超线程技术所获得的性能并不是真正意义上的并行,从而采用超线程技术多获得的性能提升将会随着应用程序以及硬件平台的不同而参差不齐。多核处理器是将两个甚至更多的独立执行核嵌入到一个处理器内部。每个指令序列(线程),都具有一个完整的硬件执行环境,所以,各线程之间就实现了真正意义上的并行。联系:超线程技术:充分利用空闲CPU 资源,在相同时间内完成更多工作。与多核技术相结合:给应用程序带来更大的优化空间,进而极大地提高系统的吞吐率。五、简述使用临界区(critical section)的原则:1)每次只允许一个进程处于它的临界区(CS)中2)若有多个进程同时想进入CS,应在有限时间内让其中一个进程进入CS,以免阻塞3)进程在CS内只能逗留有限时间4)不应使要进入CS的进程无限期地等待在CS之外5)在CS之外的进程不可以阻止其他进程进入CS6)不要预期和假定进程进展的相对速度以及可用的处理器数目. 因为这是不可预期的.六、简述程序员在申请互斥资源时避免产生死锁现象的三种程序设计方案: 1)线程以相同的次序进行加锁。2)使用非阻塞的加锁操作。3)(由于调度可能造成某些线程长时间等待,这时可以再线程释放锁之后)通过调用yield后者类似功能的库函数或系统调用放弃cpu以便其他进程被投入执行并获得锁。七、什么是“内存墙性能瓶颈问题”,采用何种办法解决该问题: 相比较而言,内存的访问速度要比处理器执行速度慢很多,数据存取速度(即数据填充指令处理流水线的速度)难以满足微处理器的峰值计算速度,这就是所谓的内存墙性能瓶颈问题。 为了解决该问题,一个简单的办法就是在内存和处理器之间增加一个高速缓存cache。一般的,在节点内部的cache被称为“二级cache”,在处理器内部更小的cache成为“一级cache”。八、简述如何衡量“锁”的粒度,“锁”的粒度与数据并行性之间的关系: 锁的粒度是上锁后保护的共享数据的多少。减小锁的粒度可以提高对共享数据访问的并行性。PS:并行加速比定理基本前提:1) Amdahl定理固定负载(计算总量不变时)的量化标准,即计算总量一定。2) 在很多计算中,计算负载是可以改变的,我们在增加处理器的同时增加了问题的规模,那么就得到了Gustafson定理的加速比公式。3) Sun-Ni定理中引入了一个函数G(p)表示存储容量受限时工作负载的增加量。Sun-Ni定理是G(p)=p的情况;而如果G(p)=1,则是表明工作量无增加,即Amdahl定理中的情况。程序设计例题:Java多线程同步简单举例:多个线程对一个长度为50的数组进行赋值,并打印输出package sub1;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class threadOutPut public static void main(String args) subTest st=new subTest();Thread t1=new Thread(st);Thread t2=new Thread(st);t1.start();t2.start();class subTest implements Runnableint a=new int 50; private int i=0; ReentrantLock rl=new ReentrantLock();public void run() while(i50) rl.lock();try ai=(int)(Math.random()*100);System.out.println(当前线程:+Thread.currentThread().getName()+*the data of index+i+is:+ai); i+; finallyrl.unlock(); tryThread.sleep(1000);catch(InterruptedException ee) C#举例:银行简单模拟using System;using System.Collections.Generic;using System.Text;using System.Threading;namespace csharpbank class Program static void Main(string args) ThreadStart thread1 = new ThreadStart(Test.WithDraw1); Thread newThread1 = new Thread(thread1); ThreadStart thread2 = new ThreadStart(Test.WithDraw2); Thread newThread2 = new Thread(thread2); newThread1.Start(); newThread2.Start(); class Test static int total = 100; public static void WithDraw1() int n=90;lock(this)/上锁 if (n = total) total -= n; Console.WriteLine(You have withdrawn. n=0, n); Console.WriteLine(total=0, total); else Console.WriteLine(You do not enough money. n=0, n); Console.WriteLine(total=0, total); public static void WithDraw2() int n = 20; lock(this) if (n = total) total -= n;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论