幫助中心 | 我的帳號 | 關於我們

穿越操作系統迷霧(從零實現操作系統)

  • 作者:王柏生//王晟寒|責編:楊福川
  • 出版社:機械工業
  • ISBN:9787111732884
  • 出版日期:2023/09/01
  • 裝幀:平裝
  • 頁數:387
人民幣:RMB 99 元      售價:
放入購物車
加入收藏夾

內容大鋼
    這是一本能指導零電腦基礎的讀者輕鬆理解電腦軟硬體和操作系統工作原理,從而自己動手從0到1編寫出一個操作系統的著作。
    作者在操作系統領域深度耕耘20余年,不僅一直奮鬥在百度等企業一線,而且一直致力於操作系統的教育和布道,希望幫助和指導越來越多的人,尤其是青少年,能從學生時代開始學習操作系統,能從底層原理真正理解操作系統,改變我國基礎軟體受制於人的現狀。
    本書不僅是作者悟透操作系統本質、厚積薄發的成果,而且是他將複雜的操作系統原理化繁為簡、舉重若輕,成功指導自己9歲的孩子從0到1編寫出一個操作系統的過程的全面復盤和復現。本書驅散了操作系統的迷霧,讓操作系統不再神秘和高不可攀,讓每一個懷揣操作系統夢的中國人都能理解並實現自己的操作系統。
    全書一共14章,邏輯上分為上下兩篇。
    上篇(第1?5章)電腦軟硬體基礎和原理:
    從電腦如何使用電進行計算開始,首先講述了電是如何抽象為信息的,處理器是怎樣進行運算的,內存是怎樣存儲信息的,處理器和內存是如何通過匯流排通信的,處理器是如何訪問外設的,之後講述了這些部件是如何結合起來運行程序的。然後通過使用機器語言編寫一個程序,讓讀者深刻地理解指令和程序。接下來,結合彙編語言講述了電腦體系結構。最後,從C編譯器如何將C語法翻譯為彙編語言的角度,聚焦語法後面的本質,讓讀者徹底地理解C語言,而不再糾結在語言表面的語法。    下篇(第6?14章)從0到1實現一個操作系統:
    從系統引導(包含32位和64位)開始講起,先後實現並闡述了內存管理、進程、中斷和異常、進程調度、系統調用、進程間通信,最後實現了在顯示器上的字元以及圖形輸出,並能接收鍵盤輸入。除了從應用程序直接訪問內核外,還展示了C庫等概念,以及從應用軟體到C庫、圖形庫,最後到內核的完整軟體棧。

作者介紹
王柏生//王晟寒|責編:楊福川

目錄
前言
第1章  電腦基礎
  1.1  認識電
  1.2  信息表示
    1.2.1  二進位
    1.2.2  十六進位
  1.3  計算
    1.3.1  邏輯運算
    1.3.2  邏輯門
    1.3.3  加法器
  1.4  內存
    1.4.1  物理實現
    1.4.2  數學抽象
  1.5  匯流排
  1.6  寄存器
  1.7  程序
  1.8  外存
  1.9  外設及介面
    1.9.1  I/O地址空間
    1.9.2  內存映射I/O
  1.10  地址空間
  1.11  數學模型到物理世界
第2章  認識Linux
  2.1  什麼是操作系統
  2.2  文件系統
  2.3  終端
  2.4  shell
  2.5  Linux常用命令
  2.6  ANSI轉義序列
  2.7  編輯器
  2.8  準備「物理」電腦
第3章  機器語言程序設計
  3.1  程序及指令
  3.2  補碼
  3.3  ASCII碼
  3.4  串口
  3.5  「向串口寫字元A」的程序流程
  3.6  寫外設指令
  3.7  準備源操作數
  3.8  準備目的操作數
  3.9  跳轉指令
  3.10  創建程序文件
  3.11  程序執行過程
  3.12  使用kvmtool運行程序
