一直想不明白,一些硬體是怎麼在軟體的操控下運行起來的。例如顯示器是通了電,所以亮起來。可是文件是怎麼寫入磁碟的呢?諸如此類的問題,希望大家能解釋一下!


看到有很多人推薦看書了。我不再推新的,也推薦他們推薦過的,不過只推薦這一本。

《編碼:隱匿在軟硬體背後的語言》,這本書簡單,還有意思,希望對你有幫助。

下面的就別看了,你能問這個問題,那麼下面的看了也白看,純粹耽誤時間。

《計算機體系結構》《彙編語言》《編譯原理》《深入理解計算機系統》

真不知道這四本跟你問的有什麼關係。又不是要了解計算機原理。硬體難道就只有計算機么??

真是理解有誤啊!!


所有電子設備里的文件,實質上是一串串01二進位代碼組成的。

這裡簡單講講數據是如何存入存儲設備的。

就拿文本文件來說,例如一個文本文件x.txt 內包含這樣一段字元串「abc」,其中字元串中的a在asc碼中應該是97這個值,當然這個值是由十進位表示的,以下我們將其轉成十六進位和二進位表示是這樣的:96(D) -&> 0x61(H) -&> 0110 0001(B)。

重點看二進位碼 「0110 0001」,由於二進位碼的每個bit只有兩種狀態,所以二進位數據就很容易由CMOS或TTL電路的高低電平狀態所表示,即高電平表示1,低電平表示0,當我們需要將文本寫入存儲設備時,通常主機與被寫入設備之間會通過某種協議連接起來,它們之間比較常見的通信協議如iic協議,而這些比較接近底層的通信方式就是通過有序的電平變化來傳輸信息的。

這裡舉個單片機(mcu)與AT24c02(存儲設備)之間的數據操作的例子:當要向存儲器寫入一個字元a時,單片機與存儲設備之間連接的數據線會根據時鐘線的變化改變電平狀態(這裡就是屬於軟體控制了,軟體操作單片機的GPIO口的電平狀態),存儲設備作為iic從機,讀取來自數據線的電平狀態。如:傳輸「0110 0001」,軟體根據二進位數據依次變化GPIO的電平,即「低高高低 低低低高」這8個「狀態」(例如:第一個毫秒是低,第二個毫秒是高……)。而存儲設備讀取8個bit(電平狀態)後,再接收一個停止位,就可得知從mcu傳輸過來的數據是97(D)了。(至於如何區分數據各個位是依靠時鐘線的邊沿跳變區別,具體看iic通信協議)

純手機手打,無圖,請諒解~


只是一名學生,剛學了點相關知識,哪裡說錯了請批評指正。

先拋幾本書吧:《編碼:隱匿在軟硬體背後的語言》《計算機體系結構》

《彙編語言》

《編譯原理》《深入理解計算機系統》估計題主學過c語言,想要知計算機究竟是怎麼跑起來的。

強烈推薦《編碼:隱匿在軟硬體背後的語言》,不要被書名騙到了,這其實是介紹計算機硬體的的書,而且講得通俗易懂,關鍵是很底層。

簡單來說,處理器能夠提供一組指令集,機器指令是處理器能夠處理任務的最小單位,雖然計算機能夠做很多事情,但說到底它只是執行這些指令,換句話說,計算機執行的再複雜的任務,都只是這些指令的排列組合,運行軟體就是是處理器要執行的任務;機器指令的實現,則依賴底層電路,這需要相關的電路知識,(其實是我水平有限,說不清楚)建議題主還是自己去看看相關書籍吧。

強行回答,似乎沒有正面回答到問題?(ˉ﹃ˉ?)

這個涉及到很深層次的操作系統、計算機組成原理以及數字電路的知識,如果沒有相關知識儲備,不建議了解。直觀來說軟體反映到硬體上就是各種電路開關,通過開關來控制硬體


謝邀,可以先看看計算機組成原理,後期跟進學習操作系統與嵌入式開發
計算機組成原理,操作系統學一學。
推薦閱讀:
相关文章