操作系統幾個常用關鍵的概念

      網友投稿 883 2022-05-29

      應用程序沒有直接訪問鍵盤、顯示器、磁盤或者主存的能力。取而代之的是,它們依靠操作系統提供的服務。我們可以把操作系統看成是應用程序和硬件之間插入的一層軟件,所有應用程序對硬件的操作嘗試都必須通過操作系統。

      操作系統有兩個基本功能:

      1、防止硬件被失控的應用程序濫用。

      2、向應用程序提供簡單一致的機制來控制復雜而又通常大不相同的底層硬件設備。

      一、進程&線程

      進程是操作系統對一個正在運行的程序的一種抽象。在一個系統上可以同時運行多個進程,而每個進程都好像在獨占地使用硬件。而并發運行,則是說一個進程的指令和另一個進程的指令是交錯執行的。在大多數系統中,需要運行的進程數是多于可以運行它們的CPU個數的。傳統系統在一個時刻只能執行一個程序,而先進的多核處理器同時能夠執行多個程序。

      盡管通常我們認為一個進程只有單一的控制流,但是在現代系統中,一個進程實際上可以由多個稱為線程的執行單元組成,每個線程都運行在進程的上下文中,并共享同樣的代碼和全局數據。由于網絡服務器中對并行處理的需求,線程成為越來越重要的編程模型,因為多線程之間比多進程之間更容易共享數據,也因為線程一般來說都比進程更高效。當有多處理器可用的時候,多線程也是一種使得程序可以運行得更快的方法。

      二、并發&并行

      操作系統中幾個常用關鍵的概念

      1、并發(Concurrent)一般是指一個時間段中有幾個程序都處于已啟動運行到運行完畢之間,且這幾個程序都是在同一個處理機上運行,但任一個時刻點上只有一個程序在處理機上運行。

      (1.線程級并發通常有兩種策略,多核技術和超線程技術:

      (1)多核處理器是指在一枚處理器中集成兩個或多個完整的計算引擎(內核),此時處理器能支持系統總線上的多個處理器,由總線控制器提供所有總線控制信號和命令信號。多核技術可以很好的解決由于單獨提高單核芯片的速度會產生過多熱量且無法帶來相應的性能改善等問題。當前ARM架構的處理器通常采用多核技術來提升處理器性能。

      (2)超線程指在物理核基礎上,提供兩個邏輯線程。對os來說,可以就當做兩個物理核來使用。超線程畢竟不是增加物理核,性能上會有所差異。對計算密集性的應用,可以發揮出近似于兩個物理核的效能。對于非1/O密集型的應用,因為沒有獨立的二級緩存,性能優勢就沒那么明顯了。

      (2.線程和超線程有什么區別?

      一個線程在執行時會占用CPU資源,其他線程想要得到執行就必須等待該線程將CPU資源讓出。

      利用超線程技術,模擬出的兩個邏輯內核共享同一個CPu資源,所以同一時刻可以有兩個線程都占用CPU資源,因此這兩個線程都可以得到執行,這就是實現同一時間執行兩個線程的并行操作。

      2、并行( Parallel)一般是指許多指令得以同時進行的計算模式。

      指令級并行:指令集的是更低層次的概念。計算機處理問題是通過指令實現的,每個指令都是交給CPU執行。初級處理器一次只能執行一個指令。通過使用流水線( Pipeline)技術,當指令之間不存在相關時,將計算機指令處理過程拆分為多個步驟,并通過多個硬件處理單元并行執行來加快指令執行速度。在使用流水線的處理器中一個指令不是在處理器的一個時鐘信號周期中完成的,而是被分到多個信號中去完成,但是與此同時多個指令的分任務被同時處理。

      單指令,多數據并行:在最低層次上,許多現代處理器擁有特殊的硬件,允許一條指令產生多個可以并行執行的操作,這種方式稱為單指令、多數據,即SIMD并行。例如,較新幾代的Intel和AMD處理器都具有并行地對8對單精度浮點數CC數據類型float)做加法的指令。

      三、上下文

      無論是在單核還是多核系統中,一個CPU看上去都像是在并發地執行多個進程,但是在任何一個時刻,單處理器系統都只能執行一個進程的代碼。當操作系統決定要把控制權從當前進程轉移到某個新進程時,就會進行上下文切換,即保存當前進程的上下文、恢復新進程的上下文,然后將控制權傳遞到新進程。新進程就會從它上次停止的地方開始。操作系統保持跟蹤進程運行所需的所有狀態信息。這種狀態,也就是上下文,包括許多信息,比如PC和寄存器文件的當前值,以及主存的內容。

      從一個進程到另一個進程的轉換是由操作系統內核( kernel)管理的。

      四、虛擬內存

      虛擬內存的基本思想是:每個程序擁有自己的地址空間,這個空間被分成多片,每一片被稱作“頁或頁面( page)”,頁內的地址范圍是連續的。這些頁被映射到實際的物理內存中,但并不是程序地址空間的所有頁都必須在內存中程序才能運行。當程序引用到一部分在物理內存中的頁(地址空間)時,由硬件立即完成地址映射執行程序;當程序引用到一部分不在物理內存中的頁時,有操作系統負責將缺失的部分裝入物理內存并重新執行失敗的指令。

      大部分虛擬內存系統中都使用一種被稱作“分頁”的技術。由程序產生的地址稱為“虛擬地址”,它們構成了一個“虛擬地址空間”。在使用虛擬內存的情況下,虛擬地址不是被直接送到內存總線上,而是被送到“內存管理單元”( Memory Management Unit,MMU ) ,MMU將虛擬地址映射為物理地址。

      由于虛擬內存和分頁機制,每次內存訪問都需要進行虛擬地址到物理地址的轉換,而指令最終都是來自內存,因此,每條指令都需要進行一兩次或更多次頁表訪問(內存訪問,頁表是保存在內存中的)。為避免映射成為瓶頸,快速的頁映射需求是必定的。TLB ( Translation Lookaside Buffer)可以將虛擬地址直接映射到物理地址,不需要再訪問頁表。TLB的每個表項記錄了一個頁面的相關信息,但是TLB能夠記錄的表項一般情況下比較少。進行地址映射是會首先匹配TLB中記錄的虛擬頁,當沒有檢測到有效地匹配項時就會進行正常的頁表查詢,并從TLB中淘汰一個表項,用新找到的表項代替它。

      另外,如果頁面大小為4KB,4GB( 32位)虛擬地址空間需要1M的頁表項,假設一個頁表項占8個字節,那么一個進程的頁表就需要占用8MB的內存,每個進程都需要自己的頁表。更大的虛擬地址空間頁表占用的內存更多,64位虛擬地址空間的頁表就會超過3000萬GB。解決巨大的虛擬地址空間的方法有兩種,一種是多級頁表,一種是倒排頁表。多級頁表可以避免把全部頁表一直保存在內存中,特別是那些不需要的頁表就不應該保留。例如一個需要12MB內存的進程,最底端是4MB的代碼段,后面是4MB的數據段,頂端是4MB的堆棧段,中間是大量的根本沒有使用的地址空間,這部分不需要建立映射。如下圖,使用二級頁表只需要4個頁表( 32KB)就可以了。倒排頁表在實際內存中不是每一個虛擬頁面有一個表項,而是每個頁框有一個表項,因此可以節省大量的空間。

      任務調度 虛擬化

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:敏捷,DevOps,傻傻不分清楚
      下一篇:Linux內核驅動學習(十)Input子系統詳解
      相關文章
      亚洲A∨精品一区二区三区| 亚洲免费网站在线观看| 亚洲小说图区综合在线| 亚洲中文久久精品无码1| 亚洲综合一区二区精品久久| 久久久久亚洲AV成人无码| 亚洲国产成人片在线观看无码| 久久精品亚洲乱码伦伦中文| 国产亚洲精品线观看动态图| 国产亚洲精aa成人网站| 国产综合亚洲专区在线| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 亚洲成人免费网站| 亚洲欧洲日产v特级毛片| 亚洲码在线中文在线观看| 亚洲一欧洲中文字幕在线| 亚洲最大的黄色网| 亚洲性色精品一区二区在线| 亚洲AV人无码综合在线观看| 亚洲国产一区二区三区| 亚洲精品老司机在线观看| 亚洲性久久久影院| 久久久久噜噜噜亚洲熟女综合| 国产亚洲精品a在线观看| 不卡精品国产_亚洲人成在线| 亚洲精品国产精品乱码不99| 中文字幕精品亚洲无线码一区| 国产自偷亚洲精品页65页| 国产V亚洲V天堂无码久久久| 亚洲av无码乱码国产精品fc2 | 亚洲小说图片视频| 亚洲国产系列一区二区三区| 亚洲AV永久无码精品网站在线观看| 亚洲aⅴ无码专区在线观看| 亚洲AⅤ永久无码精品AA| 亚洲桃色AV无码| 亚洲人成网站影音先锋播放| 亚洲精品资源在线| 亚洲综合色婷婷在线观看| 国产成人亚洲综合在线| MM131亚洲国产美女久久|