歡迎光臨
每天分享高質量文章

計算機實驗室之樹莓派:課程 0 簡介 | Linux 中國

這個課程簡介不包含實踐內容,但它解釋了一個作業系統的基本概念、彙編程式碼、和其它很重要的一些基本原理。
— Robert Mullins

 

致謝
譯自 | cl.cam.ac.uk 
作者 | Robert Mullins
譯者 | LCTT / qhwdw

這個課程簡介不包含實踐內容,但它解釋了一個作業系統的基本概念、彙編程式碼、和其它很重要的一些基本原理。如果你想直接進入實踐環節,跳過本課程並不會有什麼問題。

1、作業系統

作業系統就是一個非常複雜的程式。它的任務就是組織安排計算機上的其它程式,包括共享計算機的時間、記憶體、硬體和其它資源。你可能聽說過的一些比較大的桌面作業系統家族有 GNU/Linux、Mac OS X 和 Microsoft Windows。其它的裝置比如電話,也需要作業系統,它可能使用的作業系統是 Android、iOS 和 Windows Phone[1]

由於作業系統是用來與計算機系統上的硬體進行互動的,所以它必須瞭解系統上硬體專有的資訊。為了能讓作業系統適用於各種型別的計算機,發明瞭 驅動程式 的概念。驅動程式是為了能夠讓作業系統與特定的硬體進行互動而新增(並可刪除)到作業系統上的一小部分程式碼。在本課程中,我們並不涉及如何建立可刪除的驅動程式,而是專註於特定的一個硬體:樹莓派。

作業系統有各種不同的設計方式,在本課程中,我們只觸及作業系統設計的皮毛。本課程中,我們主要專註於作業系統與各種硬體的互動部分,因為這經常是比較棘手的部分,並且也是在網路上檔案和幫助最少的部分。

2、彙編程式碼

處理器每秒可以執行上百萬的指令,但是這些指令必須要簡單。

本課程幾乎要完全靠彙編程式碼來寫。彙編程式碼非常接近計算機的底層。計算機其實是靠一個叫處理器的裝置來工作的,處理器能夠執行像加法這樣的簡單任務,還有一組叫做 RAM 的晶片,它能夠用來儲存數字。當計算機通電後,處理器執行程式員給定的一系列指令,這將導致記憶體中的數字發生變化,以及與連線的硬體進行互動。彙編程式碼只是將這些機器命令轉換為人類可讀的文字。

常規的程式設計就是,程式員使用程式語言,比如 C++、Java、C#、Basic 等等來寫程式碼,然後一個叫編譯器的程式將程式員寫的程式碼轉換成彙編程式碼,然後進一步轉換為二進位制程式碼[2]。二進位制程式碼才是計算機真正能夠理解的東西,但它是人類無法讀取的東西。彙編程式碼比二進位制程式碼好一點,至少它的命令是人類可讀的,但它仍然讓人很沮喪。請記住,你用彙編程式碼寫的每個命令都是處理器可以直接認識的,因此這些命令設計的很簡單,因為物理電路必須能夠處理每個命令。

Compiler process

和普通程式設計一樣,也有很多不同的彙編程式碼程式語言,但與普通程式設計不一樣的是,每個彙編程式語言是面對不同的處理器的,每種處理器設計為去理解不同的語言。因此,用一個針對某種機器設計的組合語言所寫的彙編程式碼,是不能在其它種類的機器上執行的。很多情況下,這都是一個大災難,因此每個程式都必須在使用它的不同種類的機器上重寫一遍,但對於作業系統,這不是個問題,因為在不同的硬體上它必須得重寫。儘管如此,大多數作業系統都是用 C++ 或 C 來寫的,這樣它們就可以很容易地在不同種類的硬體上使用,只需要重寫那些必須用彙編程式碼來實現的部分即可。

現在,你已經準備好進入第一節課了,它是 課程 1 OK01[3]


via: https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/introduction.html

作者:Robert Mullins[5] 選題:lujun9972 譯者:qhwdw 校對:wxy

贊(0)

分享創造快樂