當我向Shell輸入代碼,計算機做了什么?

打開Shell,Shell執(zhí)行它的指令,等待我們輸入一個命令。

當我們在鍵盤上輸入字符串./hello后,鍵盤控制器(或者適配器)通過鍵盤獲取用戶輸入,再通過IO總線、IO橋,以及CPU內(nèi)的總線接口,將自負放到寄存器中,再通過IO橋以及存儲器總線,把字符放到主存儲器中。

當我們在鍵盤上敲回車時,Shell知道命令結(jié)束。然后Shell執(zhí)行一系列指令來夾在可執(zhí)行文件hello,將hello目標文件中的代碼和數(shù)據(jù)從磁盤復制到主存。

一旦目標文件hello中的代碼和數(shù)據(jù)被夾在到主存,CPU就開始執(zhí)行hello程序的main程序中的機器語言指令。這些指令將hello, world\n字符串中的字節(jié)從主存復制到寄存器文件,再從寄存器文件中,通過IO總線復制到顯示設(shè)備,最終顯示在屏幕上。

程序最初是放在磁盤上的;當程序加載時,它們被復制到主存;當CPU處理程序時,指令將其又從主存復制到處理器,最后通過圖形適配器(顯示器在IO總線上的適配器 or 控制器),復制到顯示設(shè)備。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • 8086匯編 本筆記是筆者觀看小甲魚老師(魚C論壇)《零基礎(chǔ)入門學習匯編語言》系列視頻的筆記,在此感謝他和像他一樣...
    Gibbs基閱讀 37,422評論 8 114
  • 一條主線:跟蹤hello程序的生命周期來開始對系統(tǒng)的學習。 1 信息的表示 hello.c的表示方法說明了一個基本...
    王偵閱讀 522評論 0 2
  • 計算機系統(tǒng)是由硬件和軟件系統(tǒng)組成的,它們共同工作來運行應用程序。作為程序員,也需要了解這些組件是如何工作的,以及這...
    knightaoko閱讀 702評論 0 2
  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢閱讀 99,589評論 9 467