自學先學作業系統還是組合語言

時間 2021-07-11 22:51:50

1樓:吶吶啵

不衝突,二者相輔相成,可以並行走。

彙編一般就是用來寫引導程式,之後就切換到c語言了。實現程序切換可能也需要用到一點彙編。但是主體還是c或者其他高階語言。

學習的時候最好先巨集觀再微觀,要對整體體系結構有個大致把握,做細節方面的學習的時候,要思考這部分在整個體系裡的位置和作用。

作業系統大致可以分兩部分:初始化啟動、資源排程執行。

其實作業系統的核心應該在於資源排程執行,理想化的看,這部分邏輯和硬體及底層是無關的。

初始化啟動和硬體息息相關,這部分也是和彙編以及硬體交集最密的部分。大部分初學者都會在這一層投入巨大的精力。cpu可以認為是設計好的巨量的數位電路,其可以執行對應的機器碼從而觸發硬體預設的一些功能。

可以簡單認為硬體留出了一部分介面給軟體用,系統底層將這些硬體介面封裝好,給系統上層使用,而系統上層專注於資源排程而不太在乎底層實現細節。

系統硬體相關的初始化和硬體有關,比如x86、arm屬於不同陣營,初始化時的細節上是不同的,雖然大的邏輯上是類似的。

一般常見的教程都是以x86來講的,但是x86有很多歷史包袱(比如實模式保護模式),初學者經常會在這些地方投入不小的精力,為先輩填坑,這個其實有點不值當的。

如果從底層到頂層的實現原理都大致掌握,那麼可以選乙個具體的平台來開始。比如我學習的時候有兩本書《OrangeS:乙個作業系統的實現》,《30天自製作業系統》等,都是基於x86的,現在應該更多了。

如果arm相關的,可以找一些arm微控制器或者平台來學習,比如樹莓派,應該也有挺多教程的。

另外,要知道人力是有限的,不要想著把所有細節搞清楚,就好比沒必要把整本字典背下來一樣,掌握主體框架為主。

作業系統還會出現革命性突破麼?

桑文鋒 在2001年剛上大學的時候,我們都是對微軟充滿敬畏的,覺得在作業系統領域,沒有公司能夠再超越微軟。那個時候作為大一學生,基礎知識太少了,根本不清楚作業系統怎麼運作的,甚至不知道作業系統分為核心,開發框架,應用程式這三層。當然那個時候也在暢想除非出現新的計算機形式。這種時候沒有等太久,也就到了...

為什麼要學作業系統?

JavaGuide 作業系統中的很多思想 很多經典的演算法,你都可以在我們日常開發使用的各種工具或者框架中找到它們的影子。比如說我們開發的系統使用的快取 比如 Redis 和作業系統的快取記憶體就很像。CPU 中的快取記憶體有很多種,不過大部分都是為了解決CPU處理速度和記憶體處理速度不對等的問題。...

現在哪些手機廠商作業系統還有二級選單(應用抽屜)?

zdz 本人是三星黨,其中乙個原因就是三星一直都是有 保留二級選單的,從初中就一直用三星,特別喜歡有二級選單的手機,但是現在這樣的手機越來越少,現在中國產的系統都一味地模仿IOS,連耳機孔也跟著取消,感覺特別丟臉,希望中國能做出自己特色的手機品牌,順便一提,取消耳機孔真的特別不合理 郭笑然 二級選單...