「这是我参与11月更文挑战的第25天,活动详情查看:2021最后一次更文挑战」
前言
Hello!小伙伴!
非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~
自我介绍 ଘ(੭ˊᵕˋ)੭
昵称:海轰
标签:程序猿|C++选手|学生
简介:因C语言结识编程,随后转入计算机专业,有幸拿过一些国奖、省奖...已保研。目前正在学习C++/Linux/Python
学习经验:扎实基础 + 多做笔记 + 多敲代码 + 多思考 + 学好英语!
6.1 临界区
1、下面有关数据不一致性的论述中,错误的是()。C A.存在于并发运行的协同进程之间 B.同一进程在同一批数据上多次运行的结果可能不一样 C.一个进程在同一批数据上的运行结果每次都不一样 D.单任务操作系统不存在数据不一致性
2、防止竞争条件出现的有效方法有()。A、C A.同步 B.调度 C.互斥 D.不共享数据
解释:
3、临界区使用准则包括()。A、B、D A.互斥 B.有限等待 C.同步 D.有空让进
解释:
4、临界区是涉及临界资源的数据区。×
解释:
5、一次只允许一个进程使用的资源称为互斥资源。√
补充:
6.2 信号量
1、如P和V操作的信号量S初值为4,则现在S=-1,表示有()个进程在等待该信号量。B A.0 B.1 C.2 D.4
2、用V操作可以唤醒一个进程,被唤醒的进程状态可能会变为()。A A.就绪 B.运行 C.等待 D.结束
3、S必须置一次且只能置一次初值。√
解释:
4、记录型信号量S的当前值为0,一个进程调用wait(S)会把自己阻塞并挂到S的等待队列上。√
5、记录型信号量的值不可能为负数。×
6.3 生产者消费者问题
1、有两个并发进程,设置了互斥信号量mutex,现在mutex=0,则表示()。C A.两个进程均进入临界区 B.没有进程进入临界区 C.一个进程进入临界区 D.一个进程进入临界区,另一个在等待
解释:mutex初值为1,表示允许一个进程进入临界资源,当由一个进程进入临界区且没有进程等待进入时,mutex减1,变为0,|mutex|为等待进入的进程数。就此题而言,当mutex=1时表示没有进程进入临界区;当mutex=-1时表示有一个进程进入临界区,另一个进程等待进入。 ---来源:牛客网
2、所有的生产者必须等待消费者先运行的前提条件是()。B A.缓冲区为空 B.缓冲区为满 C.缓冲区不可用 D.缓冲区半满
3、所有的消费者必须等待生产者先运行的前提条件是()。A A.缓冲区空 B.缓冲区满 C.缓冲区不可用 D.缓冲区半空
4、消费者阻塞在wait(m)(m是互斥信号量)的条件是()。C、D A.没有空缓冲区 B.没有满缓冲区 C.有其它生产者已经进入临界区存放产品 D.有其它消费者已经进入临界区取产品
5、在生产者消费者问题中,以下关于唤醒操作正确的是()。A、B、C、D A.生产者唤醒其它生产者 B.生产者唤醒消费者 C.消费者唤醒其它消费者 D.消费者唤醒生产者