高并发(操作系统) 练习题 2019-4-24AM
第一题:下面有关共享内存,说法不正确的是?(D)
A.共享内存和使用信号量一样,属于进程间通信的一种方式。
B.使用shmget函数来创建共享内存
C.尽管每个进程都有自己的内存地址,不同的进程可以同时将同一个内存页面映射到自己的地址空间中,从而达到共享内存的目的
D.共享内存提供了同步机制,在第一个进程结束对共享内存的写操作之前,会有自动机制可以阻止第二个进程开始对它进行读取
解释:
ABC均正确。
共享内存并未提供同步机制,当某一个进程对共享内存提供写操作时,并未自动的阻止另一个进程对它进行读取;
共享内存:就是允许多个进程访问同一内存空间,进程间传递和共享数据非常有效
信号量:为了防止多个进程访问共享资源而造成冲突,设置临界区域每次只让一个进程访问,
信号量提供了这样一种机制,用来控制对临界区域的访问.
进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,
就好像它们是由用C语言函数malloc分配的内存一样。
特别提醒:共享内存并未提供同步机制,也就是说,在第一个进程结束对共享内存的写操作之前,并无自动机制可以阻止第二个进程开始对它进行读取。
所以我们通常需要用其他的机制来同步对共享内存的访问,例如前面说到的信号量。
第二题:并发操作会带来哪些数据不一致性? (D)
A.不可修改、不可重复读、脏读、死锁
B.丢失修改、脏读、死锁
C.不可重复读、脏读、死锁
D.丢失修改、不可重复读、脏读<