進程互斥與同步


  1. 解釋並發與並行,並說明兩者關系。
  2. 進程間有哪幾種關系?分別要采取什么策略?
  3. 為什么說進程的互斥也是一種同步?
  4. 解釋死鎖與“飢餓”,並說明兩者關系
  5. 什么叫做臨界區?如何解決進程對臨界資源的訪問沖突?
  6. 信號量的物理意義是什么?
  7. 理解五個哲學家吃面問題,並能盲寫出偽代碼。
  8. 一個超市有n個顧客購物,只有一個收銀員,試用信號量P、V操作描述顧客進程和收銀員之間的關系。寫偽代碼。

答:

1、並行性是指兩個或多個事件在同一時刻發生。並發性是指兩個或多個事件在同一事件間隔內發生。

在多道程序環境下,並發性是指在一段時間內,宏觀上有多個程序同時運行,但在單處理器(CPU)系統每一時刻卻僅能有一道程序執行,故微觀上這些程序只能是分時地交替執行。倘若在計算機系統中有多個處理器,則這些可以並發執行的程序便被分配到多個處理器上,實現並行執行,即利用每個處理器來處理一個可並發執行的程序。

2、進程間有競爭關系、協作關系。競爭關系會產生死鎖、飢餓問題,解決死鎖問題,系統規定一種打印機分配策略:總是把打印機分配給所打印文件最短的進程;解決飢餓問題的策略是FCFS資源分配策略。
3、進程互斥是指若干進程因相互爭奪獨占型資源而產生的競爭制約關系。進程同步是指為完成共同任務的並發進程基於某個條件來協調其活動,因為需要在某些位置上排定執行的先后次序而等待、傳遞信號或消息所產生的協作制約關系。不難看出進程互斥關系是一種特殊的進程同步關系,即逐次使用互斥共享資源,也是對進程使用資源的次序的一種協調。
4、死鎖:一組進程因爭奪資源陷入永遠等待的狀態。飢餓:一個可運行進程由於其他進程總是優先於它,而被調度程序無限期地拖延而不能被執行。死鎖是永遠在等待資源或者別的信號,飢餓是本身的優先級低於別人的優先級而在等待。
5、臨界區:並發進程中與共享變量有關的程序段。

       (1)一次至多只有一個進程進入臨界區內執行。

       (2)如果已有進程在臨界區中,試圖進入此臨界區的其他進程應等待。

       (3)進入臨界區內的進程應在有限時間內退出,以便讓等待隊列中的一個進程進入。

6、信號量是在多線程環境下使用的一種設施, 它負責協調各個線程, 以保證它們能夠正確、合理的使用公共資源。號量分為單值和多值兩種,前者只能被一個線程獲得,后者可以被若干個線程獲得。利用信號量和PV操作即可解決並發進程競爭問題,又可解決並發進程協作問題。

7、五位哲學家吃面問題就是思考過后就會出現飢餓,就要吃面,吃面的前提就是要有左右兩邊的叉子才能吃,吃完把叉子放回左右兩邊。

semaphore CZ[5];

for(int i=0;i<5;i++)

     CZ[i]=1;

cobegin

  process philosopher_i(){

           while(true) {

                    think();

                   P(CZ[i]);

                   P(CZ[(i+1)%5]);

                          eat();

                   V(CZ[i]);

                   V(CZ[(i+1)%5]);

             }

  }

coend

8、int waiting=0;

     int customer=0;

     int worker=1;

cobegin

          process worker() {

                  while(true){

                          P(customer);

                          waiting--;

                          V(worker);

                    }

          }

          prodess customer() {

                     if(waiting<0) {

                           P(worker);

                           V(worker);

                     }

                     if(waiting>0)

                           waiting++;

          }

coend


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM