程序員應該了解的計算機知識(一)——基礎理論

前記

   對于半道入行編程的程序員,大部分對計算機的工作原理的了解都是有限的,這些了解大部分都是在日常工作中去了解的,其實對應程序員來說不用深入了解理解計算機基本原理就足以應付當前的工作需要。然而多了解總比不了解要強,這也是筆者要整理此片文章的由衷。

創(chuàng)新互聯(lián)主營臨桂網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,成都App制作,臨桂h5小程序開發(fā)搭建,臨桂網(wǎng)站營銷推廣歡迎臨桂等地區(qū)企業(yè)咨詢

計算機系統(tǒng)概述

1.計算機的分類

   步入21世紀的你,如果還不知道“計算機”,那你真的是OUT了。計算機是20世紀人類最偉大的可選成就之一,話說計算機從總體上來說可分為電子模擬計算機和電子數(shù)字計算機兩大類。電子模擬計算機主要是通過電壓電流模擬實現(xiàn)連續(xù)的數(shù)值運算,常被一些實驗室的科研人員所熟知;而被大眾所熟知的則是電子數(shù)字計算機,也就是我們稱之為的“電腦”,其主要是通過模擬數(shù)字實現(xiàn)非聯(lián)系的位運算。

   數(shù)字計算機根據(jù)計算機效率、速度、適用性等特點,通常又分為專用計算機和通用計算機兩類。專用計算機,顧名思義,其是專門為完成某一類工作而設計的,所以其完成這項工作的效率極高,但是其適用性就大打折扣了。通用計算機并非是為完成莫一項任務而設計,能夠兼容性完成多項任務,按照簡易程度、性能等特點又可以分為巨型機、大型機、中型機、微型機和單片機六類,其體積、功能、數(shù)據(jù)存儲量、指令系統(tǒng)等從前到后依次高升,但是其簡易性則依次降低。巨型機通常也成為“超級計算機”,其結構復雜,運算速度極快,數(shù)據(jù)存儲量大,但是足夠龐大;大中小型計算機主要是根據(jù)其體積來衡量劃定的;微型機簡稱為“微機”,就是常見的個人計算機(PC),其是由大規(guī)模的集成電路組成的體積較小的計算機;單片機則是最為簡單的計算機,其主要是集成電路組成,以至于其體積小,結構簡單。這些劃分只是根據(jù)其特點來區(qū)分的,隨著大規(guī)模集成電路的迅速發(fā)展,今天的小型機可能是明天的微型機,而今天的微型機可能是明天的單片機。

2.計算機的組成

   計算機主要由硬件系統(tǒng)和軟件系統(tǒng)兩部分組成(相信是人都應該看的到,硬件是有型的實體,而軟件則是有型的虛構體),其中硬件構成了計算機的物質基礎,軟件則是計算機系統(tǒng)的應用基礎。通俗的說,軟件就是計算機上能看得到(當然也有看不到的)但是摸不到的能夠協(xié)助完成工作的應用程序,例如Windows系統(tǒng)、硬件驅動程序等其他應用程序;而硬件則是計算機的基本組件,是看得到摸得到的物體,例如主板、CPU等。

2.1.硬件系統(tǒng)組成

   從理論上講,計算機的硬件系統(tǒng)主要由運算器、存儲器、控制器、輸入設備和輸出設備五大部分組成(從名字上即可看出各個部件的作用),這種劃分方式稱為“馮諾依曼體系結構”。

  • 運算器

   運算器(Datapath),顧名思義就是進行運算的執(zhí)行部件。其主要功能是對數(shù)據(jù)進行運算的加工處理操作,包括加、減、乘、除等數(shù)學算術運算和與、或、非等邏輯運算。運算器主要由運算邏輯單元(ALU)和寄存器兩部分元件組成,其中寄存器用于提供參與運算的數(shù)據(jù)或臨時保存運算結果。通常情況下運算器集成于CPU中央處理器中。

   實質上運算器采用的二進制數(shù)制系統(tǒng),其參與運算的數(shù)是有二進制表示(因為二進制數(shù)的運算規(guī)律非常簡單,在電子線路中可以靈活的表示電子元件的狀態(tài),其比較容易實現(xiàn)而且設備最省)。在運算過程中,位數(shù)越多則運算精度越高,則其所需的電子元件就越多,現(xiàn)在常見的計算機運算器支持的位數(shù)有8位、16位、32位或64位。

  • 存儲器

   存儲器(Memory),顧名思義就是用于存儲數(shù)據(jù)的部件。其主要功能用于存放程序與數(shù)據(jù)(程序是計算機操作的依據(jù),數(shù)據(jù)是計算機操作的對象),程序和數(shù)據(jù)在存儲器中以二進制的方式表示,每8位二進制數(shù)碼劃分為一個存儲單元,必須通過地址來訪問該單元,地址其實就是這個存儲單元的編號。

   存儲器主要由存儲體、地址寄存器與譯碼線路、讀寫電路與數(shù)據(jù)寄存器、控制線路等元件構成;通常情況下存儲器可分為內(nèi)部存儲器和外部存儲器兩大類,內(nèi)部存儲器就是我們常說的內(nèi)存(也稱為主存),外部存儲器也就是常說的硬盤、U盤等,也成為外存或輔存,一般情況下外部存儲器也作為輸入/輸出設備。

  • 控制器

   控制器(Control),是整個計算機的控制中心,主要用來協(xié)調計算機各個組件的工作,完成程序信息的處理和數(shù)據(jù)的輸入/輸出。它一般由指令寄存器、狀態(tài)寄存器、指令編碼器、時序電路和控制電路組成。簡而言之,控制器就是協(xié)調指揮計算機各個部件工作的組件。通常情況下控制器集成于CPU中央處理器中。

   程序是由指令序列組成的,其實執(zhí)行程序就是逐條執(zhí)行指令的過程,實質運算器所完成的每一步運算操作就是一條指令。指令是由操作碼和地址碼組成,其實都是二進制數(shù)碼,其中操作碼即表示指令所要進行的操作,例如加、減、存、取等操作,地址碼表示參與運算的數(shù)據(jù)的地址,即在存儲單元中的位置??刂破骶褪墙馕鲞@條指令,然后從存儲單元中取出數(shù)據(jù),并進行相應的操作運算。

   計算機在進行計算機時,指令必須按順序一條一條的執(zhí)行??刂破鞯幕救蝿站褪前凑罩噶钚蛄械捻樞?,先從存儲器取出一條指令放到控制器中,并對該指令的操作碼由譯碼器進行解析,然后根據(jù)譯碼對應的操作進行相應的動作行為,這就是執(zhí)行指令的過程;接著取出第二條指令,按照上述順序進行執(zhí)行。過程中控制器會通過指令計數(shù)器來控制取指令的當前位置,每取出一條指令其計算器就會加1,為取下一條指令做好準備。

  • 輸入/輸出設備

   輸入設備(Input System),輸入設備是計算機的重要外部設備,其主要作用是將程序、原始數(shù)據(jù)、文字、字符、控制命令或現(xiàn)場采集的數(shù)據(jù)等信息輸入到計算機,并轉換為二進制格式保存在內(nèi)存中。常見的輸入設備有鍵盤、鼠標器、光電輸入機、磁帶機、磁盤機、光盤機等。

   輸出設備(Output System),輸出設備是計算機的重要外部設備,其主要作用是將計算機的運算中間結果或最終結果、機內(nèi)的各種數(shù)據(jù)符號及文字或各種控制信號等信息展示給用戶。常見的輸出設備有顯示器、打印機、繪圖儀、音箱、投影儀等。

  • 總線

   除過上面介紹的五部分外,計算機系統(tǒng)中還必須包括另一個部件——總線??偩€是一組為系統(tǒng)部件之間數(shù)據(jù)傳送的公用信號線。具有匯集與分配數(shù)據(jù)信號、選擇發(fā)送信號的部件與接收信號的部件、總線控制權的建立與轉移等功能。典型的微機計算機系統(tǒng)的結構通常多采用單總線結構,一般按信號類型將總線分為三組,其中AB(Address Bus)為地址總線;DB(Data Bus)為數(shù)據(jù)總線;CB(Control Bus)控制總線。計算機通過總線將五大部件連接起來,總線是它們相互通信的公共通路,主要任務是在各部件之間傳送地址信息、數(shù)據(jù)信息和控制信息。

