日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

setup.s 总结——Linux-0.11 剖析笔记(四)

發布時間:2025/3/15 linux 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 setup.s 总结——Linux-0.11 剖析笔记(四) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一篇文章 setup.s 解讀——Linux-0.11 剖析筆記(三) 詳細地解釋了 setup.s 的代碼,整個代碼完成的任務有:

  • 獲取一些參數保存在 0x90000 處
    • 保存光標的位置
    • 獲取從 1M 處開始的擴展內存大小
    • 獲取顯示模式
    • 檢查顯示方式(EGA/VGA)并獲取參數
    • 復制硬盤參數表(包括檢查系統是否有第2個硬盤)
  • 關中斷
  • 移動 system 模塊到 0x00000
  • 加載 IDT 和 GDT
  • 開啟 A20
  • 設置 8259
  • 進入保護模式(使 CR0 的 PE 位 = 1)
  • 跳轉到 0 地址執行
  • 但是,要進入保護模式,上面的有些步驟不是必須的。

    進入保護模式的主要步驟有

  • 準備 GDT
  • 加載 GDT
  • 打開 A20
  • 使 CR0 的 PE 位 = 1
  • 跳轉,進入保護模式
  • 需要強調的是,在 setup.s 程序執行結束后,系統模塊 system 被移動到物理地址 0 開始處,從位置 0x90000 開始處則存放內核將會使用的一些參數,示意圖如下圖:

    此時臨時全局表中有三個描述符,第一個是 NULL,不使用;另外兩個分別是代碼段描述符和數據段描述符,它們都指向系統模塊的起始處,即物理地址 0 處。這樣當 setup . s 中執行最后一條指令

    jmp 0,8

    就會跳到 head.s 程序的起始位置,這條指令中的 ‘8’ 是段選擇符,即 GDT 中的代碼段描述符。‘0’ 是代碼段中的偏移值。

    這里的全局描述符表,是一個臨時表,僅僅是為了進入保護模式。進入保護模式后,會執行 head.s 中的代碼,head.s 會設置真正的全局描述符表。


    參考資料

    1《Linux內核完全剖析》(趙炯,機械工業出版社,2006)

    2《Orange’s:一個操作系統的實現》(于淵)

    總結

    以上是生活随笔為你收集整理的setup.s 总结——Linux-0.11 剖析笔记(四)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。