作業系統的理解

2022-07-05 06:45:12 字數 2914 閱讀 2098

1、在單核計算機裡,有乙個資源是無法被多個程式並行使用的:cpu。

沒有作業系統的情況下,乙個程式一直獨佔著全都cpu。

如果要有兩個任務來共享同乙個cpu,程式設計師就需要仔細地為程式安排好執行計畫--某時刻cpu和由程式a來獨享,下一時刻cpu由程式b來獨享

而這種安排計畫後來成為os的核心元件,被單獨名命為「scheduler」,即「排程器」,它關心的只是怎樣把單個cpu的執行拆分成一段一段的「執行片」,輪流分給不同的程式去使用,而在巨集觀上,因為分配切換的速度極快,就製造出多程式並行在乙個cpu上的假象。

2、在單核計算機裡,有乙個資源可以被多個程式共用,然而會引出麻煩:記憶體。

在乙個只有排程器,沒有記憶體管理元件的作業系統上,程式設計師需要手工為每個程式安排執行的空間 -- 程式a使用實體地址0x00-0xff,程式b使用實體地址0x100-0x1ff,等等。

然而這樣做有個很大的問題:每個程式都要協調商量好怎樣使用同乙個記憶體上的不同空間,軟體系統和硬體系統千差萬別,使這種定製的方案沒有可行性。

為了解決這個麻煩,計算機系統引入了「虛擬位址」的概念,從三方面入手來做:

2.1、硬體上,cpu增加了乙個專門的模組叫mmu,負責轉換虛擬位址和實體地址。

2.2、作業系統上,作業系統增加了另乙個核心元件:memory management,即記憶體管理模組,它管理物理記憶體、虛擬記憶體相關的一系列事務。

2.3、應用程式上,發明了乙個叫做【程序】的模型,(注意)每個程序都用【完全一樣的】虛擬位址空間,然而經由作業系統和硬體mmu協作,對映到不同的實體地址空間上。不同的【程序】,都有各自獨立的物理記憶體空間,不用一些特殊手段,是無法訪問別的程序的物理記憶體的。

3、現在,不同的應用程式,可以不關心底層的物理記憶體分配,也不關心cpu的協調共享了。然而還有乙個問題存在:有一些程式,想要共享cpu,【並且還要共享同樣的物理記憶體】,這時候,乙個叫【執行緒】的模型就出現了,它們被包裹在程序裡面,在排程器的管理下共享cpu,擁有同樣的虛擬位址空間,同時也共享同乙個實體地址空間,然而,它們無法越過包裹自己的程序,去訪問別乙個程序的實體地址空間。

4、程序之間怎樣共享同乙個實體地址空間呢?不同的系統方法各異,符合posix規範的作業系統都提供了乙個介面,叫mmap,可以把乙個實體地址空間對映到不同的程序中,由不同的程序來共享。

5、ps:在有的作業系統裡,程序不是排程單位(即不能被排程器使用),執行緒是最基本的排程單位,排程器只排程執行緒,不排程程序,比如vxworks

傳統程序相當於乙個執行緒的任務。通常乙個程序都擁有若干個執行緒,至少有乙個執行緒。

排程:傳統中:程序是擁有資源的基本單位和獨立排程分配的基本單位。引入執行緒後:執行緒作為排程和分派的基本單位,程序作為資源擁有的基本單位。執行緒基本上不再擁有資源,提高系統的併發程度。通過乙個程序中的執行緒切換不會引起程序的切換,但是乙個程序中的執行緒切換到另乙個程序中的執行緒時將會引起程序的切換。

併發性:在引入執行緒的作業系統中,不僅程序之間可以併發執行,而且在乙個程序中的多個執行緒之間也可以併發執行,從而提高系統資源的利用率和吞吐量。

擁有資源:程序都可以擁有資源,是系統中擁有資源的基本單位,執行緒自己不擁有系統資源,但是可以訪問隸屬程序的資源,即乙個程序的**段,資料段及擁有的系統資源