2.1.硬件實物組成

   從實物上看,一般PC包括鍵盤、鼠標、顯示器、主機等大型部件組成,而主機則是計算機的主體部分,包括CPU、主板、內(nèi)存條、顯卡、聲卡、網(wǎng)卡、硬盤以及其他媒體驅動器組成(這些都是通常聽到的可見的實體物件)。

  • 主板

   主板,又稱主機板(Main Board)、系統(tǒng)板(System Board)或母板(Mother Board),是計算機最重要的部件之一。主板上包含了計算機的主要電路系統(tǒng),所有的計算機其他組件必須直接或間接依賴主板,計算機的性能主要取決與主板。主板其實可以看作一個設有多個接口的電路板,其中主要包括芯片、插槽、外設接口三大類組件。

   芯片類主要有BIOS(Basic Input/Output System)芯片,南北橋芯片和RAID控制芯片等。BIOS芯片,即基本輸入/輸出系統(tǒng)芯片,它是一個存儲器,內(nèi)部保存著與主板搭配的基本輸入輸出系統(tǒng)程序,這個程序由芯片制造商制作并固化在芯片上的;也可以說BIOS其實是一個底層軟件,用于控制計算機的底層的輸入輸出操作,這個軟件可以識別各種硬件,還可以設置引導系統(tǒng)的設備,系統(tǒng)時間以及調整CPU外頻等。因為BIOS是存儲在BIOS芯片中的,而不是類似其他的外部存儲器中,所以通常稱為“固件(Firmware)”。隨之技術的不斷發(fā)展,現(xiàn)在的BIOS也支持重新寫入,可以使計算機獲得更好的性能和支持。 南/北橋芯片是兩個通信橋梁的兩個芯片,合成芯片組。南橋芯片主要負責硬盤等存儲設備和PCI之間的數(shù)據(jù)流通;北橋芯片主要負責處理CPU、內(nèi)存和顯卡三者間的數(shù)據(jù)流通,一般發(fā)熱量較大,位于散熱裝置附近。RAID控制芯片,主要用于支撐硬盤。

   插槽類主要有CPU插槽、內(nèi)存插槽、PCI插槽、PCI Express插槽等。CPU插槽用于安裝CPU部件,CPU部件必須與主板相互兼容才可以安裝。內(nèi)存插槽主要用于安裝內(nèi)存條的卡槽,內(nèi)存種類、數(shù)量和容量都有內(nèi)存插槽決定。PCI插槽主要用于安裝調制解調器、聲卡、網(wǎng)卡等設備。PCI Express插槽主要用于安裝顯卡部件。

   外設接口類主要有硬盤接口、COM接口(串口)、PS/2接口、USB接口、LPT接口(并口)、MIDI接口等。硬盤接口可分為IDE接口和SATA接口,現(xiàn)在大多都是SATA硬件驅動器接口,這個接口的傳輸數(shù)據(jù)效率更高。COM接口用于連接串行鼠標和外置調制解調器(Modem)等設備,基本被淘汰。PS/2接口用于連接鍵盤或鼠標,臺式機存在。USB接口使用較為廣泛,大多數(shù)外置設備都支持這個接口,該接口支持即插即用。LPT接口用于連接打印機或掃描儀等。MIDI接口主要用于MIDI設備,用于與其它控制設備相互通信。

   綜上所述,主板在計算機中起到了舉足輕重的作用,通過各種控制信號來管理各種電子容器,從而達到不同的效果,幾乎所有的外設接口都直接或間接的與主板相關聯(lián),大部分的硬件設備必須與主板相兼容才能正常運行,也可以說主板可以決定其它的部件。主板可以看著各個部件協(xié)調工作的場所,提供各個不僅相互協(xié)調工作的數(shù)據(jù)流通,主板內(nèi)部自身供電裝置維護其內(nèi)部BIOS的運行。

  • CPU

   CPU(Central Processing Unit),一個耳熟能詳?shù)慕M件,被親切的稱之為“中央處理器”,它是整個計算機的運算核心和控制核心。其主要功能是解釋計算機指令以及處理程序中的數(shù)據(jù)。CPU由運算器(包含寄存器)和控制以及總線組成,CPU的工作過程分為提?。‵etch)、解碼(Decode)、執(zhí)行(Execute)和寫回(Writeback)四個步驟。

   程序是有指令(指令就是二進制數(shù)碼組合)構成的序列,執(zhí)行程序就是按指令序列逐條執(zhí)行指令。當打開某個程序時,會由運行平臺將該程序解析為指令序列并保存在存儲器中,然后CPU取出指令序列逐條執(zhí)行。CPU首先從存儲器或高速緩沖存儲器中檢索指令;然后根據(jù)CPU固有的指令集架構(ISA)的定義將提取的指令數(shù)值解釋為CPU能夠識別的指令碼(運算碼和運算目標等);緊接著執(zhí)行CPU指令碼,根據(jù)指令碼對應的控制信號連接到各種能夠進行所需運算的其它部件并控制其作出相應動作,從而達到運算效果;最終將運算結果寫回到CPU內(nèi)部的寄存器(暫存器),CPU運算大致就是這個過程。

   CPU是計算機最重要的組件之一,提供指令控制、操作控制、時間控制、數(shù)據(jù)加工等功能,其中指令控制主要是指控制指令執(zhí)行的順序;操作控制主要是指根據(jù)對應的指令產(chǎn)生相應的操作控制信號發(fā)送給相應的部件并控制這些部件按指令的要求進行動作;時間控制主要是指對各種操作定制時間的的設定;數(shù)據(jù)加工是最重要的功能,主要是進行數(shù)據(jù)的運算處理。

   CPU的性能決定了計算機的性能,然而外部又受主板的牽制。CPU的字長、工作頻率、Cache容量、指令系統(tǒng)和邏輯結構決定了一個CPU的性能,其中字長表示CPU一次最多可同時傳送和處理的二進制數(shù)碼位數(shù),現(xiàn)在常見的有32位和64位;工作頻率(也稱主頻)就是CPU的處理數(shù)據(jù)的速度,單位為兆赫茲(MHz)或千兆赫茲(GHz),通常情況下頻率越高運算數(shù)據(jù)的速度越快,當然這只是一個大致概念,通常情況下CPU的實際運算速率還受CPU的流水線、總線等各方面性能的影響;緩存(Cache)容量也是CPU處理數(shù)據(jù)速率的重要指標,緩存主要用于臨時存儲指令或參與CPU運算的數(shù)據(jù),減少數(shù)據(jù)傳輸?shù)臅r間,現(xiàn)在的CPU大多設有2級緩存;CPU指令系統(tǒng)是CPU內(nèi)部基礎的與硬件電路相配合的指令系統(tǒng),也成為指令集,是CPU處理數(shù)據(jù)效率的重要衡量標準,指令集用于控制各個部件的協(xié)調工作。

   綜上所述,CPU是計算機的“大腦”,是控制其它組件協(xié)調工作的的部件,是計算機數(shù)據(jù)運算的場所。CPU內(nèi)部包含了其獨立的指令集,所有的程序都將被解析為該CPU對應的指令序列才能正常執(zhí)行,CPU必須具備數(shù)據(jù)通信,資源共享,分布式處理和提供系統(tǒng)可靠性等特點。理論上將CPU頻率越高、指令系統(tǒng)越高級、緩存越大,其處理數(shù)據(jù)的數(shù)度就越快,然而其必須要與對應的主板相兼容才可體系性能,否則將無法運行,即時可以運行則也是大材小用。

  • 內(nèi)存條

   內(nèi)存條也是計算機的重要組件之一,是計算機中最為主要的寄存器。內(nèi)存條在計算機中主要作用是緩沖數(shù)據(jù)和數(shù)據(jù)交換,主要負責硬盤等存儲器與CPU通信的臨時數(shù)據(jù)的傳輸或存儲。程序在運行時會將與程序相關的指令信息加載到內(nèi)存中,CPU直接與內(nèi)存進行通信,來提取指令信息并執(zhí)行,CPU在內(nèi)存中通過直接尋址的方式進行提取指令信息。舉個最簡單的例子就是我們寫入一個記事本文件時,如果沒有保存則其記事本中的字符信息都保存在內(nèi)存中,當保存后才會寫到硬盤上。

   常說的內(nèi)存大多數(shù)指的就是內(nèi)存條,但也不完全是。內(nèi)存是一種存儲單元,包括隨機存儲器(RAM)、只讀存儲器(ROM)和高速緩存(Cache)三部分。ROM(Read Only Memory)是只讀存儲器,可以說任意一個硬件都對應一個ROM存儲器,用于存儲硬件本身的信息或其相應的應用程序,其特點是斷電后信息不會丟失,最常見的就是BIOS芯片,不過現(xiàn)在的BIOS芯片都可以復寫,但是大多數(shù)還是稱為BIOS ROM;RAM(Random Access Memory)是隨機存儲器,它既可以寫入數(shù)據(jù)也可以讀取數(shù)據(jù),可以不斷的復寫數(shù)據(jù),其特點是斷電后存儲的數(shù)據(jù)會丟失。其內(nèi)存條就是將RAM集成在一個插卡上以減少RAM的空間,所以常說的內(nèi)存條就是指內(nèi)存。

   隨著科技的發(fā)展,現(xiàn)在的內(nèi)存條的存儲空間也越來越大,臨時存儲的數(shù)據(jù)也越來越多,所以擁有大內(nèi)存的計算機遠比小內(nèi)存的計算機運行要流暢,然而并不是越大的內(nèi)存空間就越好,其首先收到主板的牽制,其次還收到CPU總線的限制,如果CPU總線不及則又是大材小用,如果內(nèi)存空間不足則CPU無法最高效運作。

   綜上所述,內(nèi)存條也是計算機的必要組件之一,大內(nèi)存的內(nèi)存條往往會是計算機的程序運行更流暢,但是前提是必須與主板接口相兼容。

  • 顯卡

   顯卡全稱顯示接口卡,也稱顯示適配器、顯示器配置卡,是PC中一個重要的組件,主要用于將計算機系統(tǒng)輸出的信息進行轉換并向顯示器提供掃描信號。顯卡基本上包括GPU(Graphic Processing Unit,圖形處理器)、顯存兩個重要部件。

   GPU,即圖形處理器,相對應CPU的一個概念,在早期圖形處理部分主要由CPU來完成,而現(xiàn)在圖形處理變得越來越重要,所以必須一個核心的圖形處理器來完成這個工作,從而減少對CPU的依賴,所以就出現(xiàn)了GPU,主要用于將輸出信號進行幾何轉換和光照處理以及像素和色彩渲染等處理。顯存是顯示內(nèi)存的簡稱,其和內(nèi)存的作用基本一致,其主要用于暫時存儲顯示芯片要處理的數(shù)據(jù)和處理完畢的數(shù)據(jù),通常情況下顯存越大其圖形顯示的性能就越強。

   現(xiàn)在的顯卡基本分為獨立顯卡、集成顯卡兩大類,其中集顯就是將顯示芯片、顯存等集成在主板上;獨顯則是將顯示芯片、顯存等坐在一個插卡上,通過主板接口插槽插入運行,當然現(xiàn)在也有雙顯卡兼容工作的模式。需要注意的是顯卡也受主板的約束。

  • 聲卡

   聲卡,亦稱為音頻卡,是多媒體技術中的基本組成部分,實現(xiàn)聲波/數(shù)組信號相互轉換的一種組件。聲卡主要用于將原始聲音數(shù)據(jù)轉換為聲音信號并輸出到不同的聲響設備。聲卡主要包括聲音控制芯片、數(shù)字信號處理器等部件組成。

   聲音控制芯片主要將從輸入設備中獲取的聲音模擬信號通過模數(shù)轉換器,將聲波信號轉換為一串數(shù)字信號并存儲在儲存器中;數(shù)字信號處理器是一種聲音數(shù)字處理器,將信號交由該處理器處理減輕了CPU的工作負擔。

   現(xiàn)在聲卡基本分為板卡式、集成式和外置式三種接口類型。

  • 網(wǎng)卡

   網(wǎng)卡,全稱網(wǎng)絡接口板,又稱通信適配器或完了接口卡(NIC,Network Interface Card)。網(wǎng)卡是計算機進行網(wǎng)絡通信必備的硬件設備,它屬于網(wǎng)絡協(xié)議(OSI模型)中的鏈路層組件,主要用于網(wǎng)絡中電信號的匹配、傳輸、編碼和解碼等工作。

   網(wǎng)卡主要有處理器和存儲器兩大部件組成,其中存儲器,也就是網(wǎng)卡的ROM中保存這該網(wǎng)卡的基本信息,其中有標識該網(wǎng)卡唯一的MAC地址,是一個獨一無二的48位串行號(任何兩塊網(wǎng)卡的MAC地址都不會重復);處理器則用于對電信號進行傳輸、解碼以及編碼工作(在網(wǎng)絡通信中實際傳輸?shù)氖请娦盘?,由網(wǎng)卡負責將電信號進行編碼和解碼)。

   網(wǎng)卡在局域網(wǎng)之間的通信是通過電纜或雙絞線以串行傳輸方式進行的,而在計算機之間的通信則是通過計算機主板上的I/O總線以窗口并行傳輸方式進行的。所以網(wǎng)卡的一個重要功能就是進行串行/并行轉換。網(wǎng)卡一般具備數(shù)據(jù)的封裝和解封、鏈路管理以及編碼(曼徹斯特編碼)和移碼三大功能。

   現(xiàn)在的網(wǎng)卡基本分為有線網(wǎng)卡和無線網(wǎng)卡兩種,其中有線網(wǎng)卡則為標準通用化網(wǎng)卡設備,無線網(wǎng)卡主要是一個電信號接受和發(fā)送的設備,其標準主要使用數(shù)據(jù)傳輸速率來衡量。

   當然還有其他的設備,這里就不一一介紹了。

   說點題外話,個人認為計算機的主板、CPU和內(nèi)存比較重要,畢竟內(nèi)存和CPU寄存于主板之上,盲目的追求高內(nèi)存和CPU并不一定能夠使其發(fā)揮到更好的工作效果,但也不排除高內(nèi)存和CPU的確能夠是計算機高效工作。追求高配是現(xiàn)在的潮流,追求之前一定得讓主板所能承受才可。

