操作系統筆記

1. 公設是學習和研究的起點,類似理科學中的公理和定理,以此爲基礎向上研究;

2. 硬件適配設備(外設)即 IO 接口,接口即標準;

3. 硬件輸入輸出上大體上分爲串行和並行兩種;

4. 顯卡上的顯存也要映射到物理內存;

5. 外設運行的原理:外設 -----》IO 接口 -----》IO 接口上的寄存器(常說的端口)----》 CPU;

6. 用戶態和內核態是針對 CPU 來講的,CPU 是運行在用戶態(特權 3 級)還是內核態(特權 0 級);

7. 應用程序經過編譯器編譯後生成機器碼在 CPU 上運行,當要調用硬件資源時,調用系統調用號,通過操作系統進行系統調用;應用程序作系統調用時 CPU 從特權 3 級進入特權 0 級,這種情形叫陷入內核;

8. 內存是隨機讀寫設備,訪問其中一處不用從頭開始找,只需直接給地址就可以;

9. 內存分段是給 CPU 用的,分段的意義首先是爲了重定位;假如沒有分段,編譯器編譯後要將程序放在內存物理地址 100-200 處,這時該地址就不能放其他數據了;如果採用分段式,採用基地址 + 偏移地址方式,可以把程序放在任意內存段中。

10. 如何用 16 位寄存器訪問 20 位地址空間呢?CPU 設計者設計,在 CPU 接到“段基址 + 段偏移地址“地址後,自動將段基址乘 16,即左移 4 位,然後再加上段偏移地址,這樣就能找 20 位地址了;

11. 操作系統在平坦模式和多段模式下,應用程序操作內存方式不同。高級語言均採用平坦模式,僅彙編語言採用多段模式;

12. 操作系統採用虛擬內存管理即採用處理器的分頁機制;

13. 程序對齊,爲了使程序大小爲 16 的倍數,編譯器在程序中塞了好多 0,讓程序出現很多空隙,這種情況中程序對齊;

14. 全局描述符表(Global description table),記錄了段的起始,大小等信息;GDT是由操作系統處理供 CPU 使用的;

15. 內存訪問方式:物理地址 -----》線性地址(選擇子+GDT)-----》虛擬地址(CPU 開啓地址分頁功能後);

16. Linux 程序和 Windows 程序不能互相通用的原因首先是程序格式不同,Linux 程序格式是 elf 格式,Windows 程序是 PE 格式;其次,兩個操作系統系統調用的接口不同,Linux 中API稱爲系統調用,是通過 int 0x80 這個軟中斷實現的,而 Windows 中的API 是存在於動態鏈接庫文件(DLL)中的;

17. 程序中 static 變量即全局變量,是放在數據段中,局部變量放在棧內存中,方便隨時清理;

18. 堆是程序運行過程中用於動態內存分配的內存空間,是操作系統爲每個用戶規劃的,屬於軟件範疇;棧是處理器運行的必備內存空間,是硬件必須的,但也是操作系統分配的;

19. 解釋型語言也叫腳本語言,腳本語言由腳本解釋器執行。在腳本解釋器看來,腳本代碼就是一個長字符串。

 

 

 

 

 

 

 

 

發佈了26 篇原創文章 · 獲贊 13 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章