電腦系統是怎麼做出來的?

哎呦我的tou像不錯呦

這個是不矛盾的,為何非要糾結於雞和蛋。操作系統本身就是一個程序,有沒有操作系統和能不能寫出程序是沒有關係的。

當計算機出來的時候,便是通過0和1來操作(低電壓和高電壓),也就是最底層的硬件就是通過電壓然後一個個的門來進行操作的。



那麼這些門怎麼組成電腦的呢?(準確來說是CPU),不同的CPU有不同的組成方式,早期的電腦就是一臺機器就是一臺機器,其他機器的命令絕對不可能運行在這樣機器上。所以後來決定統一一下。所以現在主流的CPU架構就這麼幾種。

不同的CPU架構,它的指令是不一樣的,所有這樣的指令,被稱為指令集,這個指令集可以完整的操控電腦的所有硬件。這就是機器碼。那麼後來決定這樣太麻煩了,記不住,於是發明了彙編語言,加入了一些助記符號。

但是這樣還是很麻煩(中間的發展過程我就不詳細講了),於是發明了c語言,在早期的c語言裡面可以嵌入彙編語言的,雖然現在已經不允許了。c語言被稱作中級語言,因為它很方便,但是對底層的硬件支持十分良好。c語言的指令,對應的就是彙編語言的指令或者最原始的機器指令。當編譯之後,c語言指令(彙編語言指令)就轉變為了機器碼。然後這樣的機器碼才在CPU上運行。



那麼操作系統呢?第一個操作系統是由BCPL(c語言的前身)語言寫出來的(Unix),雖然後來經過優化,使用C語言完成的。

所以說操作系統也不過是一個程序而已,沒有操作系統,只是不習慣我們現在操作而已,如果直接將機器碼放在CPU中,一樣是可以運行的。

而Java就是自己的指令對應著c語言的指令或者機器碼,然後通過JVM進行編譯或者解釋,最終運行。


Python雁橫

沒有學過計算機發展史吧,你學過就不會感覺疑惑。第一代為機器語言,即0101這種形式,也是現代計算機主要數據儲存和表示方式。第二代為自然語言(彙編語言),即開始通過符號來表示0101,例如AND。第三代高級語言(以C/C++,Java為代表),就是題主所舉例的。操作系統本身也是一種程序,不過是混入了一些彙編語言。高級語言是面向應用層的,機器、彙編面向是物理層的,操作系統不是用Java編寫的,而是一個和Java無關的領域了。


程序員1024

首先,"語言程序在系統中運行"的觀點不對。有的計算機是沒有系統的,如單片機。還有,就算是我們常用的電腦,也可以不運行windows,也可以不運行linux。微機原理課程的彙編語言實驗,程序是運行在裸機系統上的。

也就是說,可以編寫程序(如彙編)放在磁盤引導扇區,不經過系統直接運行該程序。如果編寫一個任務調度的簡單程序,就實現了多個程序同時運行的功能,這是操作系統的一部分。如果用同樣的方式,編寫具有內存管理,內存分配等等的功能,就是在製造一個操作系統了。


分享到:


相關文章: