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

歡迎訪問 生活随笔!

生活随笔

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

windows

操作系统难点解析之进程和线程

發布時間:2023/12/15 windows 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作系统难点解析之进程和线程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

操作系統難點解析之進程和線程

關于操作系統,其中最為核心的概念就是進程和線程(輕量級進程)。在進程和線程的基礎之上,進而衍生出了并發和互斥的問題。本文著重介紹在并發和互斥中最為經典的幾個問題,同時會簡單介紹進程和線程的幾個模型。

進程模型

進程模型中主要涉及的是狀態的定義,以及各狀態之間的轉換問題。目前主要有兩狀態模型,五狀態模型和七狀態模型。很明顯,狀態越多的模型,對進程的描述更加精細,同時復雜度也就越高。

兩狀態模型

該模型中進程擁有運行態和非運行態兩種狀態。運行態和非運行態之間的轉換由調度程序完成。該模型一般僅僅只在簡單的操作系統中可以見到,目前很少在主流操作系統中使用。

五狀態模型

五狀態模型將菲運行態進行了細分,其中包含就緒態、阻塞態、新建態和退出態。各自含義如下表。

狀態名含義
運行態進程正在執行
就緒態進程做好了執行的準備
阻塞態進行在某些事情發生前不能執行
新建態進程控制塊已經創建但還未加載到內存中的進程
退出態操作系統從可執行進程組中釋放出的進程

七狀態進程模型

在講述七狀態模型之前,首先要說明下五狀態模型存在的一個問題。由于在計算機中I/O操作相對而言是較慢的,也就是說隨著操作系統持續運行,會存在某些情況下,所有進程都處于阻塞態,且都是在等待I/O事件。這顯然是對CPU的巨大浪費,為了解決這個問題,我們可以通過將部分進程換出內存,載入新的進程執行。即,我們可以加入掛起態來表示進程不在內存中。 相比較于五狀態模型,七狀態模型中新增了阻塞掛起態就緒掛起態

狀態名含義
阻塞掛起態進程已在外存中并等待某個事件
就緒掛起態進程已在外存中,但只要載入內存中即可執行

線程模型

對于線程,并沒有像進程一樣存在復雜的各類模型,線程的狀態中最為重要的即是就緒態、運行態和阻塞態。線程擁有進程的資源和內存空間,即線程可以輕松的訪問進程的資源。線程從實現的思路可以分為三類,用戶級線程、內核級線程和組合型線程。

  • 用戶級線程,管理線程的工作由應用程序完成,內核完全不知道線程的存在。
  • 內核級線程,管理線程的工作都由內核完成,應用程序完全不參與。
  • 組合型線程,組合型線程是用戶級和內核級線程的結合,線程創建完全在用戶空間中完成,線程的調度和同步也在應用程序中進程,但是一個應用程序中的多個用戶級線程會被映射到一些內核級線程上。
  • 進程和線程的并發

    對于現代操作系統來說,并發是一個最為重要的特性,并發在很大程度上提高了計算機資源的利用效率,但是并發也為計算機操作系統帶來了很多復雜性。在并發中,主要需要解決的就是線程和進程的同步及互斥的問題。 下表列出一些較為關鍵的術語,便于查看。

    名稱含義
    原子操作一個函數或動作由一個或多個指令序列實現,且不存在其他進程可以中斷此操作。
    臨界區一段代碼,在這段代碼中進程將訪問共享資源,且同一時間只能有一個進程可以在臨界區中。
    死鎖兩個或兩個以上的進程因每個進程都在等待其他進程做完某些事情而不能繼續執行的情形。
    活鎖兩個或兩個以上的進程為響應其他進程中的變化而持續改變自己的狀態但不做有用的工作的情形。
    互斥當一個進程在臨界區訪問共享資源時,其他進程不能進入該臨界區訪問任何共享資源的情形。
    競爭條件多個進程在讀寫一個共享數據時,結果依賴于他們執行的相對時間的情形。
    饑餓一個可運行進程盡管能繼續執行,但被調度程序無限期地忽視,而不能被調度執行的情形。

    下表列出常用的并發機制 機制名 |含義 | ------------|---------------| 信號量 |用于進程間傳遞信號的一個整數,在信號量上的操作都是原子的。遞減用于阻塞某進程,遞增用于解除某進程阻塞。 二元信號量 |只取0和1的信號量。 互斥量 |類似于二元信號量,區別在于為其加鎖和解鎖的進程必須相同。 條件變量 |一種數據類型,用于阻塞進程或線程,直到特定的條件為真。 管程 |一種編程語言結構,在數據結構中封裝了變量,訪問過程和初始化代碼。 事件標志 |用作同步機制的一個內存字。 消息 |兩個進程交換信息的一種方法,也可用于同步。 自旋鎖 |互斥機制,進程在一個無條件循環中執行,等待鎖變量的值可用。

    轉載于:https://my.oschina.net/taodf/blog/1831473

    總結

    以上是生活随笔為你收集整理的操作系统难点解析之进程和线程的全部內容,希望文章能夠幫你解決所遇到的問題。

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