課程學習總結報告

2022-09-13 05:12:12 字數 2957 閱讀 4336

一、linux系統

作業系統主要完成兩個目標:  與硬體互動,為應用程式提供執行環境;

為了防止使用者程式直接和硬體互動,將cpu分為兩種執行模式,  稱使用者態和核心態;

linux是乙個多使用者多工的作業系統,一般主要有4個部分:  使用者程序,系統呼叫介面,linux核心,硬體;

本課程的重點主要是中斷和程序管理;

1.1 使用者程序

使用者應用程式執行在整個系統的最高層,當他在系統上執行的時候,就會成為作業系統的乙個程序;

1.2 系統呼叫介面

在應用程式中,通過系統呼叫來呼叫作業系統核心中特定的過程,實現特定的服務。

1.3 linux核心

linux核心是整個系統的核心,  負責啟動並執行程式,磁碟上檔案管理,記憶體管理等。

linux核心主要由以下5個子系統組成,可以看出主要包含記憶體管理,程序管理,裝置驅動管理,檔案系統,網路管理等功能模組。

1.4 硬體

包括了linux安裝需要的所有可能的物理裝置,如cpu,記憶體,硬碟等。

二、 中斷

中斷是一種由軟體或硬體產生的、向cpu發出的事件。

例如,當使用者按下某個鍵,外部裝置會發出乙個中斷請求,產生乙個中斷訊號,訊號通過裝置控制器的irq線傳送給中斷控制,

而中斷控制器與cpu相連, cpu收到該訊號後,會響應該中斷。

從按下鍵盤到cpu響應中斷的大致過程:

0. 外設產生訊號,併發送到i/o介面上,介面通過裝置驅動程式向中斷控制器傳送中斷請求

1.  中斷控制器將中斷訊號轉換為中斷向量給cpu讀取

2.  cpu通過中斷向量號,到中斷描述符表idt中找到對應的中斷描述符

3.  通過中斷描述符,從全域性描述表中找到對應的段描述符,獲得中斷處理程式的入口位址

4. 確定中斷的發生源和優先順序, 判斷特權級是否發生變化

6.  進入中斷處理程式, 中斷處理程式會先在核心態的堆疊中儲存一些暫存器的值,也就是儲存現場

7.  處理程式給pic傳送應答,允許其進一步發出中斷

8.  執行裝置對應的中斷服務例程isp

isp解析鍵盤命令,獲得對應資料,送入記憶體等

9.  isp執行結束,恢復現場,中斷返回,返回被中斷程序下一條指令處繼續執行

以上是i/o中斷處理過程,除了硬中斷,還有軟中斷,

比如戶程序執行乙個fork()函式,會觸發系統呼叫, 系統呼叫就是由軟中斷實現的

以系統呼叫看中斷上下文切換:

1. c庫函式執行,將系統呼叫號傳給eax暫存器,之後通過int $0x80產生中斷向量為128的程式設計異常(trap)

2. 切換到核心態後,通過系統呼叫號找到對應的系統呼叫處理程式的入口位址

3. 之後由硬體先自動儲存一些暫存器的值入核心棧,包括ss,esp,eflags, cs, ip(儲存cpu執行的上下文)

4.  執行系統呼叫服務例程,先儲存現場,在執行

5.  執行完後,恢復現場中斷返回

三、程序管理

3.1 程序

當使用者程式在系統上執行的時候,就是程序,

乙個程式可以對應多個程序

程序主要是動態的,存在生命週期,是暫時的

程序實體 = 程序控制塊pcb + 程式段 + 相關資料段

每個程序有自己獨立的位址空間

3.1 pcb

pcb實際上是乙個task_struct的資料結構, 它是程序存在的唯一標識

該結構在程序被建立的時候由系統為其建立,在程序執行結束時候,系統撤銷pcb

task_struct中儲存了與程序相關資訊,如state程序狀態,fs是可執行映像的檔案系統,

thread_info與程序描述符關聯等。

3.2 程序狀態

程序狀態有可執行,等待,暫停,僵死,狀態之間也會進行相互轉換

就緒和執行都屬於可執行狀態,通過雙向迴圈鍊錶將可執行態程序連線組成執行佇列

每個cpu都有執行佇列,通過執行佇列,可以加快程序的排程

3.3 程序棧和程序切換

linux系統為每個使用者程序分配了兩個棧:  使用者棧,核心棧

程序執行在使用者模式下就是使用的使用者棧,核心模式下就是使用的核心棧

當程序切換到另乙個程序時候,就會產生進行上下文的切換

程序切換包含兩步:  

1) 切換頁全域性目錄安裝新的位址空間;

2) 切換核心態堆疊和硬體上下文;

在上面系統呼叫中,在中斷處理程式執行完返回之前,可能呼叫schedule()函式呼叫其它程序 

從而發生程序上下文的切換, 即程序的上下文切換通常巢狀在中斷上下文切換中

呼叫關係:  schedule() --> context_swtich() --> switch_to --> __switch_to()

context_swtich()完成切換第一步,switch_to和__switch_to完成第二步

硬體上下文:

程序恢復執行前必須裝入暫存器的一組資料稱為硬體上下文切換

硬體上下文提供了核心執行新程序前所需要的所有資訊

在切換的時候,會儲存prev程序的上下文,並用next硬體上下文代替prev

五、課程的體會

通過linux作業系統分析這們課程,更深入理解了linux作業系統的運作機制;

結合對核心原始碼的解讀以及實驗,理解了中斷和程序切換,明白程序切換和中斷上下文切換的不同;

從硬體到核心編碼實現,對於linux系統的整體理解更體系、更深入,也很感謝老師的耐心教導。 

課程學習總結報告

要求 請您根據本課程所學內容總結梳理出乙個精簡的linux系統概念模型,最大程度統攝整頓本課程及相關的知識資訊,模型應該是邏輯上可以運轉的 自洽的,並舉例某一兩個具體例子 比如讀寫檔案 分配記憶體 使用i o驅動某個硬體等 納入模型中驗證模型。談談您對課程的心得體會,改進建議等。linux系統的組成...

Linux課程學習總結報告

程式設計師編寫的程式要想獲得執行,必須首先把靜態的程式變成乙個個動態的程序,程序因建立而產生,因排程而執行,因撤銷而消亡,這便是乙個程序的乙個生命週期。在電腦的記憶體中,有著成千上萬的程序,而cpu僅僅只有乙個,那該如何管理這些程序完成程序的排程呢?首先從程序的管理談起,程序由三部分構成 程序控制塊...

Python學習總結報告

python是一門物件導向的解釋性語言 指令碼語言 這一類語言的特點就是不用編譯,程式在執行的過程中由對應的直譯器向cpu進行編譯,一邊編譯一邊執行他屬於指令碼語言,不想編譯型語言那樣先將程式編譯成二進位制在執行。1 程式塊不是以 括起來來定義的,而是依據程式的縮進來表示程式的塊和 的層次 2 程式...