阅读下列说明和图,回答问题,将解答填入答题纸的对应栏内。 【说明】 服务型智能扫地机器人涉及了众多传感器,通过对环境信息的融合感知进行行为决策。同时也设计了丰富的多媒体人机交互系统,实现输入输出功能。 该机器人系统按照图4.2的方式接收传感器采集数据,并

admin2021-03-25  27

问题 阅读下列说明和图,回答问题,将解答填入答题纸的对应栏内。
【说明】
服务型智能扫地机器人涉及了众多传感器,通过对环境信息的融合感知进行行为决策。同时也设计了丰富的多媒体人机交互系统,实现输入输出功能。
该机器人系统按照图4.2的方式接收传感器采集数据,并由上层应用程序对数据进行处理。当应用访问操作速度和底层硬件输入的速度存在较大差异时,采用环形缓冲机制,可以起到良好的缓冲作用,减少丢包率。李工设计的环形缓冲是基于先进先出(FIFO)的原则,并设计了环形缓冲的数据结构,读写指针各自独立,读任务和写任务可以同时访问环形缓冲,无需互斥信号量的介入。但是,在运行多任务时,如果存在多个读任务和多个写任务同时操作环形缓冲,则需要应用互斥操作机制。
1.请简述互斥操作的作用。
2.为了在多任务环境中能正确使用环形缓冲,不发生读写冲突,增加了读写锁进行保护。应用任务读取环形缓冲的伪代码如下,请完善其中空(1)~(3)处的内容,将答案写入答题纸对应栏内。
BOOL bReadLock=FALSE;
BOOL bWriteLock=FALSE;
intReadRingBuf()
(
if((环形队列为空)||(1))
return 0
(2);
将环形队列中的数据拷贝到应用缓冲区;
调整读指针;
(3);
返回直接读取数据长度;
}

选项

答案 1.互斥操作用来保证共享数据操作的完整性。通过互斥锁保证任一时刻只能有一个应用访问共享对象。 2. (1)bReadLock为真或bReadLock==TRUE (2)bReadLock=TRUE或等效形式 (3)bReadLock=FALSE或等效形式

解析 (1)在编程中引入了对象互斥的概念,来保证共享数据操作的完整性。每个对象都对应于一个可称为“互斥锁”的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。
(2)在多任务操作系统中,同时运行的多个任务可能都需要使用同一种资源。互斥锁(mutex)是一种简单的加锁的方法来控制对共享资源的访问,互斥锁只有两种状态,即上锁(lock)和解锁(unlock)。
互斥锁的特点有:原子性,把一个互斥量锁定为一个原子操作,这意味着操作系统保证了如果一个线程锁定了一个互斥量,没有其他线程在同一时间可以成功锁定这个互斥量i唯一性,如果一个线程锁定了一个互斥量,在它解除锁定之前,没有其他线程可以锁定这个互斥量;非繁忙等待,如果一个线程已经锁定了一个互斥量,第二个线程又试图去锁定这个互斥量,则第二个线程将被挂起(不占用任何CPU资源),直到第一个线程解除对这个互斥量的锁定为止,第二个线程则被唤醒并继续执行,同时锁定这个互斥量。
互斥锁的操作流程如下:
1.在访问共享资源后临界区域前,对互斥锁进行加锁;
2.在访问完成后释放互斥锁导上的锁;
3.对互斥锁进行加锁后,任何其他试图再次对互斥锁加锁的线程将会被阻塞,直到锁被释放。
转载请注明原文地址:https://jikaoti.com/ti/nJI7FFFM
0

相关试题推荐
最新回复(0)