我們都知道沒有插電的計算機就是一堆廢鐵,那麼插了電的計算機其實也就是帶了電的廢鐵,哈哈,沒有軟體的運作,計算機的功能也無從發揮。就好像行屍走肉,所以我們要了解一下軟體是什麼。
計算機程式和編譯程式
計算機只認識 0 與1 而已,而且計算機最重要的運算與邏輯判斷是在CPU 內部, 而
CPU 其實是具有微指令集的。因此,我們需要CPU 幫忙工作時,就得要參考微指令集的內容, 然後撰寫讓CPU 讀的懂的指令碼給CPU 執行,這樣就能夠讓CPU 運作了。
不過這樣的流程有幾個很麻煩的地方,包括:
· 需要了解機器語言:機器只認識0 與1,所以你必須天天在鍵盤上打0和1,你說你記的了多少編碼嘛?
·硬體的相關功能函式:因為你的程式必須要寫給機器看, 當然你就得要參考機器本身的功能,函式是一個自我包含的完成一定相關功能的執行程式碼段。
說白了就是將要實現的功能進行模組化,
它是實現某種功能的演算法集合,有助於程式的可重用性。
程式不可移植性:每個CPU 都有獨特的微指令集,同樣的,每個硬體都有其功能函式。因此,你為C計算機寫的程式,理論上是沒有辦法在D 計算機上面運作的!而且程式程式碼的修改非常困難! 因為是機器碼,並不是人類看的懂得程式語言啊!
程式專一性:因為這樣的程式必須要針對硬體功能函式來撰寫, 如果已經開發了一支瀏覽器程式,想要再開發檔案管理程式時,還是得從頭再參考硬體的功能函式來繼續撰寫, 每天都在和『硬體』挑戰!可能會累死你。
既然這麼多的問題,那該怎麼解決呢?所以啊,科學家就創造了“編譯程式“,這樣人類就可以編寫一些人類看的懂的程式碼,然後交給編譯器再翻譯成機器能看的懂的機器碼,目前常見的編譯程式有c,c++,java等等。
越高階的程式越接近人類的語言,所以比如c語言和python的差別就有點大了,c更近機器語言而python就更接近人類的語言,而且學c的難度會比python大。
1、作業系統
我們剛剛談到計算機沒有軟體就是一堆廢鐵,那麼作業系統的功能就是讓cpu可以開始判斷與運算數值、讓主儲存器可以開始載入/讀出資料與程式程式碼、讓硬碟可
以開始被存取、讓網路卡可以開始傳輸資料、讓所有周邊可以開始運轉等等。總之,硬體的所有動作都必須要透過這個作業系統來達成就是了。
我個人理解,作業系統就是一個大的軟體,響應使用者的操作,呼叫各個電腦的硬體,完成各類任務。
2、 作業系統核心
說到系統,就不得不談系統核心了,你的計算機能不能做到某些事情,都與核心有關! 只有
核心有提供的功能,你的計算機系統才能幫你完成!舉例來說,你的核心並不支援某顯示卡
議, 那麼無論你購買了什麼樣的顯示卡,這個核心都無法提供螢幕顯示能力的!
3、系統呼叫(System Call)
既然我的硬體都有核心管理,那麼我想開發軟體的話,自然就要去參考這個核心的相關功能,這樣就從參考硬體函式變成參考核心功能,依然麻煩。
為了解決這個問題,作業系統通常就會提供開發介面給工程師來開發軟體,比如,我們學習c語言,只要參考c程式的函式就可以,不需要參考其他核心的功能。
計算機系統主要有硬體構成,然後核心程式主要再管理硬體,提供合理的系統資源分配,但是人只要操作應用程式,這樣才能夠作業系統。
簡單的總結一下:
1、 作業系統的核心層直接參考硬體的規格寫成的,所以同一個作業系統不能夠再不一樣的硬體架構下執行,比如window的作業系統就不能在蘋果的作業系統執行。
2、 作業系統知識管理硬體資源,例如cpu、記憶體等,如果沒有其他的程式來支援,作業系統沒啥用,至少在我眼裡是這樣的,所以你要看電影啥的就要安裝播放軟體了吧!
3、 應用程式的開發都是參考系統提供的開發介面,我個人理解是小軟體在大軟體上面執行,哈哈。而且在安卓開發的應用程式只能在安卓的系統上執行,蘋果的就不行了。
等等下篇說說系統的核心功能噢!!這個已經算比較難了!
就會自動分享給你群號。歡迎大家加入我們的安全大家庭。提高大家的安全意識,提升大家的網路安全技能一直是我們的初衷和願景,讓我們共同成為守護資訊世界的“SaFeMAN”。
-
1 #
-
2 #
CPU的微指令集是什麼,有資料文件嗎。
-
3 #
–––摘自《鳥哥的linux私房菜》
-
4 #
班主,來位大帽唄,合作愉快
-
5 #
和標題有什麼關係?
-
6 #
通過阿克斯碼,數字可以對應所有的字元,比如數字95代表字母a,95通過二進位制表示為1011111,計算機識別1011111就代表a。以此類推,任何文字字元都可以被計算機識別
我一直不明白軟體是怎麼驅動硬體來工作的