系統開銷:建立和撤銷程序時,系統都要為之建立和**程序控制塊,分配或**資源,如記憶體空間和i/o裝置等,作業系統所付出的開銷明顯大於執行緒建立和撤銷時的開銷。程序的切換 涉及程序cpu環境的儲存及新被排程執行程序的cpu環境設定,現成的切換僅需儲存和設定少量暫存器內容,不涉及儲存器管理方面的操作。同時同乙個程序中的多個執行緒具有相同的位址空間,在同步和通訊的實現方面執行緒也比程序容易。

執行緒屬性:輕型實體,不擁有系統資源,但是有必不可少的,保證其獨立執行的資源(控制線程執行的執行緒控制塊tcb,用於指示被執行指令序列的程式計數器,保留區域性變數,少數狀態引數和返回位址等的一組暫存器和堆疊);獨立排程和分派的基本單位:在多執行緒os中,執行緒是獨立執行的基本單位也是獨立排程和分派的基本單位;可併發執行:在乙個程序中的多個執行緒之間可併發,不同程序中的執行緒也能併發;共享程序資源:可以訪問程序的每個位址,以及程序所擁有的已開啟的檔案,定時器,訊號量機構等。

執行緒的狀態:執行,就緒,阻塞

大多數的執行緒在中止後並不立即釋放所占用資源,只有當程序的其他執行緒執行了分離函式後被終止的執行緒才與資源分離,此時的資源才能與資源分離。此時的資源才能被其它執行緒利用。雖已中止但尚未釋放資源的執行緒,仍可以被需要它額執行緒所呼叫,以使被終止執行緒重新恢復執行。呼叫者須呼叫條「等待執行緒終止」的連線命令,來與執行緒進行連線。

核心支援執行緒:核心能夠同時呼叫同乙個程序中的多個執行緒並行執行;如果程序中的乙個執行緒被阻塞了,核心可以排程程序中的其他執行緒戰友處理器執行,也可以執行其他程序中的執行緒;支援具有很小的資料結構和堆疊,現成的切換和開銷小;核心本身為多執行緒技術,提高系統的執行效率和速度。缺點:模式切換開銷大,同乙個程序中乙個執行緒切換到另乙個程序需要從使用者態轉換到核心態執行,執行緒排程和管理是核心實現的系統開銷較大。

使用者級執行緒:系統的排程仍是以程序為單位進行,執行緒切換不需要轉換到核心空間,對已個程序而言,所有執行緒管理資料結構均在該程序的使用者空間中。節省核心寶貴資源;排程演算法可以是程序專用的,不干擾系統排程;使用者級執行緒的實現與作業系統平台無關。缺點:系統呼叫的阻塞問題,當乙個執行緒阻塞時,該程序的所有其他執行緒也阻塞,而核心支援執行緒則程序中的其他執行緒仍然可以執行;單純的使用者級執行緒實現方式中,多執行緒應用不能利用多處理機進行多重處理的優點,核心每次分給乙個程序僅乙個cpu,程序中僅乙個執行緒能夠執行。

組合方式:有些作業系統把使用者級執行緒和核心支援執行緒進行組合。ult/kst

我理解的作業系統

談起作業系統,估計我們都會不禁想到微軟,塞班,安卓,蘋果,這幾個家喻戶曉的系統吧,可惜塞班已經不在了。以上列舉的更過是指手機上的作業系統,而對於電腦系統,估計只有window才是大眾口味吧。unix系統,dos系統,linux系統,這些系統除了專業人員,常人應該不會去了解,畢竟專業性質太重。簡單談一...

理解Linux中的作業系統

作業系統是一款軟硬體資源管理的軟體。我們可以這樣理解,作業系統相當於學校的上層領導,類似於校長 管理者 擁有決策權,而硬體相當於學校的學生 被管理者 校長其實並不直接與學生溝通,他是讓輔導員或班主任來與學生打交道,計算機裡的裝置驅動就相當於輔導員或班主任,是管理決策的執行者。一般而言 管理者 作業系...

作業系統 作業系統的概念

3 作業系統的目標和功能 作業系統用做擴充機器 計算機系統自上而下可區分為 從作業系統的角度 計算機系統的概述 在計算機中的cpu 記憶體 輸入 輸出裝置等硬體,提供了基本的計算機資源 應用程式等規定了按何種方式來使用這些資源來為使用者服務 作業系統控制和協調各使用者程式對硬體的分配和呼叫。所以作業...