试题预览
5
解析题
0分
[说明]在开发某嵌入式系统时,设计人员根据系统要求,分别编写了如下程序,其中:
[程序1]:实现两个变量的值的互换;
[程序2]:完成某功能的C语言程序;
[程序3]和[程序4]:是P、V操作的形式化定义,设S为信号量。在多道程序系统中,进程是并发执行的。这些进程间存在着不同的相互制约关系,主要表现为同步和互斥两个方面。信号量是解决进程间同步与互斥的有效方法。 [程序1] void swap (int n1, int n2) { int tmp=n1; n1=n2; n2=tmp; [程序2] #include image.pngstdio.h> int fun (int n) { int f0=0, f1=1, f, i; if (n==0) return 0; if (n==1) return 1; for(i=2j; iimage.png=n; i++) { f=f0+f1; f0=f1; f1=f; } return f; } void main12 {int n=5; printf ("fun(%d)=%d\n", n, fun(n)); n=7; printf ("fun(%d)=%d\n", n, fun(n)); n=9; printf ("fun(%d)=%d\n", n, fun(n)); } [程序3] P操作的形式化定义:P (S) { ______; if(______){ 阻塞该进程;将该进程插入信号量S的等待队列; } } [程序4]V操作的形式化定义:V(S) { ______; if(______){ 从信号量S的等待队列中取出队首进程;将其插入就绪队列; } }
1、执行[程序1]后,没有能够实现两个变量值的交换,为什么?请修改上述函数,实现两个变量值的交换,要求函数无返回值,形式为:void swap(...)。
2、请问[程序2]运行结果是什么?
3、请简述什么是临界资源?什么是临界区? 请完成[程序3]和[程序4]的形式化定义。
百度扫一扫练题
关注千题库公众号