linux臨界區是指每個進程中訪問臨界資源的那段程序,臨界資源是一次僅允許一個進程使用的共享資源;每次只準許一個進程進入臨界區,進入后不允許其他進程進入。
本教程操作環境:linux5.9.8系統、Dell G3電腦。
1、什么是臨界區??
答:每個進程中訪問臨界資源的那段程序稱為臨界區(臨界資源是一次僅允許一個進程使用的共享資源)。每次只準許一個進程進入臨界區,進入后不允許其他進程進入。?
2、進程進入臨界區的調度原則是:?
①如果有若干進程要求進入空閑的臨界區,一次僅允許一個進程進入。②任何時候,處于臨界區內的進程不可多于一個。如已有進程進入自己的臨界區,則其它所有試圖進入臨界區的進程必須等待。③進入臨界區的進程要在有限時間內退出,以便其它進程能及時進入自己的臨界區。④如果進程不能進入自己的臨界區,則應讓出CPU,避免進程出現“忙等”現象。
互斥對象是一種最簡單的內核對象,用它可以方便的實現對某一資源的互斥訪問。因為它是內核對象,因此可以產生信號,實際上,程序中就是利用這一點實現互斥的。? ?
? 如果沒記錯的話,臨界區并不是內核對象,而是系統提供的一種數據結構,程序中可以聲明一個該類型變量,之后用它來實現對資源的互斥訪問。當欲訪問某一臨界資源時,先將該臨界區加鎖(如果臨界區不空閑,等待),用完該資源后,將臨界區釋放。? ?
? 一般,將他們用于線程間的同步,而且通常可以互換使用。? ?
? 如果要實現復雜互斥,應使用其它方法,如信號量內核對象等。臨界區對象不能跨越進程,是線程間共享數據區的同步對象;互斥對象可以作為進程間共享數據區的同步對象。
推薦學習:《linux視頻教程》