日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

计算机操作系统之三:进程与线程的描述与控制

發布時間:2023/12/15 windows 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算机操作系统之三:进程与线程的描述与控制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

3.1 進程的引入

3.1.1 程序的并發執行及特點

為了提高計算機的利用率、處理速度和系統的處理能力,并行處理技術和并發程序設計技巧在計算機中得到廣泛應用,成為現代操作系統的基本特征之一。所謂程序的并發執行是指:若干個程序段同時在系統中運行,這些程序段的執行在時間上是重疊的,一個程序段的執行尚未結束,另一個程序段的執行已經開始,及時這種重疊式很小的一部分。

3.1.2 并發執行的特點

  • 程序執行的間斷性(異步性)
  • 資源分配的動態性
  • 程序并發執行的相互制約性
  • 相互通信的可能性
  • 同步與互斥的必要性:有合作關系的各程序不僅需要相互通信,而且還要隨時調整他們之間的相對速度,這就是同步的必要性,另外,系統中的許多資源必須是互斥使用的,否則會引起并發系統中所特有的不確定性錯誤,這些就是互斥的必要性。

3.2 進程的概念

3.1.1 進程的定義

進程是一個具有一定獨立功能的程序在一個數據集合上運行的過程,它是系統進行資源分配和調度的一個獨立單元。

3.1.2 進程的特點

  • 動態性:進程是一個動態的概念,而程序是一個靜態的概念。程序是指令的有序集合,其本身沒有任何運行的含義。而進程是程序在處理機上的一次執行過程,具有生命期,它動態的被創建,并被調度執行,執行完成后銷往。
  • 并發性。
  • 獨立性。
  • 制約性:主要表現在護持的使用資源和相關進程之間必要的同步和通信。
  • 結構性:進程由程序、數據集合和描述其運行過程的數據結構(PCB)組成。

3.1.3 進程控制塊

在操作系統中,進程包括三部分:程序,數據和進程控制塊(PCB)。PCB是一個數據結構,用來存儲進程以及與其相關的信息。在實際操作系統中,PCB的大小和個數是一定的,系統會為每個進程分配一個PCB結構,操作系統只有通過PCB才能感知進程的存在,因此操作系統中PCB的個數就是該系統可最大并行的進程數。

3.1.4 進程控制

所謂的進程控制,是指存在于操作系統代碼中的一段用于對進程進行調度和控制的程序段,它主要通過控制PCB來調控進程。

前面說過,操作系統是分層的結構,總體上分成內核和外殼兩部分,這樣,處理器在運行的時候,為了避免內核中信息被用戶程序篡改,因此處理器分成了兩個運行狀態:核心態和用戶態。其中,核心態用來運行操作系統的內核,用戶態用來運行操作系統的外殼和用戶程序


3.3 進程的狀態



具有掛起狀態的進程狀態轉化模型如上圖所示。一些狀態的說明:
  • 創建。進程的創建主要通過調用創建原語來實現。創建原語的主要功能是建立進程的PCB,將調用者提供的信息添加到PCB中。
  • 終止。進程的終止通過調用終止原語來實現。主要的功能是將當前運行進程所占用的資源歸還給父進程,從PCB總鏈中將其刪除,將PCB結構歸還給系統。
  • 等待。進程等待的事件沒有發生時,處于該狀態下。
  • 進程喚醒。當處于等待隊列中的進程所等待的時間發生時,則由“發現者”進程調用喚醒原語,將等待該事件的進程喚醒。喚醒主要有兩種方法:一種是由系統進程喚醒,另一種是由時間發生進程喚醒,處于等待狀態的進程只能由其他進程來喚醒,不可以自己喚醒自己。
  • 進程掛起。在沒有進程掛起的情況下,如果系統中存在很多的進程,那么就需要將所有的進程都放在內存中,這樣可能會導致內存不足,使得程序運行效率不高,因此引入了內存掛起的概念。對于上面內存不足的情況,有兩種方法解決,一種是增大內存,顯然這不現實,另一種就是使用交換技術,在磁盤上設置一些虛擬內存,用于存放一些未被執行的進程。

  • 狀態轉換的說明:


    3.4 線程的概念

    進程的引入可以實現并行計算,線程的引入可以進一步提高系統的并發性。一個進程可以擁有多個線程,這些線程共享同一地址空間,他不擁有系統資源,且只需要很少在運行時必不可少的硬件,因此線程在創建,撤銷,切換等環節所需要的時空開銷比進程要少的多。

    3.5 線程的狀態

    線程的狀態與進程的狀態差不多,只是沒有掛起狀態,由于對于同一個進程其所有的線程共享同一個地址,因此

    如果一個進程被換出,它所有的線程也都被換出,可以理解為進程的狀態和線程的狀態不是一個層面上的,且進程的狀態往往決定了他所有的線程的狀態。

  • 創建。當創建一個新的進程的時候,系統同時也為該進程創建了一個線程(主線程),該線程可以創建其他的新的線程。
  • 就緒。
  • 運行。
  • 阻塞。
  • 終止。
  • 3.6 線程與進程的比較

    • 調度分派。線程是可調度的工作單元,在有線程的進程中,進程不再成為調度的基本單位。
    • 資源擁有。進程擁有資源,線程不擁有資源,只是使用進程的資源。
    • 地址空間。不同進程的地址空間是相互獨立的,同一進程的各線程共享同一地址空間。
    • 一個進程可以擁有多個線程,反過來不行。
    • 通信關系。進程間的通信需要使用系統的通信機制,同一進程中的各線程可以通過直接讀寫數據段(如全局變量)來進行通信。

    3.7 用戶級線程和內核級線程

    3.7.1 線程的類型

    根據對線程控制方式的不同,線程可分為內核級線程和用戶級線程。

    • 內核級線程。這類線程的控制(線程的創建等)依賴于內核,內核知道該線程。
    • 用戶級線程。這類線程的控制不依賴于內核,而是他所屬的進程通過線程庫進程的創建等控制,內核不知道該線程。
    線程的類型是由系統所確定好的,eg,windows xp系統使用的就是內核級線程。

    3.7.2 線程的調度和切換速度

    線程的調度方法有搶占方式和非搶占方式,其調度算法有時間片輪轉法、優先權法等。

    3.7.3 系統調用

    當用戶進程調用一個系統調用時,根絕線程的類型不同,調用的方式也不同。

    • 內核級線程在調用的時候,由于內核知道該線程的存在,因此該線程作為基本的調度單位,該線程被阻塞,但是該進程中的其他線程仍然可以運行。
    • 用戶級線程在調用的時候,由于內核不知道該線程的存在,因此在調度的時候,只能看成是進程級的調用,因此整個進程被阻塞,去執行系統調用。






    總結

    以上是生活随笔為你收集整理的计算机操作系统之三:进程与线程的描述与控制的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。