學習作業系統必須要了解一切。
首先要了解機器:
每條指令的長度,每條指令的功能,對機器的影響等等。
有哪些暫存器,都具有什麼功能? 如何訪問這些暫存器。
在訪問資料的時候,機器會給你做什麼?
在執行一條指令的時候,機器會做什麼事情? 修改什麼暫存器。
周邊裝置 的訪問 (比如說 磁碟,行式印表機等) 是如何進行的?
然後要了解編譯器: 將 一段c 語言**編譯成什麼樣子?
資料放在那裡,**又放在那裡,都有什麼樣子的資料?
函式呼叫是如何實現的?
鏈結的時候的資料是如何放置在一起的?
寫組合語言的時候,或者寫 c 語言的時候如何影響 彙編器 或者 c 編譯器的行為,具有哪些可以影響的行為?
了解編譯過後的**是什麼樣子, 載入到記憶體的時候又是什麼樣子?
這兩個實體 之間 具有何種對應關係? (非常重要)
(其實也就是虛擬位址空間 和 實體地址空間的對應關係)
需要了解,作業系統記憶體是如何管理的,又是如何給乙個程序,或者給自身,分配記憶體的? (涉及到具體的資料存放在物理記憶體**?)
還需要了解中斷,這個很重要,中斷的時候 乙個程序是如何切換到 另外乙個程序,切換了之後又是如何 切換回來
並且可以依舊接著繼續執行程式呢? (為什麼可以接著繼續執行程式,這個是非常重要的。儲存現場,指的是儲存了什麼東西呢?)
當我們真的了解了上述的東西之後,就可以說對作業系統入門了,並且可以開始琢磨著寫自己的作業系統了。
docker操作遇到的一些問題
denied requested access to the resource is denied 解決 推送時必須保證docker hub帳號與當前推送的映象作者名一致 解決 要刪除映象,先要刪除該映象的容器,如果有多個容器例項,則需要全部刪除,最後才能刪除映象。查詢已有的例項 docker ps...
linux 部署專案會遇到的一些問題
sudo nano etc default locale lang en us.utf 8 language en us en reboot 如果系統沒有裝en us en,執行 sudo locale gen en us.utf 8 vi etc passwd 找到該使用者,修改其shell為ba...
學習docker遇到的一些問題
1 docker 容器中vim vi等命令無法使用的那些事 進入容器後,用命令更新源 apt get update 安裝 apt get install vim 2 docker hosts 對映問題 spring boot專案 是使用自定義網域名稱來 訪問註冊中心的,部署進容器裡時,需要對dock...