操做系統:從0到1

操做系統:從0到1

 

來源  https://tuhdo.github.iohtml

書:操做系統:從0到1

 

來源  https://tuhdo.github.io/os01/linux

操做系統:從0到1

本書幫助您得到從頭開始編寫操做系統所需的基礎知識。所以標題爲0到1。git

完成本書後,您至少會學到:github

  • 如何經過讀取硬件數據表從頭開始編寫操做系統。在現實世界中,它就是這樣的。您將沒法諮詢Google以得到快速回答。算法

  • 從硬件到軟件,全面瞭解計算機的每一層如何與另外一層相關。編程

  • 獨立編寫代碼。複製和粘貼代碼毫無心義。當您本身解決問題時,就會發生真正的學習。一些例子給出了啓動,但大多數問題都是你的征服。可是,這些解決方案能夠在線獲取,供您仔細檢查後進行檢查。windows

  • Linux做爲開發環境以及如何使用經常使用工具進行低級編程。瀏覽器

  • x86彙編深刻。數據結構

  • 如何構建程序以便操做系統能夠運行。框架

  • 如何使用gdb和QEMU調試直接在硬件上運行的程序。

  • 連接和加載裸機x86_64,純C。沒有標準庫。沒有運行時開銷。

下載這本書

這本書的教學法

你給一個窮人一條魚,你喂他一天。你教他釣魚,你給他一個可以養活他一輩子的職業。

在我寫這本書時,這一直是本書的指導原則。這本書並不試圖教你一切,但足以讓你本身學習。在這一點上,這本書很是「完整」:一旦你掌握了第1部分和第2部分(由8章組成),你就能夠放棄這本書並本身學習。在這一點上,聰明的讀者應該可以繼續本身。例如,他們能夠繼續在OSDev wiki上旅行事實上,在你研究了第1部分和第2部分中的全部內容以後,你只能知足OSDev Wiki 最低要求(嗯,不徹底是,這本書實際上對於建議的主題更深刻)。或者,若是您考慮開發一個有趣的操做系統是不切實際的,您能夠繼續使用特定於Linux的書籍,例如這本免費書籍Linux Insides,或其餘流行的Linux內核書籍。本書努力爲您提供堅實的基礎,這就是爲何第1部分和第2部分首先發布的緣由。

本書向您介紹了核心概念,例如x86彙編,ELF,裸機連接和調試等,但更重要的是,這些信息的來源。例如,它不只教授x86彙編,還教授如何使用英特爾的參考手冊。學習閱讀官方手冊很重要,由於只有硬件製造商本身才能理解他們的硬件是如何工做的。若是您只是從輔助資源中學習,由於它更容易,您將沒法徹底瞭解您正在編程的硬件。你有沒有看過關於大會的書,想知道全部的信息來自哪裏?做者如何知道他說的一切是正確的?人們如何神奇地瞭解硬件編程?本書指出了這些問題。

例如,您應該瀏覽第4章「x86 Assembly and C」,瞭解它如何使用英特爾手冊第2卷。在此過程當中,它將指導您如何使用官方手冊。

第3部分計劃爲一系列規範,讀者將實現這些規範來完成每一個操做系統組件。除了一些例子,它不包含代碼。第3部分是經過給出提示閱讀,解釋困難概念以及如何使用手冊進行調試來縮短讀者閱讀官方手冊的時間。簡而言之,實施取決於讀者本身的工做; 這些章節就像大學做業同樣。

先決條件

瞭解一些電路概念:

  • 電的基本概念:原子,電子,質子,中子,電流。
  • 歐姆定律

可是,若是您對電力一無所知,能夠在此處快速瞭解:http: //www.allaboutcircuits.com/textbook/,閱讀第1章和第2章。

C編程。特別是:

  • 變量和函數聲明/定義

  • while和for循環

  • 指針和函數指針

  • C中的基本算法和數據結構

Linux基礎知識:

  • 知道如何使用命令行導航目錄

  • 知道如何使用選項調用命令

  • 知道如何將輸出管道傳輸到另外一個程序

觸摸打字。因爲咱們將使用Linux,所以觸摸打字會有所幫助。我知道打字速度與解決問題無關,但至少你的打字速度應該足夠快,不要讓它順其天然並下降學習體驗。

通常來講,我假設讀者具備基本的C編程知識,而且可使用IDE來構建和運行程序。

狀態:

  • 第1部分
    • 第1章:完成
    • 第2章:完成
    • 第3章:幾乎。目前,本書依賴於英特爾手冊來全面解釋x86執行環境。
    • 第4章:完成
    • 第五章:完成
    • 第六章:完成
  • 第2部分
    • 第7章:完成
    • 第8章:完成
  • 第3部分
    • 第9章:不完整
    • 第10章:不完整
    • 第11章:不完整
    • 第12章:不完整
    • 第13章:不完整

    ...還有將來的章節......

在將來,我但願擴展第3部分以涵蓋前兩部分。但就目前而言,我將首先嚐試完成上述章節。

示例OS

該存儲庫是本書的示例操做系統,旨在做爲第3部分的參考資料。它涵蓋了「系統編程指南」(英特爾手冊第3卷)的10章,以及用於輸入和輸出的簡單鍵盤和視頻驅動程序。可是,目前只實現瞭如下功能:

  • 保護模式。
  • 使用TSS(任務狀態結構)建立和管理流程。
  • 中斷
  • LAPIC。

分頁和I / O還沒有實現。隨着書的進展,我會嘗試實施它。

特約

若是您發現任何語法問題,請使用Github問題進行報告。或者,若是某些句子或段落難以理解,請隨意打開如下標題格式的問題:[page number][type] Descriptive Title

例如:[pg.9][grammar] Incorrect verb usage

type 能夠是如下之一:

  • Typo:表示輸入錯誤。
  • Grammar:表示語法使用不正確。
  • Style:表示樣式改進。
  • Content:表示內容有問題。

更好的是,您可使用提供的圖書來源發出拉取請求。本書的主要內容位於「操做系統:從0到1.lyx」文件中。您能夠編輯.txt文件,而後我將手動集成更改。這是一個解決方法,由於Lyx可能致使巨大的差別,這使得沒法審查變化。

這本書正在開發中,若是英語讓你煩惱,請耐心等待。對此,我真的很是感激。

最後,若是你喜歡這個項目,若是可能的話,請捐贈以幫助這個項目並繼續下去。

有疑問嗎?

若是您對本書的內容或開發有任何疑問,請隨時打開Github問題

 

=============== End

相關文章
相關標籤/搜索