首页学历类考试大学计算机科学
(简答题)

简述信号量的定义和作用。P,V操作原语是如何定义的?

正确答案

信号量一般是由两个成员组成的数据结构,其中一个成员是整型变量,表示该信号量的值,它与相应资源的使用情况有关;另一个是指向PCB的指针。当多个进程都等待同一信号量时,它们就排成一个队列,由信号量的指针项指出该队列的队首。
信号量通常可以简单反映出相应资源的使用情况,它与P、V操作原语一起使用可实现进程的同步和互斥。P,V操作原语有如下定义。
P(S)顺序执行下述两个动作:
⑴信号量的值减1,即S=S-1;
⑵如果S>=0,则该进程继续执行。
如果S<0,则把该进程的状态置为阻塞态,把相应的PCB连入该信号量队列的末尾,并放弃处理机,进行等待(直到其他进程在S上执行V操作,把它释放出来为止)。
V(S)顺序执行下述两个动作:
⑴S值加1,即S=S+1;
⑵如果S>0,则该进程继续运行;
如果S<=0,则释放信号量队列上的第一个PCB所对应的进程(把阻塞态改为就绪态),执行V操作的进程继续运行。

答案解析

相似试题

  • (判断题)

    OSI参考模型相邻层间的接口定义了原语操作和高层向下层提供的服务。

    答案解析

  • (简答题)

    一个二元信号量是一个其值只能取0,1的信号量,给出一个二元信号量实现一般信号量P、V操作的程序。

    答案解析

  • (简答题)

    简述进程的几种状态和引起状态转换的典型原因,以及相关的操作原语。

    答案解析

  • (判断题)

    原语是一种不可分割的操作。

    答案解析

  • (单选题)

    将“文件”/“最近打开”/“清除最近”命令定义为快捷键Ctrl+P,其操作过程为()

    答案解析

  • (填空题)

    设顺序存储的线性表存储结构定义为: struct sequnce {ELEMTP elem[MAXSIZE]; int len; } 将下列简单插入算法补充完整。 void insert(struct sequnce *p,int i,ELEMTP x) {v=*p; if(iv.len+1)printf(“Overflow“); else { for(j=v.len;();j- -)(); v.elem[i]= () ;v.len=(); } }

    答案解析

  • (单选题)

    如果进程PA对信号量S执行P操作,则信号量S的值应()

    答案解析

  • (简答题)

    在类定义中,说明成员的访问权限的public、private和protected三个关键字的作用是什么?请分别简述之。

    答案解析

  • (单选题)

    对于记录型信号量,在执行一次P操作(wait操作)时,信号量的值应当为减1;当其值为()时,进程应阻塞。 

    答案解析

快考试在线搜题