os 程序執行緒概念

2021-08-26 05:58:48 字數 720 閱讀 5132

作業系統中為了提供cpu的利用率,引入了多道程式設計,於是就有了程序的概念。

程序模型無疑提高了cpu的利用率,因為多個程序可以「同時」執行在乙個cpu上,乙個程序被阻塞掉了,另乙個程序就可以被排程上cpu繼續執行了。這樣降低了cpu閒置的時間。

但是程序模型卻存在乙個問題。那就是如果乙個程序被阻塞掉了,它就必須讓出cpu了。同時對於乙個任務,如果它是程序實現的(單程序),它實際上是「偽併發」的。因為乙個程序內部不能並行執行。

於是就產生了執行緒模型,允許乙個程序內部存在兩個東西,同時執行任務,這樣就真正意義上實現了併發。

有人會問,何必要出現執行緒模型,直接用多程序程式設計不是就可以了嗎?

多程序程式設計會有諸多問題,例如多個程序擁有不同的位址空間,互動起來比較麻煩。

但是不可否認,引入執行緒模型後確實也帶來了許多問題。

在現在作業系統中,程序模型扮演的角色更多的像乙個資源分配的單元,不論是cpu資源還是io資源。

不過對於cpu這樣特殊的資源,有產生了執行緒這個模型來更好地利用這個稀缺資源。

會有一些概念性質的問題,例如os排程的基本單位是什麼?

這個問題比較難以回答,因為有的系統排程的單位是程序,有的是執行緒。

linux系統排程的基本單位是程序,據說,unix從某些版本後排程單位就是執行緒了,沒有深究,僅供參考。

至於linux下的核心執行緒,idle與init,實際上是程序,由於他們沒有使用者態的位址空間,只在核心態有位址空間,從這個角度,被稱為「執行緒」。

OS 程序 執行緒 死鎖

程序執行緒 含義 乙個在記憶體中執行的應用程式 程序的乙個執行任務 包含關係 乙個程序有若干個執行緒,至少包含乙個執行緒 程序的一部分,相當於只有乙個任務的程序 也稱輕權程序 輕量級程序 根本區別 作業系統資源分配的基本單位 處理器任務排程和執行的基本單位 資源開銷 每個程序都有獨立的 和資料空間 ...

程序管理 執行緒概念

一 執行緒概念 thread 執行緒是可由cpu直接執行的實體 乙個程序內部可建立多個執行緒 多個執行緒共享cpu可以實現併發執行 執行緒的併發程度要比程序更細 windows的createthread 功能 把乙個函式建立為乙個程序 handle createthread lpsecurity a...

執行緒 程序 多執行緒核心概念

執行緒就是獨立的執行路徑 在程式執行時,即使沒有自己建立執行緒,後台也會有多個執行緒,如主線程,gc執行緒 main 稱之為主線程,為系統的入口,用於執行整個程式 在乙個程序中,如果開闢了多個執行緒,執行緒的執行由排程器安排排程,排程器是與作業系統緊密相關的,先後順序是不能人為的干預的。對同乙份資源...