2.3.軟件系統(tǒng)組成

   對于計算機的軟件系統(tǒng),這里不想多說,做IT的你不知道軟件,那也甭做了,還是回家種地吧。話說計算機的軟件系統(tǒng)可以分為系統(tǒng)程序和應用程序兩大類。

   系統(tǒng)程序是為了簡化程序設計和使用方法而出現(xiàn)的一類高效的軟件程序,包括服務性程序、語言處理程序、操作系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)。應用程序是用戶利用計算機來解決問題而編制的程序。

   軟件(Software)是計算機系統(tǒng)中使用的各種程序,而軟件系統(tǒng)是指揮整個計算機硬件系統(tǒng)工作的程序集合。在計算機中的程序劃分為微程序設計級、機器語言級、操作系統(tǒng)級、匯編語言級和高級語言級五大級別。微程序設計級別是一種純硬件級別的程序設計,一般就是定義其硬件的指令系統(tǒng),由機器硬件直接執(zhí)行。機器語言級別也是硬件級別的程序設計,一般是借用微程序的指令系統(tǒng)實現(xiàn)程序設計,由微程序去執(zhí)行的。操作系統(tǒng)級別屬于一種軟硬件混合級別的程序設計,一般涉及軟硬件指令的引用,主要在操作系統(tǒng)的控制下去調用軟硬件資源協(xié)調工作,實際底層是一般機器去執(zhí)行的。匯編語言級別的程序一般使用匯編語言編寫,由匯編程序的支持和執(zhí)行。高級語言級別的程序采用的是高級程序設計語言編寫,一般為一種純粹的軟件程序,由對應程序設計語言的編譯和執(zhí)行程序支持和執(zhí)行,這一級別的程序也稱為用戶程序?,F(xiàn)在我們所做的程序大多都是建立在操作系統(tǒng)級別之上的匯編語言程序和高級語言程序。

   然而隨之技術的發(fā)展,現(xiàn)在的軟硬件的界限也模糊不清了,隨之只讀存儲器的出現(xiàn),現(xiàn)下大多數(shù)的硬件設備都是集成式(也稱嵌入式)的,其內(nèi)部都包含一個只讀存儲區(qū),存儲著其對應的固有的軟件程序,這樣的部件我也稱之為固件。

   談到軟件,就不得不說程序設計語言,何為程序設計語言?程序設計語言就是使用約定的符號編寫計算機程序的語言,簡單的說是用來制作計算機軟件程序的語言,例如匯編、C、Java、PHP等等都是程序設計語言?,F(xiàn)下的程序設計語言可分為機器語言、匯編語言和高級語言三大類。機器語言是一種用二進制形式表示并且能夠直接被計算機硬件識別和執(zhí)行的語言,機器語言也機器本身結構有關,不同的機器其機器語言也不同,使用機器語言編寫的程序成為i額機器語言程序。匯編語言是一種將機器語言符號化的語言,它使用字母、符號和數(shù)字來代替數(shù)字編碼的機器指令,匯編語言的語句與機器指令一一對應,所以不同的機器也具有不同的匯編語言,用匯編語言編寫的程序稱為匯編語言程序;例如Nasm、Masm、Tasm等都屬于匯編語言程序。高級語言是一種與計算機結構不相關的,表達方式接近于被描述問題的程序設計語言,高級語言程序在計算機中需要利用其對應的編譯程序或解釋執(zhí)行程序將其翻譯為對應的機器語言程序才可以執(zhí)行;例如Basic、Fortran、Pascal、C語言、Delphi、C++、 Java等都屬于高級語言程序。然而高級語言又可以劃分為面向過程式語言、面向對象式語言等。

