Linux中國

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

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

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

  1. 要查看更完整的操作系統列表,請參照:操作系統列表 - Wikipedia
  2. 當然,我簡化了普通編程的這種解釋,實際上它在很大程度上取決於語言和機器。感興趣的話,參見 編譯器 - Wikipedia

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

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

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國