并行计算共享存储并行程序的设计.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
并行计算共享存储并行程序的设计

第八章 共享存储并行程序设计;主要内容;一、共享存储多处理机系统的程序设计方法;使用单总线相连的共享存储多处理机;使用交叉开关网的共享存储多处理机;1. 共享存储系统中常用的程序设计方法;2. 并发进程的创建;2. 并发进程的创建;FORK-JOIN结构;UNIX系统调用;UNIX系统调用;3. 并发线程的创建;进程与线程的差别;主要内容;二、共享数据的创建和访问;二、共享数据的创建和访问;进程1 read x compute x+1 write to x;共享资源的访问;在共享存储结构中的同步通常用于: 确定进程间正确的执行次序; 保证各进程对共享变量正确的读写次序; 它们实际上实现了进程间的通信和同步。 有以下几种常用的同步机制: 锁 信号量 监控程序 条件变量 使用障碍同步;1)锁机制 锁(lock)是实现临界段的互斥访问最简单的机制。 通常,一个锁用1个二进制位变量来表示,该变量为 1 表示已经有一个进程进入临界段;变量为 0表示没有进程在临界段内。 当一个进程执行到临界段“门口”,并发现临界段的“门”是打开的时候,该进程就可以进入临界段,并把“门”锁上,以防止其它进程进入。一旦进程执行完临界段代码,它就打开锁并离开。;通过忙等待控制临界段;高性能程序应当尽可能少地使用临界段,因为多个进程使用临界段必须被串行化。 假设所有进程都同时达到临界段,它们将一个跟着一个地进入临界段。这种情况中的执行时间几乎与一个处理机的执行时间相同。;进程 1 : lock( ); unlock( ); : : : : : :;死锁问题 当一个进程 A 需要另一个进程 B 拥有的资源,而进程 B 也需要进程 A 拥有的资源时,这两个进程就会因为等待彼此拥有的资源而发生死锁。 死锁还可能以环的形式发生在几个进程之间。;2)信号量 信号量(semaphore)是一个非负整数变量 s, 基本操作原语:P(s) 和 V(s),它们通过对信号量 s进行操作而实现进程间的同步。 对信号量 s 执行 P 操作相当于请求分配一个单位资源,使 s 减 1。若在执行P操作前s 已为0,则表示无资源可分配,于是阻塞请求该资源的进程,将其排在 s 的等待队列中; 对信号量 s 执行 V 操作相当于归还一个单位资源,使 s 加 1。 二元信号量(??值0或1)与锁的执行效果相同。;信号量的初始值表示与该信号量相关的资源总数,如:系统中有两台打印机可被用户交替使用。;3)监控程序 利用信号量处理临界段问题,P操作和V操作的不匹配或对错误的信号量进行操作,都会产生严重后果。 监控程序、管程 (monitor)是一个把表示共享资源的状态变量、对资源的操作过程和初始化代码封装在一起的结构。;监控程序将所有的数据和对该数据(或其它资源)的操作都被封装在一个结构里。对数据的读和写只能由监控程序中的过程来完成,且在任何时间只能由一个进程使用监控程序的过程。 在一个监控程序中,采用永久性变量来记录共享资源的状态。这些状态变量只能在监控程序内被访问。 监控程序中任一过程被调用之前,先要对共享资源变量进行必要的初始化。 在同一监控程序内的各个过程的执行必须是互斥的。除此限制外,监控程序中的过程与一般程序设计语言中的过程一样: 所以,监控程序是实现互斥执行的结构化方法。;x_mon: monitor var //全局变量 x_being_written: boolean; //对共享变量的读操作 procedure read_x //若x正在被修改,则挂起 if (x_being_written) then wait; read x; end read_x; ;4)条件变量同步机制 条件变量(condition variable)同步机制用来实现在临界段中需要特定的全局条件满足了之后才可以执行的情况。 如果利用锁机制实现,需要频繁地考察全局变量(互斥变量)的值,显然这样是非常费时的。 如,线程 1 等待某个全局变量 x 到达了一个特定的值0 时,才采取行动。其他线程负责改变 x 的值。;线程1 : : lock ( ); while (x != 0) //wait()解锁并等待条件s wait (s); // wait()被叫醒后再被加锁 unlock ( ); action( ); : :;5)障碍(barrier)同步 在使用软件实现的障碍同步机制之前,要做初始化,即给定一个需要障碍同步的处理机(或进程)数cpnu, 然后置同步计数器 barn 为 0。 每个处理机到达障碍点后,调用下面的例程去同步: barrier { lock (S);

文档评论(0)

shaoye348 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档