0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

計(jì)算機(jī)系統(tǒng)講解(上)

CHANBAEK ? 來源:CurryCoder的程序人生 ? 作者: CurryCoder ? 2023-09-27 15:09 ? 次閱讀

1.全書結(jié)構(gòu)

(1).Chapter01:計(jì)算機(jī)系統(tǒng)漫游

(2).Chapter02~Chapter12分為三部分

  • Part I:程序結(jié)構(gòu)和執(zhí)行(Chapter02~Chapter06)
  • Part II:在系統(tǒng)上運(yùn)行程序(Chapter07~Chapter09)
  • Part III:進(jìn)程間的交互和通信(Chapter10~Chapter12)

2.程序編譯流程

(1).編譯系統(tǒng)工作流程

圖片

程序編譯

圖片

詳細(xì)過程

  • Stage1(預(yù)處理) :預(yù)處理器會根據(jù)以#開頭的代碼來修改原始程序,預(yù)處理器會讀取頭文件中的內(nèi)容,將頭文件中的內(nèi)容直接插入到源程序中,結(jié)果就得到了另一個(gè)C程序。經(jīng)預(yù)處理器處理后得到的文件通常以.i為后綴結(jié)尾,它仍然是一個(gè)文本文件;
  • Stage2(編譯) :編譯器將hello.i文件翻譯成hello.s文件,這一過程稱為編譯。其中編譯這一階段包括詞法分析、語法分析、語義分析、中間代碼生成及優(yōu)化等一系列的中間操作;
  • Stage3(匯編) :匯編器根據(jù)指令集將匯編程序hello.s翻譯成機(jī)器指令,并且把這一系列的機(jī)器指令按照固定的規(guī)則進(jìn)行打包得到 可重定位目標(biāo)文件hello.o 。此時(shí),雖然hello.o是一個(gè)二進(jìn)制文件,但是還不能執(zhí)行還需要進(jìn)行鏈接操作;
  • Stage4(鏈接) :在hello這個(gè)程序中,調(diào)用了標(biāo)準(zhǔn)C庫中的函數(shù)printf,每一個(gè)C語言的編譯器都會提供。當(dāng)調(diào)用printf函數(shù)時(shí),編譯器就知道你要在屏幕上打印輸出內(nèi)容,它會將這行代碼翻譯成計(jì)算機(jī)可以理解的指令。printf函數(shù)在名為printf.o文件中,這個(gè)文件是一個(gè)提前編譯好的目標(biāo)文件。鏈接器ld負(fù)責(zé)把hello.o和printf.o進(jìn)行合并,但合并需要遵循一定的規(guī)則。正是由于鏈接器要對hello.o和printf.o進(jìn)行調(diào)整,所以hello.o才會稱為可重定位目標(biāo)文件,最終經(jīng)過鏈接階段可以得到 可執(zhí)行目標(biāo)文件hello 。此時(shí),得到的hello就可以被加載到內(nèi)存中執(zhí)行了。

(2).理解編譯系統(tǒng)工作流程意義

  • 優(yōu)化程序性能;
  • 理解鏈接時(shí)出現(xiàn)的錯(cuò)誤;
  • 避免安全漏洞(緩沖區(qū)溢出);

3.計(jì)算機(jī)系統(tǒng)硬件組成

圖片

計(jì)算機(jī)硬件系統(tǒng)組成
(1).CPU的結(jié)構(gòu)

程序計(jì)數(shù)器PC :一個(gè)字即4字節(jié)(32位系統(tǒng))或一個(gè)字即8字節(jié)(64位系統(tǒng))的存儲空間,里面存放的是某一條指令的地址。從系統(tǒng)上電的那一瞬間到系統(tǒng)斷電,處理器就不斷地在執(zhí)行PC執(zhí)向的指令,然后更新PC,使其指向下一條要指向的指令。注意:下一條執(zhí)行的指令與剛剛執(zhí)行過的指令不一定是相鄰的地址。

寄存器文件 :它是CPU內(nèi)部的一個(gè)存儲設(shè)備,寄存器文件是由一些單字長的寄存器構(gòu)成,每個(gè)寄存器都有自己唯一的名字。換句話說,寄存器可以理解為一個(gè)臨時(shí)存放數(shù)據(jù)的空間。

算術(shù)邏輯單位ALU :例如,計(jì)算兩個(gè)變量a、b的和,處理器從內(nèi)存中讀取a的值暫存在寄存器X中,讀取b的值暫存在寄存器Y中,這個(gè)操作會覆蓋寄存器中原來的數(shù)值。處理器完成加載的操作后,ALU會復(fù)制寄存器X和Y中保存的數(shù)值,然后進(jìn)行算術(shù)運(yùn)算,得到的結(jié)果會保存在寄存器X或寄存器Y中。此時(shí),寄存器中原來的值會被新的值所覆蓋。

(2).主存/內(nèi)存

