m个进程(Pi,0≤i≤m-1)通过k个等长的缓冲区(Bi,0≤i≤k-1)向n个进程(Qi,0≤i≤m-1)发送消息。每个进程Pi发送消息的顺序与数量不受限制,每个进程Qi接收消息的顺序与数量也不受限制,但发送进程与接收进程作为两个分别的整体,要求消息发送与接收的整体次序相同。为保证消息发送与接收的充分并行,需要设置(24)。
A.3个信号量,初值分别为1,1,0
B.4个信号量,初值分别为1,0,1,0
C.3个信号量,初值分别为k,1,0
D.4个信号量,初值分别为k,1,0,1
第1题:
设有n个进程使用同一个共享变量,如果最多允许m(m < n)个进程同时进入相关临界区,则信号量的变化范围是()。
A.n,n-1,...,n-m
B.m,m-1,...1,0,-1,...m-n
C.m,m-1,...1,0,-1,...m-n-1
D.m,m-1,...1,0,-1,...m-n+1
第2题:
下面()是正确的判断素数程序(m>1)。
A.j=0; for (i =2; i<=m-1; i++) if (m % i != 0) j++; if(j==m-2) printf(“%d是素数n", m);
B.j=0; for (i =2; i<=m-1; i++) if (m % i == 0) j++; if(j==0) printf(“%d是素数n", m);
C.flag=0; for (i =2; i<=m-1; i++) if (m % i == 0) flag=1; if(flag==0) printf(“%d是素数n", m);
D.for (i =2; i<=m-1; i++) if (m % i == 0) i=m+2; if(i==m+3) printf(“%d是素数n", m);
第3题:
1、设二维数组a[m][n],每个数组元素占用k个存储单元,第一个数组元素的存储地址是LOC(a[0][0]),求按行优先顺序存放的数组元素a[i][i](0≤i≤m-1,0≤j≤n-1)的存储地址为
A.LOC(a[0][0])+[(i-1)×n+j-1]k
B.LOC(a[0][0])+[i×n+j]×k
C.LOC(a[0][0])+[jm+i]×k
D.LOC(a[0][0])+[(-1)×m+i-1]×k
第4题:
下面()仅输出m的大于1的最小因子。
A.for (i =2; i<=m-1; i++) if (m % i == 0) { printf("%d is 最小因子n", i); break; }
B.for (i =2; i<=m-1; i++) if (m % i == 0) { printf("%d is 最小因子n", i); continue; }
C.for (i =2; i<=m-1; i++) if (m % i == 0) { printf("%d is 最小因子n", i); }
D.i=2; while (m % i != 0) i++; printf("%d is 最小因子n", i);
第5题:
设C/C++二维数组a[m][n],每个数组元素占用k个存储单元,第一个数组元素的存储地址是LOC(a[0][0]),求按行优先顺序存放的数组元素a[i][j](0≤i≤m-1,0≤j≤n-1)的存储地址为()。
A.LOC(a[0][0])+[(i-1)×n+j-1]×k
B.LOC(a[0][0])+[i×n+j]×k
C.LOC(a[0][0])+[j×m+i]×k
D.LOC(a[0][0])+[(j-1)×m+i-1]×k