計算機存儲系統(tǒng)

1.存儲器的分類

   存儲器是計算機的基本部件之一,其按照不同的衡量標準可以劃分為不同的類別。最常見就是根據(jù)其本質讀寫能力劃分為只讀存儲器(ROM,Read-Only Memory)和隨機讀寫存儲器(RAM,Random Access Memory)。只讀存儲器中存儲的內(nèi)容是不可變的,只能讀取數(shù)據(jù)而不能寫入數(shù)據(jù),所以常用于保存一些硬件設備的基本信息,其存儲的數(shù)據(jù)是永久的,斷電后可以保留;隨機讀寫存儲器中存儲的內(nèi)容是可變的,既可以寫入數(shù)據(jù)也可以讀取數(shù)據(jù),其存儲的數(shù)據(jù)并不是永久的,斷電后則就會丟失。隨之ROM的發(fā)展可分為掩模式ROM(不可修改)、可編程ROM(PROM)、可擦除PROM(EPROM)、電可擦除PROM(EEPROM)和閃存(Flash Memory),現(xiàn)在所用ROM存儲器基本上都支持重新寫入。RAM可以非為SRAM(靜態(tài)RAM)和DRAM(動態(tài)RAM)兩種類型。

   存儲器根據(jù)在計算機系統(tǒng)中的作用和角色則分為寄存器(控制存儲器)、高速緩沖存儲器、內(nèi)存(主存儲器)、磁盤存儲器(輔助存儲器)等。現(xiàn)今的通用計算機都具備寄存器、緩沖存儲器、內(nèi)存和磁盤這四個存儲器設備,而且其訪問速度依次遞減,但是存儲容量則依次遞增。下面逐一介紹。

  • 寄存器

   寄存器,也稱為控制存儲器,用于臨時存儲參與運算數(shù)據(jù),常集成于CPU(中央處理器)中,所以其存取數(shù)據(jù)速度快,其速度是所有存儲器中速度最快的。為什么要集成與CPU中?因為CPU包含運算器和控制器,其是處理數(shù)據(jù)的中心,如果有一個在讀取數(shù)據(jù)是從其他管理的元件中傳入,必定存在傳輸延遲問題,同時還增加了對其他元件的依賴程度和負載能力,所以將其寄存于CPU中作為臨時數(shù)據(jù)的存取空間。

  • 高速緩沖存儲器

   高速緩沖存儲器,從名字上可以得知其主要是起到緩沖數(shù)據(jù)的作用。由于寄存器容量有限,一個CPU運算的周期可能需要從較大的內(nèi)存存儲器中獲取更多的數(shù)據(jù)信息,增大了數(shù)據(jù)傳輸?shù)臅r間,這便限制了高速計算,為了解決這個問題,所以使用一個高速緩沖存儲器來加速CPU和內(nèi)存之間的數(shù)據(jù)傳輸。高速緩存存儲器通常也集成于CPU中,用于臨時存儲即將參與運算的數(shù)據(jù),其容量較小但是存取數(shù)據(jù)速度也很快。

  • 內(nèi)存

   內(nèi)存,也稱為主存儲器,用于存儲運行的程序和數(shù)據(jù),其存取數(shù)據(jù)的速度較快,存儲數(shù)據(jù)的容量較大。內(nèi)存是運行程序和資源數(shù)據(jù)與CPU進行交互的主要中間介質,也就是說程序啟動時先將程序數(shù)據(jù)送往內(nèi)存中,然后由CPU去一條一條數(shù)據(jù)的執(zhí)行。由于寄存器和高速緩沖存儲器都集成于CPU中,而內(nèi)存是獨立于CPU的,所以內(nèi)存的性能會直接影響計算機的性能。這也是大家都最求高內(nèi)存的原因。

   內(nèi)存的衡量標準主要有存儲容量、存取時間、存儲周期和存儲器帶寬四個指標。其中存儲容量是一個存儲器中可以容納的存儲單元總數(shù),通常以字數(shù)或字節(jié)數(shù)作為單位;存取時間則是啟動到完成一次存儲器操作所經(jīng)歷的時間,通常以納秒(ns)為單位;存儲周期則是連續(xù)啟動連詞操作所需間隔的最小時間,通常以納秒(ns)為單位;存儲器帶寬表示單位時間內(nèi)存儲器所存儲的信息量大小,通常以位/秒或字節(jié)/秒為單位。后三者是其存取速度的主要衡量標準。

  • 磁盤存儲器

   磁盤存儲器,屬于輔助存儲器,簡稱輔存,輔存包括磁盤、U盤、光盤等外部存儲器,而磁盤存儲器是最為常見的輔存設備。輔存的最大特點是存儲容量大。

   隨著科技的發(fā)展,現(xiàn)在還存在另一種存儲器——虛擬存儲器。虛擬存儲器并發(fā)實際存在的物理存儲器,而是一種容量足夠大的邏輯模型,指借助磁盤等輔助存儲器來擴大主存容量的一種方式。其實可以將其理解為一種主存到外存層次上的緩沖存儲器。