第4章  彙編語言程序設計
  4.1  初識彙編語言
  4.2  段及段寄存器
  4.3  指令指針寄存器
  4.4  通用寄存器
  4.5  標誌寄存器

  4.6  彙編指令格式
  4.7  第一個彙編程序
    4.7.1  彙編和鏈接
    4.7.2  運行
    4.7.3  顯式設置操作數的段寄存器
    4.7.4  偽指令.code16
  4.8  構建工具Make
  4.9  操作數定址
    4.9.1  立即數定址
    4.9.2  直接定址
    4.9.3  ModR/M定址
    4.9.4  SIB定址
    4.9.5  SIB+disp定址
  4.10  程序運行流程式控制制
    4.10.1  選擇
    4.10.2  循環
  4.11  棧
  4.12  函數及x86調用約定
    4.12.1  call和ret指令
    4.12.2  棧幀
    4.12.3  多模塊及符號可見性
    4.12.4  參數傳遞
    4.12.5  局部變數
    4.12.6  返回值及參數清理
    4.12.7  寄存器保存和恢復
  4.13  鏈接
    4.13.1  目標文件合併
    4.13.2  符號解析
    4.13.3  符號的可見性
第5章  C語言程序設計
  5.1  基本語法
    5.1.1  詞法元素
    5.1.2  表達式
    5.1.3  聲明
    5.1.4  語句
    5.1.5  標識符
    5.1.6  對象的存儲類別
    5.1.7  頭文件
    5.1.8  預處理指令
  5.2  C語言入口
  5.3  第一個C程序
  5.4  從C語言到機器語言
  5.5  變數
    5.5.1  變數類型
    5.5.2  局部變數
    5.5.3  全局變數
    5.5.4  全局變數的鏈接性
    5.5.5  靜態局部變數
    5.5.6  變數類型轉換
    5.5.7  溢出

  5.6  運算
    5.6.1  算術運算
    5.6.2  遞增和遞減
    5.6.3  關係運算
    5.6.4  邏輯運算
    5.6.5  位運算
    5.6.6  賦值運算
    5.6.7  運算的優先順序和結合性
  5.7  程序運行流程式控制制
    5.7.1  選擇
    5.7.2  循環
  5.8  數組
  5.9  結構體
    5.9.1  基本語法
    5.9.2  內存布局
    5.9.3  位域
  5.10  指針
    5.10.1  基本語法
    5.10.2  指向結構體的指針
    5.10.3  指針的+/-運算
    5.10.4  雙指針
    5.10.5  void指針
    5.10.6  空指針
  5.11  函數
    5.11.1  基本語法
    5.11.2  參數的值傳遞和指針傳遞
    5.11.3  const參數
    5.11.4  函數指針
  5.12  內聯彙編
第6章  32位引導過程
  6.1  實模式
  6.2  保護模式
  6.3  內核映像組成及布局
    6.3.1  實模式地址空間
    6.3.2  內核映像的布局
    6.3.3  內核映像文件組織
  6.4  創建保護模式的段描述符
    6.4.1  段描述符格式
    6.4.2  保護模式的內核代碼段描述符
    6.4.3  保護模式的內核數據段描述符
    6.4.4  創建保護模式的段描述符表
  6.5  告知處理器段描述符表地址
  6.6  開啟處理器保護模式
  6.7  跳轉到內核保護模式部分
    6.7.1  準備保護模式部分
    6.7.2  跳轉到保護模式部分
  6.8  編譯及創建內核映像文件
    6.8.1  編譯內核
    6.8.2  組裝內核映像文件
  6.9  使用Make構建內核

第7章  64位引導過程
  7.1  內存分頁
    7.1.1  為什麼要分頁
    7.1.2  分頁模式下的地址翻譯過程
    7.1.3  程序的虛擬地址空間
    7.1.4  分頁模式下的定址
    7.1.5  頁表
  7.2  64位模式下程序的虛擬地址空間
  7.3  創建64位模式的臨時段描述符表
    7.3.1  代碼段
    7.3.2  數據段
    7.3.3  為64位模式創建臨時段描述符表
  7.4  建立內核映像的虛擬地址到物理地址的映射
    7.4.1  建立四級頁表映射
    7.4.2  建立三級頁表映射
    7.4.3  建立二級頁表映射
    7.4.4  建立一級頁表映射
  7.5  建立恆等映射
  7.6  切入64位模式
    7.6.1  使能PAE
    7.6.2  設置CR3指向頁表
    7.6.3  使能64位模式
    7.6.4  開啟分頁
    7.6.5  跳轉到64位部分
  7.7  走進內核64位部分
    7.7.1  創建64位模式段描述符表
    7.7.2  轉換到內核地址空間
    7.7.3  構建內核64位部分
