题库 题库

【简答题】

试题五(共15分)
    阅读以下关于利用信号量机制解决进程同步与互斥方面的应用实例,回答问题1至问题3,将答案填入答题纸的对应栏内。
【说明】
    在多道程序系统中,进程是并发执行的。这些进程间存在着不同的相互制约关系,主要表现为同步和互斥两个方面。信号量机制是解决进程间同步与互斥的有效方法。下面是信号量应用实例。
    图5-1所示代码是在µC/OS-II操作系统上运行的一个应用的主函数。该函数创建了任务Task1和Task2,其中Task1实现从键盘读入一个字符的功能,Task2将该字符输出到屏幕,它们使用信号量和一个公共变量buffer来传递该字符。
    主函数、Task1和Task2中所调用的函数原型说明如下:
  a. 创建一个信号量:OS_EVENT *OSSemCreate(INT16U value);
  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,
 
    图5-1  应用的主函数
【问题1】(5分)
    请简述什么是临界资源?什么是临界区?访问临界资源应遵循哪些原则?
【问题2】(4分)
    设S为信号量,P、V操作的形式化定义如图5-2和图5-3所示,请完成该形式化定义,将应填入(n)处的内容写在答题纸的对应栏中。
 
    图5-2  P操作的形式化定义
 
    图5-3  V操作的形式化定义
【问题3】(6分)
    请根据本题要求完善任务Task1(图5-4)和任务Task2(图5-5)的程序代码,填补图中的空缺,将答案填写在答题纸的对应栏中。
 
    图5-4  任务1的程序
 
    图5-5  任务2的程序

参考答案

 

相关试题