2.存儲器的衡量單位
2.1.數(shù)據(jù)存儲單位

   眾所周知,計算機使用的是二進制數(shù)制系統(tǒng)。存儲元是計算機中最小存儲數(shù)據(jù)的介質,一個存儲元存儲一個二進制數(shù)碼(0或1);多個存儲單元組成一個存儲單元;多個存儲單元組成一個存儲器。

   說到存儲器,不得不說的是存儲器容量的問題。常見的“KB”或“K”、“MB”或“M”、“GB”或“G”、“TB”或“T”,這些都是存儲器容量的衡量單位。存儲器的容量其實是指存儲器所有存儲單元的總數(shù),規(guī)定8位(8個二進制碼)為1字節(jié),即8bit=1byte=1B(至于為什么這樣規(guī)定?筆者也沒搞清楚)。

   到底什么是位?位(bit)是計算機中最小的數(shù)據(jù)傳輸單位,其實就是一個二進制數(shù)碼(0或1),一個二進制序列中的每一個0或1都成為一個位,按照習慣,通常稱右邊為低位,左邊為高位。

   那什么又是字節(jié)?字節(jié)(byte)是計算機中最小的數(shù)據(jù)存儲單位,規(guī)定一個字節(jié)由8位組成,即一個字節(jié)就是8個0或1組成的二進制序列。隨著計算機的發(fā)展,其存儲容量越來越大,使用字節(jié)進行衡量就不太合理了。所以出現(xiàn)了千字節(jié)(KB)、兆字節(jié)(MB)、吉字節(jié)(GB)、太字節(jié)(TB)等等更大了衡量單位。

   從十進制的角度去考慮,上述的單位都相差千倍,在二進制中千倍可以使用210(1024)表示(因為其最接近1000)。所以標準情況下其計算機存儲單位換算過程如下:

1B=1byte=8bit=8b

1KB=1024B=1024byte

1MB=1024KB

1GB=1024MB

1TB=1024GB

……

   上述只是標準情況下的換算方式,而在現(xiàn)實中,大多數(shù)硬盤中還是使用10的3次方即1000作為轉換標準進行硬盤設計制造。

2.2.數(shù)據(jù)傳輸單位

   上面也提到,“位”是計算機中數(shù)據(jù)傳輸?shù)淖钚挝?。然而計算機在實際工作中,如果使用位進行數(shù)據(jù)傳輸則效率極其低,所以實際中CPU向存儲器送入或從存儲器取出信息時,通常使用用“字節(jié)”或“字”等較大的信息單元來工作。

   字節(jié)(byte或B)也就是上面講到的,一般由8位二進制數(shù)碼組成,也就是說使用字節(jié)進行傳輸數(shù)據(jù)則一次可以傳輸8位信息,然而這樣還是不能滿足當前的運算要求,因此就出現(xiàn)了字。

   字(word或W)是計算機中最常用的數(shù)據(jù)傳輸單位,字由若干個字節(jié)組成,是計算機一次處理或運算的一串二進制數(shù)碼,相同的字在不同的位置其含義也不同,例如送外控制器的字是指令,而送往運算器的字則是運算數(shù)。字的長度用位數(shù)來表示,通常把組成一個字的二進制位數(shù)叫做字長,我們常說的8位、16位、32位和64位CPU則就是指的CPU字長,也就是CPU一次能夠處理(傳輸)的二進制數(shù)碼位數(shù)。字長可以用于衡量一個CPU的能力,字長越大其性能則越高,字長可分為固定和可變兩種類型。常說的32位、64位操作系統(tǒng)則是對應于計算機處理器而言的,它們都是低向兼容,但是如果不匹配則其運行性能會大打折扣,比如說64位的CPU可以兼容32位的系統(tǒng),但是其效果不能達到最佳,而32位則不能兼容64位的系統(tǒng)。

中央處理器和指令系統(tǒng)

1.指令系統(tǒng)

   上面一再提到指令,到底何為指令?指令就是一種指揮相應動作的命令,在計算機中指令是一種控制信號,用來控制計算機各個元件的相應操作。計算機的電子元件的工作都受到指令的支配。其是計算機中最小的執(zhí)行單元,所有的程序都是由一系列相應的指令組成的,計算機的指令可劃分為微指令、機器指令和宏指令三類,微指令是微程序的命令,屬于硬件級別;宏指令則是有若干條機器指令組成的軟件指令,屬于軟件級別;機器指令其介于微指令和宏指令之間,每一條指令可以完成一個獨立的算術運算或邏輯運算,我們常說的指令就是指機器指令。

   計算機中所有機器指令的集合組成一個指令系統(tǒng),其是計算機性能的重要衡量標準,不僅直接影響機器的硬件結構,也直接影響到其軟件系統(tǒng),影響其機器本身的適用范圍。計算機的指令系統(tǒng)一般包括數(shù)據(jù)傳送指令、算術運算指令、邏輯運算指令、程序控制指令、輸入輸出指令、字符串處理指令、特權指令以及狀態(tài)寄存器置位、復位指令、測試指令、暫停指令,空操作指令等其他指令。從指令系統(tǒng)來講可以將計算機非為復雜指令系統(tǒng)計算機(CISC)和精簡指令系統(tǒng)計算機(RISC)兩種,復雜指令系統(tǒng)的指令多達幾百條,大多數(shù)情況下只有20%的指令會經(jīng)常使用,而精簡指令系統(tǒng)就是這20%的指令組成的。