第8章  內存管理
  8.1  獲取內存信息
    8.1.1  BIOS簡介
    8.1.2  讀取內存信息
    8.1.3  E820的C數據結構表示
    8.1.4  計算物理內存大小
    8.1.5  print的實現
    8.1.6  使用Make內置函數提取文件
    8.1.7  創建Make中的文件依賴關係
  8.2  頁面管理
    8.2.1  劃分頁面
    8.2.2  為內核映像保留頁面
    8.2.3  分配頁面
    8.2.4  歸還頁面
  8.3  映射物理內存
    8.3.1  線性映射
    8.3.2  第1階段映射
    8.3.3  第2階段映射
  8.4  內存塊管理
    8.4.1  塊管理數據組織
    8.4.2  分配內存塊
    8.4.3  釋放內存塊

第9章  進程
  9.1  程序運行環境
  9.2  創建應用程序
  9.3  創建任務結構體
  9.4  建立進程地址映射
    9.4.1  內核空間映射
    9.4.2  用戶空間映射
  9.5  創建進程任務狀態段及內核棧
    9.5.1  準備任務狀態段及內核棧
    9.5.2  創建任務狀態段的段描述符
    9.5.3  設置任務寄存器
  9.6  偽造中斷現場
  9.7  設置CR3指向進程頁表
  9.8  進入用戶空間
  9.9  I/O埠訪問許可權控制
第10章  中斷和異常
  10.1  中斷及其處理過程
    10.1.1  可編程中斷控制器8259A
    10.1.2  高級可編程中斷控制器APIC
    10.1.3  MSI
  10.2  初始化8259A
  10.3  組織中斷描述符表
    10.3.1  初始化中斷描述符表
    10.3.2  設置中斷寄存器
  10.4  時鐘中斷
    10.4.1  時鐘中斷處理函數
    10.4.2  設置時鐘中斷描述符
    10.4.3  編程時鐘晶元8254
    10.4.4  開啟中斷
    10.4.5  現場保存和恢復
  10.5  缺頁異常
第11章  進程調度
  11.1  任務狀態
  11.2  創建進程
  11.3  空閑任務
  11.4  任務調度
  11.5  任務切換
第12章  系統調用
  12.1  系統調用工作機制
  12.2  內核系統調用入口
  12.3  設置MSR寄存器
  12.4  實現系統調用sleep
  12.5  C庫
  12.6  應用調用sleep掛起
第13章  進程間通信
  13.1  共享內存原理
  13.2  內核共享內存實現
  13.3  C庫實現共享內存介面
  13.4  應用使用共享內存通信
第14章  顯示及輸入

  14.1  圖形處理器
  14.2  文本模式和圖形模式
  14.3  獲取模式信息
  14.4  將framebuffer映射到用戶空間
  14.5  應用獲取模式信息
  14.6  設計字體
  14.7  圖形庫
  14.8  應用繪製
  14.9  鍵盤輸入

  • 商品搜索:
  • | 高級搜索
首頁新手上路客服中心關於我們聯絡我們Top↑
Copyrightc 1999~2008 美商天龍國際圖書股份有限公司 臺灣分公司. All rights reserved.
營業地址:臺北市中正區重慶南路一段103號1F 105號1F-2F
讀者服務部電話:02-2381-2033 02-2381-1863 時間:週一-週五 10:00-17:00
 服務信箱:bookuu@69book.com 客戶、意見信箱:cs@69book.com
ICP證:浙B2-20060032