1. 程式人生 > 實用技巧 >docker安裝,解除安裝和入門

docker安裝,解除安裝和入門

@目錄

Linux概念模型

在Linux系統分析這門課中,我們主要學習了中斷,系統呼叫,程式載入執行,程序管理,檔案系統,計時器方面等方面的內容。

通過這門課的學習讓我初步瞭解到了,Linux系統的大致執行過程。

  • 時鐘貫穿了整個系統,檔案的建立需要帶有時間資訊,程序的執行也需要確定CPU的使用時間,Linux的計時器保證了整個系統的有序執行。
  • 檔案管理中VFS通過構建一個通用檔案模型,使得VFS使用一套統一的操作來管理不同的檔案系統。另外在Linux中外設也被看成是一種檔案,系統對裝置檔案的讀寫將轉換成驅動程式對外設的讀寫操作。
  • 程序更是Linux系統中資源分配和CPU排程的基本單位,是Linux任務執行的載體。多種程序排程演算法使得Linux系統可以充分利用CPU資源進行多工併發。

Linux系統啟動

Linux系統的啟動做了些什麼,我們大致可以從start_kernel這個函式裡面略窺一二。

  • 檔案系統的掛載
  • 時鐘的初始化,開始整個系統的計時任務
  • 中斷向量的初始化,為後續產生的中斷程式提供入口地址
  • 0號程序的建立,以及kernel_init(所有使用者程序的祖先),kthreadd(所有核心程序的祖先)的初始化及執行
  • 其他內容的初始化....

使用者態和核心態

巨集觀上 Linux 作業系統的體系架構分為⽤戶態和核心態。

計算機的硬體資源是有限 的,為了減少有限資源的訪問和使⽤衝突,CPU 和作業系統必須提供⼀些機制對⽤戶程式進⾏許可權劃分。

一些和底層相關的執行就需要高許可權,那就是核心態。普通的執行就是使用者態。有許可權的執行,這樣就避免了普通的程式使用高許可權的指令導致系統崩潰。

程序管理和排程

在系統執行的過程中,我們會建立新的程序去執行新的任務。為了提高CPU的利用率(有些程序等待IO資源,CPU無事可做),設計了各種程序排程演算法。

為了實現程序的切換,引入中斷的概念。在中斷的過程中,儲存下當前程序執行所需要的資訊,然後將下一個程序的資訊載入到當前的暫存器和記憶體中,開始執行新的程序。

這樣就使得多工能同時在系統內執行,而且合適的程序排程演算法使得不會有程序得不到執行。

檔案管理

在Linux中,一切都是檔案,通過對檔案的定義和操作來控制裝置的執行和資料的儲存。並且使用VFS虛擬檔案系統,實現對多種檔案系統的相容。

要實現作業系統對其它各種不同檔案系統的支援,就要將對各種不同檔案系統的操作和管理納入到一個統一的框架中。 對使用者程式隱去各種不同檔案系統的實現細節,為使用者程式提供一個統一的、抽象的、虛擬的檔案系統介面,這就是所謂的虛擬檔案系統(VFS)。

例子講解

例子 LED燈

在Linux中,LED燈這個外設被看成是一個裝置檔案。Linux系統通過開啟這個檔案,對它進行read() write() 操作,從而轉化成裝置驅動程式對裝置的操作。

  1. 程式執行,嘗試讀取檔案,觸發read系統呼叫,中斷,進入核心態
  2. 儲存中斷上下文,進入中斷處理函式
  3. 到達VFS層次,sys_read()會根據fd在程序開啟檔案表中找到相應的系統開啟檔案表
  4. 返回檔案描述符
  5. 恢復中斷上下文
  6. 此後,使用者通過檔案描述符對裝置檔案進行的讀寫操作,會通過VFSsys_readsys_write,等函式,轉化為對裝置的操作

這樣,Linux系統就通過對檔案的簡單讀寫,完成了對外設的操作。

心得體會與改進建議

孟老師課程+部落格的方式個人覺得很好,通過自己線下的部落格編寫,不僅加深了自己的理解,也有助於自己期末進行知識的複習。

李老師的授課中,原始碼講解,要素過多,上課的時候不容易跟得上,建議也有一個小作業加深對上課內容的理解。