1.1.指令和尋址

   指令,也稱機器指令或指令字,是計算機中一種控制元件執(zhí)行動作的命令,其實質是一種二進制序列代碼,由操作碼字段和地址碼字段組成。其中操作碼字段表示指令的操作特性和功能,地址碼字段指定參與操作的操作數(shù)據(jù)的地址。

   指令系統(tǒng)中的每一條指令都有一個操作碼,表示該指令應該進行什么性質的操作,也就是說每一種指令對應一種固定編碼的操作碼。操作碼的字段位數(shù)一般受到計算機指令系統(tǒng)的約束,一般8條指令的指令系統(tǒng),3位操作碼則足夠;32條指令的指令系統(tǒng),則需要5位操作碼。

   每一條指令不僅包括操作碼,而且還操作地址碼,地址碼用于指定操作數(shù)的存儲位置。根據(jù)操作數(shù)的個數(shù)可以將指令分為若干個操作數(shù)指令或若干個地址指令;一般的指令都存儲被操作數(shù)、操作數(shù)和操作結果三種數(shù)據(jù),所以稱為三地址指令,當然也存在二地址指令、一地址指令和零地址指令。

   在計算機的指令系統(tǒng)中,一般指令的操作碼字段和地址碼字段的位數(shù)(長度)是固定的,而指令的位數(shù)(指令字長度)則分為固定和可變兩種。固定字長指令系統(tǒng)中,各種指令字長度都是相等的;可變字長指令系統(tǒng)中,各種指令字長度隨指功能而異。指令字長和機器字長大多會混為一談,指令字長度表示一條指令中所包含的二進制數(shù)碼位數(shù);機器字長表示計算機一次直接處理二進制數(shù)碼的位數(shù),其決定了計算機的運算精度。

   上面提到操作數(shù)地址,那么何為地址?來看下面的介紹。

   操作數(shù)地址是指操作數(shù)存儲在存儲器存儲單元時存儲單元的編號(編碼,一種二進制數(shù)碼);指令在存儲器中的地址則指指令存儲在存儲單元是該存儲單元的編號。在存儲器中,操作數(shù)或指令字寫入或讀取的方式有地址指定方式、相聯(lián)存儲方式和堆棧存儲方式三種形式。大多數(shù)的機器采用地址指定方式來表述操作數(shù)或指令的地址,這種方式稱為“尋址方式”,常說的尋址是指在內(nèi)存中進行尋址。尋找方式分為指令尋址方式和數(shù)據(jù)尋址方式兩種。

   指令尋址方式包括順序尋址和跳躍尋址兩種形式,順序尋址就是按程序指令順序一條一條指令的執(zhí)行,首先執(zhí)行第一條,然后第二條,接著第三條……,通常情況下處理器中存儲一個程序技計數(shù)器(指令指針寄存器),用來標識下一條指令的序號(模擬序號),根據(jù)這個序號可以指定執(zhí)行下一條指令的位置;當程序指令轉移執(zhí)行時則需要使用跳躍尋址方式,此時當前指令會給出下一條指令的序號(并不是由程序計算器給出,但是其指會改變),程序跳躍后,然后在按新的指令地址順序執(zhí)行。

   指令中操作數(shù)的地址碼一般有形式地址和尋址方式特制位組合形成,也就是說,指令中的地址碼并不是操作數(shù)的真實有效地址,因此,操作數(shù)的尋址過程就是將操作數(shù)的形式地址轉換為操作數(shù)的有效地址的過程。操作數(shù)的有效地址是將操作數(shù)的形式地址使用指定的尋址方式進行轉換得來的,其中操作數(shù)的形式地址是一種二進制數(shù)碼,尋址方式包括隱含尋址、立即尋址、直接尋址、間接尋址、寄存器尋址、相對尋址、基址尋址、變址尋址、塊尋址和段尋址等多種方式。隱含尋址就是指令中不明顯的給出而是隱含這操作數(shù)的地址;立即尋址表示指令中的地址字段指定的是操作數(shù)本身,而不是其地址;直接尋址就是在指令的地址字段中直接之處操作數(shù)在內(nèi)存中的地址;間接尋址就是指令中的地址字段給出的是形式地址,而是操作數(shù)地址的指示器,然后由指示器指定其真是地址;寄存器尋找是指操作數(shù)存儲在CPU寄存器中,指令給出的是數(shù)據(jù)存儲的寄存器編號,還衍生有寄存器間接尋址方式,其指令給出的是輸出存儲在內(nèi)存中的地址;相對尋址是相對當前指令地址而言的,通過偏移量來尋找操作數(shù)地址;基址尋址是將CPU中基址寄存器的內(nèi)容加上指令格式中的形式地址而形成的操作數(shù)的有效地址的方式;變址尋找是把CPU中某個變址寄存器的內(nèi)容與偏移量相加來形成操作數(shù)有效地址的方式;塊尋址通常指定數(shù)據(jù)庫的起始地址和數(shù)據(jù)庫的長度,然后尋找一個整體,常用于輸入輸出指令中;段尋址是將存儲器按指定大小劃分為多個段,然后采用基址尋址方式進行尋址,常用在微型機中。(這里只是簡單介紹一下,具體的過于復雜,所以不具體說明,可以自行查找資料理解)

   通常CPU中還存在一種能夠存儲和讀取數(shù)據(jù)的暫時存儲單元——堆棧(或許你看到它并不陌生,是兩種數(shù)據(jù)結構)。堆棧是一種能存儲和取出數(shù)據(jù)的暫時存儲單元,分為串聯(lián)堆棧和存儲器堆棧兩種形式。很多計算機把存儲器的一部分用作堆棧,堆棧與其他形式存儲器的差別在于其對數(shù)據(jù)的存取方法和尋址方法,其堆棧的主要存儲特點是數(shù)據(jù)先進后出。

1.2.指令與編程語言的關系

   從宏觀角度來將可以將當下的程序設計語言劃分為低級語言和高級語言兩種,低級語言大多直接與硬件指令打交道,而高級語言則與硬件本身關聯(lián)并不緊密。

   低級語言可分為機器語言(二進制語言)和匯編語言(符號語言),這兩種語言是面向機器的語言,和具體機器的指令系統(tǒng)密切相關,機器語言使用指令代碼編寫程序,而匯編語言使用指令助記符號來編寫程序。由于低級語言效率地下,而且多被機器限定,所以就誕生了高級語言。

   相對低級語言而言,高級程序設計語言擺脫了對硬件設備機器指令的束縛,其自成體系,常見的有C、C++、Java等。但是由于計算機只能識別并執(zhí)行二進制的機器指令,所以高級語言編寫的程序大多需要借助匯編程序或對應的編譯程序將其本身翻譯成二進制的機器指令。所以高級語言入門快、適用度高,但是其效率相對而低。

