niusouti.com

阅读以下关于利用信号量机制解决进程同步与互斥方面的应用实例,回答问题1至问题3。[说明]在多道程序系统中,进程是并发执行的。这些进程间存在着不同的相互制约关系,主要表现为同步和互斥两个方面。信号量机制是解决进程间同步与互斥的有效方法。下面是信号量应用实例。下图所示代码是在μC/OS-II操作系统上运行的一个应用的主函数。该函数创建了任务Task1和Task2,其中Task1实现从键盘读入一个字符的功能,Task2将该字符输出到屏幕,它们使用信号量和一个公共变量buffer来传递该字符。主函数、Task1和

题目

阅读以下关于利用信号量机制解决进程同步与互斥方面的应用实例,回答问题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至问题3。[说明]在多道程序系统中,进程是并发执行的。这些进程间存在着不同的相互制约关系,主要表现为同步和互斥两个方面。信号量机制是解决进程间”相关问题
  • 第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)处的内容写在答题纸

    的对应栏中。


    正确答案:
    分析本题考查嵌入式C/C++语言编程基础知识。【问题1】函数swap采用值传递,虽然将形参nl和n2交换了,但是并不影响到实参,所以执行【程序1】后,实参变量并没有完成数据交换。将值传递改成指针传递就可以了。对应的swap函数应修改如下:【问题3】在多道程序系统中,进程是并发执行的,这些进程之间存在着不同的相互制约关系。进程之间的这种制约关系来源于并发进程的合作以及对资源的共享。进程在运行过程中,一般会与其它进程共享资源,而有些资源的使用具有排他性。系统中的多个进程可以共享系统的各种资源,然而其中许多资源一次只能为一个进程所使用,通常把一次仅允许一个进程使用的资源称为临界资源。许多物理设备都属于临界资源,如打印机、绘图机等。除物理设备外,还有许多变量、数据等都可由若干进程所共享,它们也属于临界资源。进程中访问临界资源的那段代码称为临界区,也称为临界段。访问临界资源应遵循如下原则:①空闲让进(或有空即进):当没有进程处于临界区时,可以允许一个请求进入临界区的进程立即进入自己的临界区:②忙则等待(或无空则等):当已有进程进入其临界区时,其它试图进入临界区的进程必须等待;③有限等待:对要求访问临界资源的进程,应保证能在有限时间内进入自己的临界区;④让权等待:当进程不能进入自己的临界区时,应释放处理机。信号量是荷兰著名的计算机科学家Dijkstra于1965年提出的一个同步机制,其基本思想是在多个相互合作的进程之间使用简单的信号来同步。在操作系统中,信号量是表示资源的实体,除信号量的初值外,信号量的值仅能由P操作(又称Wait操作)和V操作(又称Signal操作)改变。设S为一个信号量.P(S)执行时主要完成:先执行S=S-I:若S0则进程继续运行;若s<o则阻塞改进程,并将它插入该信号量的等待队列中。v(s)执行时主要完成:先执行S=S+I:若s>o则进程继续执行;若S≤0则从该信号量等待队列中移出第一个进程.使其变为就绪状态并插入就绪队列,然后再返回原进程继续执行。P、V操作的形式化描述如下:P(S){S—IF(S<O){阻塞该进程,将该进程插入信号量s的等待队列;}}V(S){s++;IF(S<=0){从信号量S的等待队列中取出队首进程,将其插入就绪队列;}}试题五参考答案【问题1】两个变量不能交换值的原因:因为函数是传值的,函数形参值的交换,并不影响到实参的值的变化。正确的函数编写如下(下面只是范倒,变量名称不作要求):voidswap(int*pnl.int*pn2){inttmp=*pnl;*pnl=*pn2;*pn2=tmp;}【问题2】第一次输出:fun(5)=5第二次输出:fun(7)=13第三次输出:fun(9)=34【问题3]临界资源:一次只能使一个进程访问的资源称为临界资源临界区:进程中访问临界资源的那段代码称为临界区。(l)S-(2)S<0(3)S++(4)S<=0

  • 第2题:

    信号量机制是一种有效的实现进程同步与互斥的工具。信号量只能由P、V操作来改变。

    A

    B



  • 第3题:

    2、下列关于进程同步和互斥的说法中,错误的是:

    A.进程同步是进程互斥的一种特殊情况

    B.同步就是让所有的进程按照一定的规则执行

    C.进程的同步和互斥都涉及并发进程访问共享资源的问题

    D.进程的同步包括进程互斥和进程同步


    进程同步是进程互斥的一种特殊情况

  • 第4题:

    不需要信号量能实现的功能是()。

    A.进程同步
    B.进程互斥
    C.执行的前趋关系
    D.进程的并发执行

    答案:D
    解析:
    在多道程序技术系统中,信号量机制是一种有效的实现进程同步与互斥的工具。进程执行的前趋关系实质上是指进程的同步关系。除此以外,只有进程的并发执行不需要信号量来控制。

  • 第5题:

    信号量机制是解决进程同步的有效手段。


    错误()