處理器在執(zhí)行程序時(shí),內(nèi)存主要存放程序指令和數(shù)據(jù)。從物理上來說,內(nèi)存就是由隨機(jī)動態(tài)存儲芯片組成;從邏輯上來說,內(nèi)存可以看成是一個(gè)從0開始的大數(shù)組,每個(gè)字節(jié)都有相應(yīng)的地址。

(3).總線

內(nèi)存和處理器之間通過總線來進(jìn)行數(shù)據(jù)傳遞,總線貫穿了整個(gè)計(jì)算機(jī)系統(tǒng),它負(fù)責(zé)將信息從一個(gè)部件傳遞到另一個(gè)部件,通??偩€被設(shè)計(jì)成固定長度的字節(jié)塊即字word。字表示多少個(gè)字節(jié),各個(gè)系統(tǒng)是不一樣的。

(4).輸入輸出設(shè)備

例如:鍵盤、鼠標(biāo)、顯示器等,每個(gè)輸入輸出設(shè)備都通過一個(gè)控制器或者適配器與IO總線相連。

4.程序運(yùn)行背后的故事

(1).鍵盤輸入./hello時(shí),shell程序會將輸入的字符逐一讀入寄存器,處理器會把這個(gè)hello字符串放入內(nèi)存中;

圖片

第1步

(2).當(dāng)完成輸入,按下回車鍵時(shí)shell程序已經(jīng)知道我們已經(jīng)完成了命令的輸入,然后執(zhí)行一系列的指令來加載可執(zhí)行文件hello。這些指令將hello中的數(shù)據(jù)和代碼從磁盤復(fù)制到內(nèi)存。數(shù)據(jù)就是要在屏幕上顯示的“hello worldn”,這個(gè)復(fù)制的過程將利用DMA技術(shù),數(shù)據(jù)可以不經(jīng)過處理器,從磁盤直接到達(dá)內(nèi)存;

圖片

第2步

(3).當(dāng)可執(zhí)行文件hello中的代碼和數(shù)據(jù)被加載到內(nèi)存中,處理器就開始執(zhí)行main函數(shù)中的代碼。CPU會將“hello worldn”這個(gè)字符串從內(nèi)存復(fù)制到寄存器文件,再從寄存器文件復(fù)制到顯示設(shè)備即屏幕上;

圖片

第3步

5.內(nèi)存層級結(jié)構(gòu)

(1).通常情況下,大容量的存儲設(shè)備存取速度要比小容量的慢;運(yùn)行更快設(shè)備的價(jià)格相對于運(yùn)行速度慢的設(shè)備的價(jià)格要貴;

寄存器文件Register File           100~1000B
        L1 cache                     10~100KB
        L2 cache                     0.1 ~10MB
        L3 cache                     10~100MB
    內(nèi)存Main Memory                   1~100GB
    磁盤Disk                          1~1000TB

(2).針對處理器和內(nèi)存之間的讀寫速度差異,系統(tǒng)設(shè)計(jì)人員在寄存器文件和內(nèi)存之間引入了高速緩存cache 。比較新且處理能力比較強(qiáng)的處理器,一般有三級高速緩存:L1 cache、L2 cache、L3 cache。L1 cache的訪問速度與訪問寄存器文件幾乎一樣快,L2 cache的訪問速度是L1的5倍,L3 cache的容量更大,訪問速度與L2 cache相比更慢。

圖片