2.中央處理器——CPU
2.1.CPU的構成介紹

   程序是一個指令序列,這個序列明確告訴計算機應該執(zhí)行什么操作、應該在什么地方找到用來操作的數(shù)據(jù),一旦把程序裝載入內(nèi)存中,就可以有計算機自動完成取出指令和執(zhí)行指令的任務,而用來完成這項工作的計算機部件稱為中央處理器,簡稱為CPU。

   CPU是計算機中最重要的部件之一,其必須有指令控制、操作控制、時間控制和數(shù)據(jù)加工處理四個級別功能。指令控制就是程序的順序控制;操作控制就是指一條指令的功能往往是由若干個操作信號組合來實現(xiàn)的;時間控制是對各種操作實施時間上的定時;數(shù)據(jù)加工就是對數(shù)據(jù)進行算術運算或邏輯運算。

   CPU主要有運算器、cache區(qū)和控制器三大部分組成。其中控制器由程序計數(shù)器、指令寄存器、指令譯碼器、時序產(chǎn)生器和操作控制器組成;是計算機的命令指揮中心,可以從內(nèi)存中取出一條指令并指出下一條指令的內(nèi)存地址,可以對指令進行譯碼和測試并產(chǎn)生相應的操作控制信號支配元件完成動作,同時指揮和控制CPU、內(nèi)存和輸入/輸出設備之間數(shù)據(jù)流向。運算器由算術邏輯單元(ALU)、累加寄存器、數(shù)據(jù)緩沖寄存器和狀態(tài)條件寄存器組成;是計算機正真執(zhí)行數(shù)據(jù)加工處理的部件,受控制器支配,可以執(zhí)行所有的算術運算和邏輯運算,并進行邏輯測試等。下面是CPU結構模擬圖:

程序員應該了解的計算機知識(一)——基礎理論

從圖上可以看出CPU中有數(shù)據(jù)緩沖寄存器(DR)、指令寄存器(IR)、程序計數(shù)器(PC)、地址寄存器(AR)、累加寄存器(AC)和狀態(tài)條件寄存器(PSW)六類主要寄存器(寄存器就是臨時存取器,是一種臨時存儲數(shù)據(jù)的空間)。

  • 數(shù)據(jù)緩沖寄存器(DR)

   數(shù)據(jù)緩沖寄存器用來暫時存放從內(nèi)存儲器讀取的一條指令或一個數(shù)據(jù)字或向內(nèi)存存入一條指令或一個數(shù)據(jù)字。其作為CPU和內(nèi)存、外部設備之間信息傳送的中轉站,可以補償CPU和內(nèi)存、外圍設備之間在操作數(shù)度上的差別。有時也作為操作數(shù)寄存器使用。

  • 指令寄存器(IR)

   指令寄存器用于保存當前正在執(zhí)行的一條指令數(shù)據(jù)。當執(zhí)行一條指令時,首先把其從內(nèi)存讀取到緩沖寄存器中,然后在送往指令寄存器,由指令譯碼器對指令的操作碼字段進行譯碼和測試后,向操作控制器發(fā)出具體操作的特定信號。

  • 程序計數(shù)器(PC)

   程序計算器也稱為指令計算器,其主要用于記錄下一條指令的內(nèi)存地址。在程序開始執(zhí)行前,必須將它的起始地址即第一條指令所在的內(nèi)存單元地址送人程序計數(shù)器,當執(zhí)行這條指令時,CPU會自動修改程序計數(shù)器的內(nèi)容為下一條指令的地址。由于大多數(shù)指令都是順序執(zhí)行的,所以修改過程通常只是簡單的加1。

  • 地址寄存器(AR)

   地址寄存器用來保存當前CPU所訪問的內(nèi)存單元的地址。由于內(nèi)存和CPU之間存儲操作數(shù)度上的差別,所以必須使用地址寄存器來暫時保存地址信息,直到內(nèi)存的讀/寫操作完成為止。當CPU和內(nèi)存進行信息交換,即CPU向內(nèi)存存/取數(shù)據(jù)或CPU從內(nèi)存中讀取指令時,都要使用到地址寄存器和數(shù)據(jù)緩沖寄存器。

  • 累加寄存器(AC)

   累加寄存器簡稱累加器,其是一個通用的寄存器。主要用于當運算器的算術邏輯單元執(zhí)行算術或邏輯運算時,為算術邏輯單元提供一個工作區(qū);其可以暫時存放算術邏輯單元的運算結構信息。

  • 狀態(tài)條件寄存器(PSW)

   狀態(tài)條件寄存器用于保存由算術指令和邏輯指令運行或測試的結果對應的各種條件碼內(nèi)容,例如運算結果進位標志(C)、運算結果溢出標志(V)、運算結果為零標志(Z)、運算結果為負標志(N)等等。通常這些標志分別由移位觸發(fā)器保存。同時狀態(tài)條件寄存器還保存中斷和系統(tǒng)工作狀態(tài)等信息,以便使CPU和系統(tǒng)能及時了解機器運行狀態(tài)和程序運行狀態(tài)。狀態(tài)條件寄存器是一個由各種狀態(tài)條件標志拼湊而成的寄存器。

   信息從什么地方開始,中間經(jīng)過哪個寄存器或多路開關,最后傳送到哪個寄存器,都要加以控制。在各寄存器之間建立數(shù)據(jù)通路的任務,是由稱為操作控制器的部件來完成的。操作控制器的功能,就是根據(jù)指令操作碼和時序信號,產(chǎn)生各種操作控制信號,以便正確地建立數(shù)據(jù)通路,從而完成取指令和執(zhí)行指令的控制。

2.2.CPU的工作過程

   計算機所以能夠自動工作,是因為CPU能從存放程序的內(nèi)存中取出一條指令并執(zhí)行這條指令;緊接著又是取指令,執(zhí)行指令……如此構成一個封閉的循環(huán),當遇到“停止”指令時停止工作并退出。

   CPU的工作過程其實是程序的執(zhí)行過程,如今的計算機都是基于“程序存儲”的概念設計制造的,程序存儲就是將程序通過輸入設備傳送到存儲器保存起來的過程。而計算機只能識別二進制數(shù)碼,CPU只能識別機器指令,所以我們通常編寫的程序或安裝的其他程序都是在特定環(huán)境或系統(tǒng)下編譯之后的程序,然而只有在其特定的執(zhí)行環(huán)境下才能被解析為指令加載到內(nèi)存中,所以說程序就是一個指令序列。

   當啟動一個程序的時候,會將這個程序對應的資源和本身指令序列輸入到內(nèi)存中,然后CPU從中檢索出入口指令,并有CPU解碼為指定的CPU控制信號并支配其他硬件設備完成,執(zhí)行過程也就是數(shù)據(jù)運算的過程,邏輯運算控制其執(zhí)行其他指令的順序,算術運算計算執(zhí)行指令的結果,然后將運算的結果寫回到內(nèi)存中以備繼續(xù)使用,依次循序工作,直到所有指令執(zhí)行完畢。上面的過程可以使用以下示意圖來表示:

程序員應該了解的計算機知識(一)——基礎理論

