国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 操作系統 > 正文

x01.os.7: 傻子一樣的等

2024-06-28 13:24:24
字體:
來源:轉載
供稿:網友
x01.os.7: 傻子一樣的等

傻子一樣的等

昨日出差,辦完事后,下午 2:30,準備進長途汽車站買票回家,被一人攔住,說可以帶我進去,車馬上就要開了,買票來不及。我以為是汽車司機,就跟了進去。進去后,他打了個電話,說 3:30 車才到,讓我先把票買了。我把錢給他,他拿了個代客車票的單子,寫了幾個字給我,說上車時再換票,然后就走了。人已走,車沒來,我拿著寫了字的紙,感覺像傻子一樣的等。3:30,車來了,我憑那張紙,順利的上了車。是為記。

保護模式

實模式采取 segemnt:offset 的方式,表示 20 位的內存地址。保護模式,段值卻變成了索引,指向 descriptor 數據結構,包含基地址,段界限,屬性。就像鍵盤的 key 不是按順序排列的一樣,這個描述符也稱得上錯落有致。歷史原因不去管它,其構成如下圖:

不難看出,base 32 位,limit 20 位,attribute 12 位,共 64 位。這就是大名鼎鼎的段描述符。現在,我們就來實現一個保護模式的基本框架。

1.建議安裝雙系統,參看 win8 硬盤安裝 Ubuntu:http://www.CUOXin.com/china_x01/archive/2010/11/09/1872739.html

2.進入 ubuntu,在終端中執行如下命令

  sudo apt-get install vgabios bochs bochs-x bximage

這是于淵給出的,但在麒麟中有點問題,還需執行

  sudo apt-get install bochs-sdl

運用時,bochsrc 配置文件開頭需添加display_library : sdl,最后 keyboard_mapping 也要將 x11-pc-us.map 改為sdl-pc-us.map 。虛擬機安裝后,就是開發工具了,執行

  sudo apt-get install build-essential nasm

原則上,這些就夠了。你可以用 gedit 或 vi 來開發。但我更喜歡 eclipse,所以可執行

  sudo apt-get install eclipse

如提示需依賴項,可執行

  sudo apt-get update

當然,CDT 是不可少的。到網上搜素下載,在 eclipse 的 help => install new software 菜單中添加,需注意版本。OK!

3.運行 eclipse,建一 c 空 makefile 項目 x01.os,完整代碼可在 x01.Lab.download 中下載。項目中,freedos.img 文件來自 bochs 網站,a.img 由 bximage 創建。在終端中進入 x01.os 目錄,執行 bochs,在 bochs 中執行 A:>format B:,對 a.img 進行格式化,退出。進入 /mnt/ 執行 sudo mkdir temp,退出。執行 make all 后,執行 bochs,在 bochs 中輸入 A:>B:/boot.com,回車,運行效果圖如下:

其中紅色的字,數據保存在內存 5M 處,遠大于實模式 1M 的限制,進入保護模式無疑。關于代碼如 mov ax, 0xAC00; int 0x21; 等的解釋,可參看 note 中的 DOS 中斷。這就像查字典一樣,兩向對照,當不太難。如能買本《Orange'S 一個操作系統的實現》,那就更好了。

4.關鍵部分,是由保護模式跳回實模式。在 .begin 段中,mov [backRealMode + 3], ax 保存的,就是實模式的 segment 地址。在 .code16 段中,backRealMode: jmp 0:realEntry 就是跳回的關鍵。保存時為什么 +3 ?jmp 1 字節,realEntry 是偏移 2 字節,所以 +3。當執行 backRealMode: jmp 0:realEntry 時,實際上執行的是 jmp segment:realEntry,由此跳回實模式。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 五家渠市| 永德县| 阿拉善盟| 阳曲县| 米林县| 阳江市| 永康市| 渝北区| 大同县| 龙川县| 平乐县| 盐池县| 通化县| 侯马市| 西乌珠穆沁旗| 宁远县| 德庆县| 泰和县| 青铜峡市| 淄博市| 灵丘县| 滨州市| 五峰| 浠水县| 融水| 甘谷县| 陇西县| 阳原县| 涡阳县| 宁化县| 都昌县| 廉江市| 江安县| 遂溪县| 彩票| 灵璧县| 大邑县| 罗城| 新源县| 襄垣县| 襄垣县|