進程的組成


進程實體由三部分組成:
  PCB(進程控制塊):

    進程描述信息

    進程控制和管理信息

    資源分配信息

    處理機相關信息   

    (以.exe的文件存儲在硬盤中,在程序運行之前需把他從硬盤讀入內存中,操作系統會為他建立一個相對應的進程,【PCB 指令序列 數據段】cpu從內存中讀入指令)   

  程序段:

    程序的代碼

  數據段:

    運行過程中產生的各種數據 例如:用戶定義的變量

 

 

進程是進程實體的運行過程,是系統進行資源分配和調度的一個獨立單位。PCB是進程存在的唯一標志。

進程的特征:動態性 並發性 獨立性 異步性 結構性

 

 

進程狀態的轉換

  進程的狀態:新建態 就緒態 運行態 阻塞態 終止態

  新建態創建一個進程所其他需要的東西,准備就緒后進入就緒態此時還沒有CPU,運行態使用CPU運行進程,若是有其他資源不滿足就會進入阻塞態此時不占用CPU,CPU給其他進程使用,就緒狀態的進程等待系統資源的分配,資源分配到位的話就回復運行態

  ,執行完畢進入終止態,還會有其他的情況(遇到不可修復的錯誤)也會進入終止態,終止態下CPU會收回所有的資源,最后刪除PCB,進程消失。

       另外也會有進程直接從運營態直接到就緒態的情況,例如:時間片用完了,或者CPU被其他優先級更高的進程搶占了。

進程控制

   什么是進程控制?

    進程控制的主要功能就是對系統中所有的進程實施有效的管理,它具有創建新進程、撤銷已有進程,實現進程的切換的功能。

   如何實現進程的控制?

    用原語(原語一種簡單的程序,具有原子性,就是一旦開始就必須執行完。)原子性是通關兩種特權指令來實現的“關中斷指令”、“開中斷指令”。

   控制進程的相關原語

      進程的創建

        創建原語

          申請一個空白的PCB

          為進程分配所需的資源

          初始化PCB

          將PCB放入就緒隊列

        引起進程創建的事件

          用戶登錄

          作業調度

          應用請求

          提供服務

      進程的終止

          終止言語

            從PCB集找出進程終止的PCB

            剝奪CPU,將CPU交給其他進程使用

            終止它的所有子進程

            撤銷進程所有的資源還給系統或者父親進程

            刪除PCB

          引起終止的事件

            正常結束

            異常終止

            外界干預

      進程的阻塞

          阻塞原語

            在PCB集里找到阻塞的PCB

            保護進程運行現場,將PCB設置成為阻塞態,暫停進程運行。

            將PCB插入相應事件的等待隊列

          引起阻塞的事件

            等待系統分配某種資源(主動)

            需要等待與其他相互合作的進程

      進程的喚醒

          喚醒原語

              在等待的PCB集中找到要喚醒的PCB

              從等待隊列中移除,設置狀態為就緒態。

            將PCB插入就緒隊列中,等待被調度

          引起喚醒的事件

            等待事件發生

      進程的切換

          切換原語

            將運行環境信息存入PCB

            PCB移到相應隊列

            選擇另一進程,並更新PCB

            根據PCB恢復新進程所需要的運行環境信息  

          引起進程切換的事件

            當前進程的時間片到了

            遇到具有更高優先級的進程

            應用程序主動請求阻塞

            當前進程的終止

 

進程通信

  共享存儲

    基於數據結構的共享

    基於存儲區的共享

    ···首先兩個進程共享是互斥的,操作系統只提供共享空間和同步互斥工具。

  信息傳遞

   消息由消息頭和消息體構成,消息頭有表明該誰接收消息,進程通過發送/接受兩個原語來收發消息。

    直接通信方式

      消息直接掛在進程接受消息的緩沖隊列上

    間接通信方式

      間接通信方式是把消息直接發送到信箱(中國實體)里。

  管道通信

    什么是管道通信?就是在內存中開辟大小固定一個緩沖區。

    在管道通信中一個管道只能實現半雙工的通信(一個管道在一段時間內只能實現單向的傳輸),如果實現雙向同時通信則需要兩個管道。

    各進程應是互斥的訪問管道

    當管道進程一沒寫滿的時候是不允許讀的,當進程二沒讀完的時候也是不允許寫的。如果進程一寫滿的話,進程一就會阻塞,當管道數據被讀完時,進程又會被阻塞。


免責聲明!

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



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