上面的示意圖,用于描述計算機CPU執(zhí)行程序指令的基本過程。

   計算機執(zhí)行程序的指令(指令由操作碼和地址碼組成,操作碼表示運算性質,地址碼表示操作數(shù)在存儲器中的位置)序列是逐條執(zhí)行的,每執(zhí)行一條指令基本上可分為四個步驟:一、取出指令,從存儲器(主要指內(nèi)存)某個地址中取出要執(zhí)行的的指令送到CPU內(nèi)部的指令寄存器暫存;二、分析指令,把保存在指令寄存器中的指令送到指令譯碼器,譯出該指令對應的微操作;三、執(zhí)行指令,根據(jù)指令譯碼,向各個部件發(fā)送相應的控制信號,完成指令規(guī)定的各種操作;四、為執(zhí)行系一條指令做好準備,取出下一條指令地址循環(huán)上面步驟。

2.3.CPU字長與操作系統(tǒng)

   CPU字長是衡量CPU性能的一個重要標準,CPU字長表示CPU一次能夠傳輸?shù)亩M制數(shù)碼位數(shù),現(xiàn)今出現(xiàn)最多的有8位、16位、32位和64位的CPU,其位數(shù)越高則其運算精度越高、運算速度越快。8位CPU和16位CPU常用于微處理設備,例如手持設備等;32位和64位CPU常用于PC等。

   或許會發(fā)現(xiàn)一個規(guī)律,CPU的字長都是8的倍數(shù),可以用2的N次方表示,為什么?我們知道計算機中規(guī)定8位為一字節(jié),由于CPU出現(xiàn)了寄存器和緩沖區(qū),所以通常情況下以字節(jié)或更大的字作為信息處理的單位進行傳輸。而一個字由多個字節(jié)組成,所以CPU的字長通常為8的倍數(shù)。

   數(shù)據(jù)或指令在內(nèi)存中通常使用內(nèi)存地址來描述,地址就是一種編號,即其是有0和1兩位數(shù)碼組合而成的編號。對于一個N位的CPU來講,其每一條指令可以包含N位二進制數(shù)碼,即N個0和1進行組合而成的數(shù)碼,那么從排列組合的方式上看,其最多可以有2N個組合結果,也即是說一個n位的cpu最多可以在內(nèi)存中讀取2n個內(nèi)存地址。這種cpu對內(nèi)存尋址的能力稱為尋址空間,即對應cpu來講內(nèi)存的實際使用問題。

   對于一個32位的CPU來講,其最大的內(nèi)存尋址空間為232=4294967296個,為了更準確的描述其空間大小,使用byte(字節(jié))來表示其存儲空間大小。也就是說32位CPU的尋址空間為4294967296byte=4G,64位的CPU尋址空間可高達17TB,這個內(nèi)存空間稱為物理內(nèi)存,然后對實質的操作系統(tǒng)而言,比如Windows XP系統(tǒng)支持的實際尋址空間為2.5G~3.5G之間。

   上面也提到了操作系統(tǒng),或許你也會發(fā)現(xiàn),Windows Vista之后發(fā)布的操作系統(tǒng)都提供了32位和64位兩個版本,其主要是針對32位和64位CPU而定制的。32位的CPU一次能夠提取4個字節(jié)的數(shù)據(jù),64位的CPU一次能夠提取8個字節(jié)的數(shù)據(jù)。32位的操作系統(tǒng)或程序可以在32位的CPU中運行,也可以在64位的CPU中運行,但是效率不能達到最高;而64位的操作系統(tǒng)或程序只能在64位的CPU中運行,其設計可以向下兼容。

計算機工作原理

1.用計算機的工作過程

   通過上面的介紹,對計算機的基本工作原理應該有一定的印象。計算機主要包括運算器(CPU)、存儲器(內(nèi)存)、控制器(CPU)、輸入設備、輸出設備五個部分,因此計算機的工作離不開主板、CPU、內(nèi)存三個硬件環(huán)境,同時為了能夠見證計算機的工作效果也必須存在輸入/輸入設備。下面就這五個基本部分來看一下計算機的基本工作原理,如圖:

程序員應該了解的計算機知識(一)——基礎理論

圖中“紅線”表示數(shù)據(jù)流向,“黑線”表示控制流向。CPU控制器控制輸入設備、輸出設備以及內(nèi)存使用,程序被輸入設備以指令序列的方式輸入到內(nèi)存中,CPU控制器從內(nèi)存中讀取一條條指令,并根據(jù)指令的譯碼發(fā)出一條條控制信號給運算器和存儲器來完成規(guī)定的操作功能,然后CPU控制器控制其以適當?shù)姆绞酵ㄟ^輸出設備輸出最終操作結果。我們可以通過下面一個模擬圖更清楚的理解這個過程,如圖:

程序員應該了解的計算機知識(一)——基礎理論

至于CPU內(nèi)部的工作過程可以參考《2.2 CPU的工作過程》。

   提示一個小常識:計算機的主板上存在一個微弱電源維持BIOS芯片內(nèi)BIOS系統(tǒng)(包括系統(tǒng)時間、引導系統(tǒng)、內(nèi)存數(shù)據(jù)等)的正常運作。當主板接通外部電源的時候,BIOS系統(tǒng)會檢查所有硬件環(huán)境是否存在或正確安裝,如果通過則正常啟動引導系統(tǒng),否則會作出相應的警告提示。只有所有的硬件設備完善才能是計算機正常工作。

2.通用計算機中存儲器工作過程

   現(xiàn)下的計算機存儲系統(tǒng)包括磁盤、內(nèi)存、緩存區(qū)和寄存器等四大類型,當然其緩存又可分為多個級別,例如一級緩存、二級緩存等。下面來看一下其如何協(xié)調工作的。

   程序存儲在磁盤中,當打開程序化,有操作系統(tǒng)平臺或對應的執(zhí)行平臺將程序指令化,轉換為一系列指令序列并送往內(nèi)存中,如果程序過大則會借助虛擬內(nèi)存(虛擬存儲器)來暫時寄存部分指令,內(nèi)存加載部分指令;然后將入口指令送往CPU的寄存器,由CPU運算器和控制器執(zhí)行指令,如果需要讀取數(shù)據(jù),則從內(nèi)存或緩存中取出數(shù)據(jù),如果需要一條指令,則從內(nèi)存或緩存總取出指令,在送往CPU進行運算或執(zhí)行;一條指令執(zhí)行完成后將結果暫時寫入到寄存器或CPU緩存或內(nèi)存中,接著執(zhí)行程序的下一條指令,從內(nèi)存或緩存中讀取下一條指令送往CPU中進行指令,依次循環(huán),即可完成一個程序的執(zhí)行,當遇到停止指令是則停止執(zhí)行并退出程序。

總結

   這篇文章或許講的比較亂,甚至有些東西我自己都還沒有搞清楚,一些名詞都是自己理解并給出釋義,或許并沒有給出明確的解釋,希望讀者見諒,本文大部分內(nèi)容來自互聯(lián)網(wǎng)資料的整理。雖然我們搞軟件的并不一定需要深入研究這些東西,但是了解一下總是有益無害,而且這些都是基礎理論知識,對軟件的學習多多少少都有一定的幫助。

   如果需要了解的更深入,則可以自行查閱資料,并整理分享給大家。

分享名稱:程序員應該了解的計算機知識(一)——基礎理論
URL分享:http://bm7419.com/article40/jdceeo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供標簽優(yōu)化、網(wǎng)站改版網(wǎng)站設計、網(wǎng)站導航手機網(wǎng)站建設、虛擬主機

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)