系统结构-并行算法FORK JOIN

并行算法FORK JOIN

  • 一、FORK JOIN定义
  • 二、举例
    • 题目分析:

注意:本文全是作者胡猜,如有错误请指出,共同进步

一、FORK JOIN定义

FORK语句的形式:

FORK m,其中m为新进程开始的标号。

执行FORK m语句时,派生出标号为m开始的新进程,具体为:
1、准备好这个新进程启动和执行所必需的信息;
2、如果是共享主存,则产生存储器指针、映像函数和访问权数据;
3、将空闲的处理机分配给派生的新进程,如果没有空闲处理机,则让它们排队等待;
4、继续在原处理机上执行FORK语句的原进程。

与FORK语句相配合,作为每个并发进程的终端语句JOIN的形式:

JOIN n,其中n为并发进程的个数。

1、JOIN语句附有一个计数器,其初始值为0。每当执行JOIN n语句时,计数器的值加1,并与n比较。
2、若比较相等,表明这是执行中的第n个并发进程经过JOIN语句,于是允许该进程通过JOIN语句,将计数器清0,并在处理机上继续执行后续语句;
3、若比较不等,计数器的值仍小于n,表明此进程不是并发进程的最后一个可让现在执行JOIN与的这个进程先结束,把它所占用的处理机释放出来,分配给真正该排队等待的其他任务。如果没有排队等待的任务,就让该处理机空闲。

二、举例

系统结构-并行算法FORK JOIN_第1张图片

题目分析:

1、首先执行这个程序,用两台处理机。
2、假定最初的程序在cpu1上运行,cpu1首先执行标号为10的进程。
3、然后遇到FORK30语句时就分出一个cpu2去执行标号为30的进程,而cpu1接着执行标号为20的进程。
注意:这里20和30两个进程同时进行,因为除法最慢,所以标号为20的进程后一个完成。

那么标号30的进程首先完成,先执行JOIN2的语句。(此时计数器加1,等于1,和2比较,不等。那么就把这个进程先释放掉,分配给真正该排队等待的其他任务,由于此时没有任务排队,所以该处理机空闲
3、然后标号20的进程结束,执行JOIN2(此时计数器又加1,相等,于是允许该进程通过JOIN语句,将计数器清0,并在处理机上继续执行后续语句)
4、后续语句,GO TO 40
5、Cpu1开始执行fork60,cpu2就开辟一个进程标号60,cpu1接着执行标号50的进程,由于减法跑得快,所以标号50的进程先执行join2(计数器=1,不等,释放
标号60的进程执行join2(计数器=2,相等,继续执行后续语句)
6、后续语句,标号70执行。
根据分析绘图,如下所示:
系统结构-并行算法FORK JOIN_第2张图片

系统结构-计算机系统结构里的多级立方体网络怎么理解?

我发现,系统结构这本书总在我看懂之后才觉得写得有道理。大概不是书写得辣鸡,只是书写得不容易理解吧。就是那种高手唰唰唰在你面前舞了一通剑法,你一脸懵逼,觉得这都啥玩意啊,还不如广场舞大妈跳得好呢。然后此去经年,你终于成了剑术大家,想起当年的这个剑客,只觉得处处妙极。
嗯,大概就是这种感觉~

Java基础不好的小水怪,正在学习。有错请指出,一起加油。

你可能感兴趣的:(系统结构,Fortran语言,编程,入门,FORK,JOIN)