內(nèi)存層次結(jié)構(gòu)

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 計(jì)算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7207

    瀏覽量

    87251
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7580

    瀏覽量

    134533
  • 計(jì)算機(jī)系統(tǒng)

    關(guān)注

    0

    文章

    266

    瀏覽量

    24015
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1602

    瀏覽量

    48916
  • 程序編譯
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    5449
收藏 人收藏

    評論

    相關(guān)推薦

    計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)

    計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)
    發(fā)表于 05-09 19:03

    什么是計(jì)算機(jī)系統(tǒng)、計(jì)算機(jī)硬件和計(jì)算機(jī)軟件?

    第一章 計(jì)算機(jī)系統(tǒng)概論1. 什么是計(jì)算機(jī)系統(tǒng)、計(jì)算機(jī)硬件和計(jì)算機(jī)軟件?硬件和軟件哪個(gè)更重要?解:P3計(jì)算機(jī)系統(tǒng):由
    發(fā)表于 07-22 09:06

    什么是計(jì)算機(jī)系統(tǒng)?硬件和軟件哪個(gè)更重要?

    第一章計(jì)算機(jī)系統(tǒng)概論1 .什么是計(jì)算機(jī)系統(tǒng)、計(jì)算機(jī)硬件和計(jì)算機(jī)軟件?硬件和軟件哪個(gè)更重要?解: P3計(jì)算機(jī)系統(tǒng):由
    發(fā)表于 07-26 07:18

    計(jì)算機(jī)系統(tǒng)中的軟件系統(tǒng)

    專用計(jì)算機(jī)現(xiàn)代計(jì)算機(jī)運(yùn)算速度最高可達(dá)每秒幾萬億次幾十億次幾億次幾萬次計(jì)算機(jī)輔助制造是計(jì)算機(jī)應(yīng)用領(lǐng)域之一其英文縮寫是所謂的信息是指基本素材非數(shù)值數(shù)據(jù)數(shù)值數(shù)據(jù)處理后的數(shù)據(jù)
    發(fā)表于 09-13 07:22

    嵌入式計(jì)算機(jī)系統(tǒng)概述

    嵌入式計(jì)算機(jī)系統(tǒng)概述:定義:以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟件硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)嵌入式
    發(fā)表于 12-22 06:08

    詳解單芯片微型計(jì)算機(jī)系統(tǒng)

    什么是單芯片微型計(jì)算機(jī)系統(tǒng)呢?單芯片微型計(jì)算機(jī)系統(tǒng)是由哪些部分組成的?
    發(fā)表于 01-19 07:05

    計(jì)算機(jī)系統(tǒng)概論

    1.1 計(jì)算機(jī)系統(tǒng)簡介1.2 計(jì)算機(jī)的基本組成1.3 計(jì)算機(jī)硬件的主要技術(shù)指標(biāo)1.4 本書結(jié)構(gòu)
    發(fā)表于 04-11 09:31 ?0次下載

    基于EDA平臺的計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)課程實(shí)踐

    基于EDA平臺的計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)課程實(shí)踐本文分析了計(jì)算機(jī)專業(yè)本科生課程計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)的教學(xué)現(xiàn)狀, 結(jié)合目前在教學(xué)實(shí)踐中采用的部分措施, 提出了在計(jì)算機(jī)系統(tǒng)結(jié)
    發(fā)表于 12-05 16:08 ?0次下載

    微型計(jì)算機(jī)系統(tǒng)

             微型計(jì)算機(jī)系統(tǒng)與傳統(tǒng)的計(jì)算機(jī)系統(tǒng)一樣,也是由硬件系統(tǒng)和軟件系統(tǒng)兩大部分組成的。2.1
    發(fā)表于 03-03 08:31 ?0次下載

    計(jì)算機(jī)系統(tǒng)維護(hù)概述

    計(jì)算機(jī)系統(tǒng)維護(hù)概述 一、計(jì)算機(jī)系統(tǒng)維護(hù)的意義    計(jì)算機(jī)是人們經(jīng)常使用操作的智能化工具,如果使用操作不當(dāng)
    發(fā)表于 10-25 11:00 ?1707次閱讀

    什么是計(jì)算機(jī)系統(tǒng)的容錯(cuò)性

    什么是計(jì)算機(jī)系統(tǒng)的容錯(cuò)性             所謂容錯(cuò)是指在故障存在的情況下計(jì)算機(jī)系統(tǒng)不失效,仍然能夠正常工作的特性
    發(fā)表于 01-08 13:49 ?1595次閱讀

    計(jì)算機(jī)系統(tǒng)小結(jié)

    計(jì)算機(jī)系統(tǒng)小結(jié)   習(xí)慣上所稱的“電子計(jì)算機(jī)”是指現(xiàn)在廣泛應(yīng)用的電子數(shù)字計(jì)算機(jī),它分為專用計(jì)算機(jī)和通用計(jì)算機(jī)兩大類。專
    發(fā)表于 04-13 14:14 ?676次閱讀

    計(jì)算機(jī)系統(tǒng)的硬件組織詳細(xì)概述

    為了解在計(jì)算機(jī)系統(tǒng)中,程序是如何運(yùn)行的,首先需要了解計(jì)算機(jī)系統(tǒng)的硬件組織。
    的頭像 發(fā)表于 02-15 12:28 ?4132次閱讀
    <b class='flag-5'>計(jì)算機(jī)系統(tǒng)</b>的硬件組織詳細(xì)概述

    計(jì)算機(jī)系統(tǒng)的組成和功能

    計(jì)算機(jī)系統(tǒng)是一個(gè)復(fù)雜而龐大的概念,它涵蓋了計(jì)算機(jī)硬件、軟件以及它們之間相互作用的所有元素。為了全面而深入地探討計(jì)算機(jī)系統(tǒng),本文將從定義、組成、功能、發(fā)展歷程以及未來趨勢等方面進(jìn)行詳細(xì)闡述。
    的頭像 發(fā)表于 07-24 17:41 ?440次閱讀

    微處理器如何控制計(jì)算機(jī)系統(tǒng)

    微處理器,作為計(jì)算機(jī)系統(tǒng)的核心部件,承擔(dān)著控制整個(gè)計(jì)算機(jī)系統(tǒng)運(yùn)行的重要任務(wù)。它不僅是計(jì)算機(jī)的運(yùn)算中心,還是控制中心,負(fù)責(zé)執(zhí)行程序指令、處理數(shù)據(jù)以及協(xié)調(diào)計(jì)算機(jī)各部件之間的工作。以下將詳細(xì)
    的頭像 發(fā)表于 08-22 14:21 ?262次閱讀