阅读以下关于利用信号量机制解决进程同步与互斥方面的应用实例,回答问题1至问题3。
[说明]
在多道程序系统中,进程是并发执行的。这些进程间存在着不同的相互制约关系,主要表现为同步和互斥两个方面。信号量机制是解决进程间同步与互斥的有效方法。下面是信号量应用实例。
下图所示代码是在μC/OS-II操作系统上运行的一个应用的主函数。该函数创建了任务Task1和Task2,其中Task1实现从键盘读入一个字符的功能,Task2将该字符输出到屏幕,它们使用信号量和一个公共变量buffer来传递该字符。
主函数、Task1和Task2中所调用的函数原型说明如下:
a.创建一个信号量:OS EVENT*OSSemCreate(INT16Uvalue);
b.创建一个任务:INT8U OSTaskCreate(void(*task)(void*pd),void*pdata,OS_STK *ptos,INT8U prio);
c.开始执行多任务:void OSStart(void);
d.从键盘读入一个字符:char scanc();
e.输出一个字符至屏幕:void printc(char ch);
f.发出一个信号量:INT8U OSSemPost(OS EVENT*pevent);
g.等待一个信号量:void OSSemPend(OS_EVENT*pevent,INT16U timeout,INT8U *err)
请简述什么是临界资源?什么是临界区?访问临界资源应遵循哪些原则?
第1题:
阅读下列说明和程序,回答问题l至问题3.将答案填入答题纸的对应栏内。
【说明】
在开发某嵌入式系统时,设计人员根据系统要求,分别编写了如下程序,其中:
【程序1】;实现两个变量的值的互换;
【程序2】:完成某功能的C语言程序;
【程序3】和【程序4】:是P、V操作的形式化定义,设S为信号量。在多道程序系
统中,进程是并发执行的。这些进程间存在着不同的相互制约关系,主要表现为同步和
互斥两个方面。信号量是解决进程间同步与互斥的有效方法。
【程序1】
【程序3】
P操作的形式化定义
P (S)
{
(1):
If(2) {
阻塞该进程;
将该进程插入信号量S的等待队列
}
}
【程序4】
V操作的形式化定义:
V(S)
{
(3)
if(4) {
从信号量s的等待队列中取出队首进程
将其插入就绪队列:
}
}
【问题1】(6分)
执行【程序1】后,没有能够实现两个变量值的交换,为什么?请修改上述函数
实现两个变量值的交换,要求函数无返回值,形式为:void swap(...)。请将答案填写在
答题纸中对应的栏目。
【问题2】(3分)
请问【程序2】运行结果是什么?
【问题3】(6分)
请简述什么是临界资源?什么是临界区?
请完成【程序3】和【程序4】的形式化定义,将应填入(n)处的内容写在答题纸
的对应栏中。
第2题:
信号量机制是一种有效的实现进程同步与互斥的工具。信号量只能由P、V操作来改变。
A对
B错
第3题:
2、下列关于进程同步和互斥的说法中,错误的是:
A.进程同步是进程互斥的一种特殊情况
B.同步就是让所有的进程按照一定的规则执行
C.进程的同步和互斥都涉及并发进程访问共享资源的问题
D.进程的同步包括进程互斥和进程同步
第4题:
第5题:
信号量机制是解决进程同步的有效手段。