核心空間、進程和線程等概念

來源:互聯網
上載者:User

標籤:linu   lin   proc   多個   緩衝   虛擬空間   硬碟   支援   read   

使用者空間與核心空間

現在作業系統都是採用虛擬儲存空間,那麼對32位作業系統而言,它的定址空間(虛擬儲存空間)為4G(2的32次方)。作業系統的核心是核心,獨立於普通的應用程式,可以訪問受保護的記憶體空間,也有訪問底層硬體裝置的所有許可權。為了保證使用者進程不能直接操作核心(kernel),保證核心的安全,作業系統將虛擬空間劃分為兩部分,一部分為核心空間,一部分為使用者空間。針對linux作業系統而言,將最高的1G位元組(從虛擬位址0xC0000000到0xFFFFFFFF),供核心使用,稱為核心空間,而將較低的3G位元組(從虛擬位址0x00000000到0xBFFFFFFF),供各個進程使用,稱為使用者空間。

進程切換

為了控制進程的執行,核心必須有能力掛起正在CPU上啟動並執行進程,並恢複以前掛起的某個進程的執行。這種行為被稱為進程切換。因此可以說,任何進程都是在作業系統核心的支援下啟動並執行,是與核心緊密相關的。
從一個進程的運行轉到另一個進程上運行,這個過程中經過下面這些變化:
    儲存處理機上下文,包括程式計數器和其他寄存器。
    更新PCB資訊。
    把進程的PCB移入相應的隊列,如就緒、在某事件阻塞等隊列。 選擇另一個進程執行,並更新其PCB。
    更新記憶體管理的資料結構。
    恢複處理機上下文。

進程的阻塞

正在執行的進程,由於期待的某些事件未發生,如請求系統資源失敗、等待某種操作的完成、新資料尚未到達或無新工作做等,則由系統自動執行阻塞原語(Block),使自己由運行狀態變為阻塞狀態。可見,進程的阻塞是進程自身的一種主動行為,也因此只有處於運行態的進程(獲得CPU),才可能將其轉為阻塞狀態。當進程進入阻塞狀態,是不佔用CPU資源的。

檔案描述符

檔案描述符(File descriptor)是電腦科學中的一個術語,是一個用於表述指向檔案的引用的抽象化概念。
檔案描述符在形式上是一個非負整數。實際上,它是一個索引值,指向核心為每一個進程所維護的該進程開啟檔案的記錄表。當程式開啟一個現有檔案或者建立一個新檔案時,核心向進程返回一個檔案描述符。在程式設計中,一些涉及底層的程式編寫往往會圍繞著檔案描述符展開。但是檔案描述符這一概念往往只適用於UNIX、Linux這樣的作業系統。

緩衝IO

緩衝IO又被稱作標準IO,大多數檔案系統的預設IO操作都是緩衝IO。在Linux的緩衝IO機制中,作業系統會將IO的資料緩衝在檔案系統的頁緩衝( page cache )中,也就是說,資料會先被拷貝到作業系統核心的緩衝區中,然後才會從作業系統核心的緩衝區拷貝到應用程式的地址空間。
緩衝IO的缺點:
資料在傳輸過程中需要在應用程式地址空間和核心進行多次資料拷貝操作,這些資料拷貝操作所帶來的CPU以及記憶體開銷是非常大的。

進程和線程

對於作業系統來說,一個任務就是一個進程(Process),比如開啟一個瀏覽器就是啟動一個瀏覽器進程,開啟一個記事本就啟動了一個記事本進程,開啟兩個記事本就啟動了兩個記事本進程,開啟一個Word就啟動了一個Word進程
有些進程還不止同時幹一件事,比如Word,它可以同時進行打字、拼字檢查、列印等事情。在一個進程內部,要同時幹多件事,就需要同時運行多個“子任務”,我們把進程內的這些“子任務”稱為線程(Thread)。
所以應用程式可以有一個或多個進程,一個進程可以有一個或多個線程,其中一個是主線程(線程是進程中的實體,一個線程必須有一個父進程)

多進程

Unix/Linux多進程
Unix/Linux作業系統提供了一個fork()系統調用,它非常特殊。普通的函數調用,調用一次,返回一次,但是fork()調用一次,返回兩次,因為作業系統自動把當前進程(稱為父進程)複製了一份(稱為子進程),然後,分別在父進程和子進程內返回。
子進程永遠返回0,而父進程返回子進程的ID。這樣做的理由是,一個父進程可以fork出很多子進程,所以,父進程要記下每個子進程的ID,而子進程只需要調用getppid()就可以拿到父進程的ID。

線程,進程,CPU,記憶體,硬碟的關係

CPU就是控制發布指令和運算處理資料
硬碟儲存資料,主要儲存資料。常用的IO操作指的就是操作硬碟
記憶體臨時儲存資料,主要是串連硬碟和CPU,是執行者,根據指令工作
線程是進程的一部分
CPU調度的是線程
系統為進程分配資源(記憶體),不對線程分配資源

核心空間、進程和線程等概念

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.