ZKX's LAB

临界资源 临界区 什么是临界区?进程进入临界区的调度原则是什么???

2020-10-05知识17

I什么是临界资源,什么是临界区? 临界资源:一次只能允许一个进程访问的资源临界区:访问临界资源的那段程序代码区

临界资源与临界区的区别 请参阅:1、不2113论是硬件临界资源,还5261是软件临界资源,多个进程必须互斥地对4102它进行访问。1653每个进程中访问临界资源的那段代码称为临界区(Critical Section)。每个进程中访问临界资源的那段程序称为临界区(Critical Section)(临界资源是一次仅允许一个进程使用的共享资源)。每次只准许一个进程进入临界区,进入后不允许其他进程进入。不论是硬件临界资源,还是软件临界资源,多个进程必须互斥地对它进行访问。多个进程中涉及到同一个临界资源的临界区称为相关临界区。进程进入临界区的调度原则是:①如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入。②任何时候,处于临界区内的进程不可多于一个。如已有进程进入自己的临界区,则其它所有试图进入临界区的进程必须等待。③进入临界区的进程要在有限时间内退出,以便其它进程能及时进入自己的临界区。④如果进程不能进入自己的临界区,则应让出CPU,避免进程出现“忙等”现象。如果有多个线程试图同时访问临界区,那么在有一个线程进入后其他所有试图访问此临界区的线程将被挂起,并一直持续到进入临界区的线程离开。临界区在被释放后,其他线程可以继续抢占,并以此达到用原子方式。

什么是临界区和临界资源?对临界区管理的基本原则是什么? 1、临界区指的是一个访问2113共用资源(例如:共用设备或5261是共用存储器)的程序片段,4102而这1653些共用资源又无法同时被多个线程访问的特性。当有线程进入临界区段时,其他线程或是进程必须等待,有一些同步的机制必须在临界区段的进入点与离开点实现,以确保这些共用资源是被互斥获得使用。只能被单一线程访问的设备,例如:打印机。2、临界资源:多道程序系统中存在许多进程,它们共享各种资源,然而有很多资源一次只能供一个进程使用。一次仅允许一个进程使用的资源称为临界资源。许多物理设备都属于临界资源,如输入机、打印机、磁带机等。3、进程进入临界区的调度原则是:(1)如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入。(2)进入临界区的进程要在有限时间内退出,以便其它进程能及时进入自己的临界区。(3)任何时候,处于临界区内的进程不可多于一个。(4)如果进程不能进入自己的临界区,则应让出CPU,避免进程出现“忙等”现象。扩展资料1、临界区存在的问题临界区的退出,不会检测是否是已经进入的线程,也就是说,可以在A线程中调用进入临界区函数,在B线程调用退出临界区的函数,同样是成功。临界区内的数据一次只能同时被。

思考在两个线程函数中,哪些是临界资源?哪些代码是临界区 当多个线程访问一个独占性共享资源时,可以使用\\“临界区\\”对象。任一时刻只有一个线程可以拥有临界区对象,拥有临界区的线程可以访问被保护起来的资源或代码段,其他希望进入临界区的线程将被挂起等待,直到拥有临界区的线程放弃临界区时为止,这样就保证了不会在同一时刻出现多个线程访问共享资源。\\r\\n\\r\\nCCriticalSection类的用法非常简单,步骤如下:\\r\\n \\r\\n\\r\\n定义CCriticalSection类的一个全局对象(以使各个线程均能访问),如CCriticalSection critical_section;\\r\\n在访问需要保护的资源或代码之前,调用CCriticalSection类的成员Lock()获得临界区对象:critical_section.Lock();\\r\\n\\r\\n在线程中调用该函数来使线程获得它所请求的临界区。如果此时没有其它线程占有临界区对象,则调用Lock()的线程获得临界区;否则,线程将被挂起,并放入到一个系统队列中等待,直到当前拥有临界区的线程释放了临界区时为止。\\r\\n访问临界区完毕后,使用CCriticalSection的成员函数Unlock()来释放临界区:critical_section.Unlock();\\r\\n\\r\\n再通俗一点讲,就是线程A执行到critical_section.Lock();语句时,如果其它线程(B)正在执行critical_section.Lock();语句后且。

#临界区

随机阅读

qrcode
访问手机版