首页 > 其他分享 >计算机系统结构之FORK和JOIN

计算机系统结构之FORK和JOIN

时间:2024-06-01 19:33:55浏览次数:11  
标签:FORK 计算机系统 JOIN 运算 处理机 语句 任务

程序语言中用FORK语句派生并行任务,用JOIN语句对多个并发任务汇合。

FORK语句的形式为FORK m,其中m为新领程开始的标号。

JOIN语句的形式为JOIN n,其中n为并发进程的个数。

例1:给定算术表达式Z=E+A*B*C/D+F经并行编译得到如下程序:

S1 G=A*B

S2 H=C/D

S3 I=G*H

S4 J=E+F

S5 Z=I+J

利用FORK和JOIN语句实现这种派生和汇合关系:

时空图:

注意:不连续的处理机(S1)遵循一明一暗选择

一明一暗:GOTO不画,JOIN画但不标示

例2:有表达式Z=A*(B+C*(D+E*F))+G*H*D在多处理机上,要求利用减少树高的方法加速运算。

(1)画出并行运算的树形流程图,并确定处理机数P和树高Tp。

(2)用FORK、JOIN、GOTO语句写出运算表达式的多处理机并行程序段。

总结:

1、对于同一级的多个任务,由最后一个执行完上一个任务的处理机随机选一个任务执行。

2、(1)同一级有加、乘任务时,没有特别要求,通常把加法任务写在前面,乘法任务写在后面。

      (2)同一级若乘任务在前、加任务在后,没有特殊说明(比如:一般认为乘运算比加运算执行时间长),加任务执行时间更长,下一个任务继续由加运算所在处理机执行。

例3:

若有下述程序:

C=A*B

D=A+B

G=E*C

H=F+D

I=G+H

(1)利用FORK、JOIN语句将其改写成可在多处理机上并行执行的程序。

(2)假设乘法运算期间比加法运算时间长,画出程序在有两台处理机的系统上运行的时间关系图。

例4:

由霍纳法则给定的表达式如下:

x=a+b(c+(d+e))+f(g(i+j))

利用减少树高来尽可能加快运算速度,要求:

(1)画出在3台处理机上并行运算的树形流程图。

(2)当P=3时,求运算级数Tp、加速比Sp和效率Ep的值。

标签:FORK,计算机系统,JOIN,运算,处理机,语句,任务
From: https://blog.csdn.net/Yangerlei/article/details/139377779

相关文章

  • 计算机系统结构之Cache
    一、全相联映像和变换全相联映像的主存-Cache地址变换过程如图:给出主存地址Nm访存时,将其主存块号Nmb与目录表(硬件)中所有各项的Mmb字段同时相联比较。若有相同的,就将对应行的Cache块号Ncb取出,拼接上块内地址Nmr形成Cache地址Nc,访Cache;若没有相同的,表示该主存块未装入Cache,......
  • MapReduce学习之MapJoin案例实现
    MapReduce学习之MapJoin案例实现1.当前main方法所在的入口类packagecom.shujia.mr.mapJoin;importcom.shujia.mr.reduceJoin.ReduceJoin;importcom.shujia.mr.reduceJoin.ReduceJoinMapper;importcom.shujia.mr.reduceJoin.ReduceJoinReducer;importorg.apache.......
  • spark sql中的几种数据库join
    一、连接类型:InnerJoin:内连接;FullOuterJoin:全外连接;LeftOuterJoin:左外连接;RightOuterJoin:右外连接;LeftSemiJoin:左半连接;LeftAntiJoin:左反连接;NaturalJoin:自然连接;Cross(orCartesian)Join:交叉(或笛卡尔)连接。二、crossjoin的例子:WITH......
  • 系统架构设计师【第2章】: 计算机系统基础知识 (核心总结)
    文章目录2.1计算机系统概述2.2计算机硬件2.2.1计算机硬件组成2.2.2处理器2.2.3存储器2.2.4总线2.2.5接口2.2.6外部设备2.3计算机软件2.3.1计算机软件概述2.3.2操作系统2.3.3数据库2.3.4文件系统2.3.5网络协议2.3.6中间件2.3.7软件构件2......
  • [SQL DRIVEN] GetExistingLocalJoinPath
    ThefollowingsqlstatementswilltriggercallingfunctionGetExistingLocalJoinPath.setupCREATEEXTENSIONpostgres_fdw;CREATESERVERforeign_serverFOREIGNDATAWRAPPERpostgres_fdwOPTIONS(host'127.0.0.1',dbname'postgres',por......
  • 浅析AOP中的JoinPoint的使用
    JoinPoint可以让我们获取到哪些信息JoinPoint接口提供了多个方法,允许我们在切面中获取与连接点(即目标方法执行点)相关的信息。以下是一些常用的方法,以及它们能够提供的信息:getArgs():获取目标方法的参数列表。这些参数是在方法调用时传递给方法的实际参数。getSignature()......
  • MySQL中UPDATE JOIN
    在MySQL数据库中,UPDATE语句用于修改表中现有的记录。有时,我们需要根据另一个相关联表中的条件来更新表中的数据。这时就需要使用UPDATEJOIN语句。最近我们遇到了这样的需求:我们有一张历史记录表,其中一个字段记录了用,连接的多个用户账号。现在,我们添加了一列,需要将这些账号翻译为......
  • linux内核初始化阶段-fork内嵌问题
    目录1.在linux内核初始化程序中fork需要_syscall0(int,fork)的背景1.1.背景1.2.重点来了-为啥需要_syscall0(int,fork)2.内联函数+宏定义的作用3.参考1.在linux内核初始化程序中fork需要_syscall0(int,fork)的背景1.1.背景内核的main中线进行了所有硬件初始化工作,包括陷阱......
  • 递归,进程fork(),以及线程clone()之间的比较
    在计算机科学中,处理复杂任务的常见方法有递归、进程(通过fork创建),以及线程(通过clone创建)。这三种方式各有其独特的优势和适用场景。在本文中,我们将深入比较这三种方法,并展示它们在解决迷宫路径搜索问题时的不同实现方式,帮助开发者理解它们的异同,并根据不同的应用场景选择......
  • 【补充】进程理论:开设多进程的方式、多进程实现服务端并发、join实现并发
    【补充】进程理论【一】开设多进程的两种方式【1】在Windows上启动子进程#必须将启动入口放到if__name__=='__main__':'''由于Windows没有fork,多处理模块启动一个新的Python进程并导入调用模块。如果在导入时调用Process(),那么这将启动无限继承的新进程(或直到机器耗尽资......