電腦群組件及作業系統基礎知識

來源:互聯網
上載者:User
一、電腦群組件簡介

       現代電腦裝置主要有五個部分組成:運算器、控制器、儲存空間、輸入裝置、輸出裝置。CPU是中央處理器,是控制和運算器,是一台電腦的運算核心和控制核心。儲存空間的主要功能是儲存程式和各種。輸入輸出裝置我們一般統稱I/O,用於串連電腦內外部。而這些組件的串連則需要匯流排和主板來完成。
1、CPU

       中央處理器(CPU,Central Processing Unit)是一塊超大規模的整合電路,是一台電腦的運算核心和控制核心。它的功能主要是解釋電腦指令以及處理電腦軟體中的資料。CPU從記憶體或cpu緩衝中取出指令,放入指令寄存器,並對指令解碼。它把指令分解成一系列的微操作,然後發出各種控制命令,執行微操作系列,從而完成一條指令的執行。

1)主頻

主頻也叫時鐘頻率,用來表示CPU的運算、處理資料的速度。通常,主頻越高,CPU處理資料的速度就越快。

問:主頻越高速度一定越快嗎。

答:假設某個CPU在一個刻度內執行一條運算指令,那麼當CPU運行在2GHz主頻時,將比它運行在1GHz主頻時速度快一倍。因為2GHz的刻度比1GHz的刻度佔用時間減少了一半,也就是工作在2GHz主頻的CPU執行一條運算指令所需時間比工作在1GHz主頻時的時間縮短了一半,自然運算速度也就快了一倍,所以目前很多人對於超頻樂此不疲。但是使用主頻的高低來衡量處理器的效能,需要在相同的條件下相互比較,比如核心與線程數量,核心工藝(指令集),核心緩衝等因素對於處理器來說也非常重要,我們不能拿一個過去的高主頻的落後處理器和現在先進的低主頻處理器相比較,效能方面顯然是現在的處理器效能要好。

2)CPU緩衝

CPU緩衝位於CPU與記憶體之間的臨時儲存空間,它的容量比記憶體小但交換速度快。

CPU緩衝的出現主要是為瞭解決CPU運算速度與記憶體讀寫速度不匹配的矛盾,因為CPU運算速度要比記憶體讀寫速度快很多,這樣會使CPU花費很長時間等待資料到來或把資料寫入記憶體。在Cache中的資料是記憶體中的一小部分,但這一小部分是短時間內CPU即將訪問的,當CPU調用大量資料時,就可避開記憶體直接從Cache中調用,從而加快讀取速度。由此可見,在CPU中加入Cache是一種高效的解決方案,這樣整個記憶體儲器(Cache+記憶體)就變成了既有Cache的高速度,又有記憶體的大容量的儲存系統了。

按照資料讀取順序和與CPU結合的緊密程度,CPU緩衝可以分為一級緩衝,二級緩衝,部分高端CPU還具有三級緩衝,每一級緩衝中所儲存的全部資料都是下一級緩衝的一部分,這三種緩衝的技術難度和製造成本是相對遞減的,所以其容量也是相對遞增的。當CPU要讀取一個資料時,首先從一級緩衝中尋找,如果沒有找到再從二級緩衝中尋找,如果還是沒有就從三級緩衝或記憶體中尋找。一般來說,每級緩衝的命中率大概都在80%左右,也就是說全部資料量的80%都可以在一級緩衝中找到,只剩下20%的總資料量才需要從二級緩衝、三級緩衝或記憶體中讀取,由此可見一級緩衝是整個CPU緩衝架構中最為重要的部分。 2、Memory

儲存空間分記憶體儲器和外儲存空間,外存主要是隨身碟、硬碟等,一般意義上我們會講外存歸類於I/O裝置。所以這裡的儲存空間我們僅僅指的是記憶體。

記憶體是電腦中重要的組件之一,它是與CPU進行溝通的橋樑,是CPU能直接定址的儲存空間。我們平常使用的程式,如Windows作業系統、打字軟體、遊戲軟體等,一般都是安裝在硬碟等外存上的,但僅此是不能使用其功能的,必須把它們調入記憶體中運行,才能真正使用其功能,我們平時輸入一段文字,或玩一個遊戲,其實都是在記憶體中進行的。就好比在一個書房裡,存放書籍的書架和書櫃相當於電腦的外存,而我們工作的辦公桌就是記憶體。通常我們把要永久儲存的、大量的資料存放區在外存上,而把一些臨時的或少量的資料和程式放在記憶體上。

記憶體一般採用半導體儲存單元,包括隨機儲存空間(RAM),唯讀記憶體(ROM),以及快取(CACHE)。

ROM表示唯讀記憶體(Read Only Memory),在製造ROM的時候,資訊(資料或程式)就被存入並永久儲存。這些資訊只能讀出,一般不能寫入,即使機器停電,這些資料也不會丟失。ROM一般用於存放電腦的基本程式和資料,如BIOS ROM。

RAM表示隨機儲存空間(Random Access Memory)表示既可以從中讀取資料,也可以寫入資料。當機器電源關閉時,存於其中的資料就會丟失。我們通常購買或升級的記憶體條就是用作電腦的記憶體,記憶體條(SIMM)就是將RAM整合塊集中在一起的一小塊電路板,它插在電腦中的記憶體插槽上,以減少RAM整合塊佔用的空間。

高速緩衝儲存空間(Cache)就是CPU緩衝,前文已經有介紹。 3、I/O

I/O(input/output),即輸入輸出連接埠。每個裝置都會有一個專用的I/O地址,用來處理自己的輸入輸出資訊。常見的I/O裝置包括鍵盤、硬碟、印表機、滑鼠、鍵盤等。硬碟就是通過I/O介面,把資料送到記憶體中供CPU處理的。 4、BUS

匯流排(Bus)是由導線組成的傳輸線束。它是cpu、記憶體、輸入、輸出裝置傳遞資訊的公用通道,主機的各個組件通過匯流排相串連,外部裝置通過相應的介面電路再與匯流排相串連,從而形成了電腦硬體系統。

1)按照功能分類

資料匯流排:用於傳送資料資訊。資料匯流排是雙向三態形式的匯流排,即他既可以把CPU的資料傳送到儲存空間或I/O介面等其它組件,也可以將其它組件的資料傳送到CPU。需要指出的是,資料的含義是廣義的,它可以是真正的資料,也可以是指令代碼或狀態資訊,有時甚至是一個控制資訊,因此,在實際工作中,資料匯流排上傳送的並不一定僅僅是真正意義上的資料。常見的資料匯流排為ISA、EISA、VESA、PCI等。

地址匯流排:是專門用來傳送地址的,由於地址只能從CPU傳向外部儲存空間或I/O連接埠,所以地址匯流排總是單向三態的,這與資料匯流排不同。地址匯流排的位元決定了CPU可直接定址的記憶體空間大小,比如8位微機的地址匯流排為16位,則其最大可定址空間為2^16=64KB,16位微型機的地址匯流排為20位,其可定址空間為2^20=1MB。一般來說,若地址匯流排為n位,則可定址空間為2^n位元組。

控制匯流排:用來傳送控制訊號和時序訊號。控制訊號中,有的是微處理器送往儲存空間和I/O介面電路的,如讀/寫訊號,片選訊號、中斷響應訊號等;也有是其它組件反饋給CPU的,比如:中斷申請訊號、複位訊號、匯流排請求訊號、裝置就緒訊號等。因此,控制匯流排的傳送方向由具體控制訊號而定,一般是雙向的,控制匯流排的位元要根據系統的實際控制需要而定。

問:為什麼32位作業系統最大隻能支援4G記憶體。

答:32位代表地址匯流排位寬,匯流排的位寬指的是匯流排能同時傳送的位元據的位元,而地址匯流排的位寬決定了CPU可直接定址的記憶體空間大小,由於二進位每個位定址只有0、1兩種,所以32位作業系統的定址空間就是2^32=4GB。

2)按照層次分類

內部匯流排:在CPU內部,寄存器之間和算術邏輯組件ALU與控制組件之間傳輸資料所用的匯流排稱為片內匯流排(即晶片內部的匯流排),如I2C匯流排、SPI匯流排、SCI匯流排等。

系統匯流排:又稱內匯流排或板級匯流排,是微機中各擴充卡與系統板之間的匯流排,用於擴充卡一級的互聯。因為該匯流排是用來串連微機各功能組件而構成一個完整微機系統的,所以稱之為系統匯流排。人們平常所說的微機匯流排就是指系統匯流排,如ISA匯流排、PCI匯流排等。

外部匯流排:是電腦和外部裝置之間的匯流排,如IDE匯流排、USB匯流排、SCSI匯流排等。

3)按照傳輸方式分類

串列匯流排:所有訊號複用一對訊號線,串列匯流排通訊速率比較低,但在資料通訊量不是很大的微處理器電路中,顯得更加便捷、靈活。如USB匯流排、SPI匯流排、I2C匯流排等。

並行匯流排:每個訊號都有自己的訊號線,並行匯流排通訊速度快,即時性好,但由於佔用的口線多,成本上會有所增加。如ISA匯流排、PCI匯流排等。 5、主板

主板提供一系列接合點,供處理器、顯卡、聲效卡、硬碟、儲存空間、I/O裝置等裝置接合。它們通常直接插入有關插槽,或用線路串連。主板上最重要的構成組件是晶片集。而晶片集通常由北橋和南橋組成,這些晶片集為主板提供一個通用平台供不同裝置串連,控制不同裝置的溝通。

晶片集(Chipset)是主板的核心組成部分,幾乎決定了這塊主板的功能,進而影響到整個電腦系統效能的發揮。按照在主板上的排列位置的不同,通常分為北橋晶片和南橋晶片。北橋晶片提供對CPU的類型和主頻、記憶體的類型和最大容量、ISA/PCI/AGP插槽、ECC錯誤修正等支援。南橋晶片則提供對KBC(鍵盤控制器)、RTC(系統時鐘控制器)、USB(通用序列匯流排)、Ultra DMA/33(66)EIDE資料轉送方式和ACPI(進階能源管理)等的支援。其中北橋晶片起著主導性的作用,也稱為主橋(Host Bridge)。



二、電腦系統層次總述

1、第一級是微程式級。這級的機器語言是微指令集,程式員用微指令編寫的微程式,一般是直接由硬體直接執行的。

2、第二級是傳統機器級,這級的機器語言是該機的指令集,程式員用機器指令編寫的程式可以由微程式進行解釋

3、第三級是作業系統級,從作業系統的準系統來看,一方面它要直接管理傳統機器中的軟硬體資源,另一方面它又是傳統機器的延伸。

4、第四級是組合語言級,這級的機器語言是組合語言,完成組合語言翻譯的程式叫做組譯工具。

5、第五級是進階語言級,這集的機器語言就是各種進階語言,通常用編譯器來完成進階語言翻譯的工作。

總結:不同層級的程式設計都是由不同的語言來完成了,越低級的語言越接近機器,越進階的語言越接近人類,所以我們大多數應用程式員都工作在進階語言級。而作業系統可以看做是一個中介層,起到機器語言和人類自然語言承上啟下的作用,所以作業系統非常重要,也是我們後面學習的重點。 三、作業系統 1、作業系統作用:

1)屏蔽硬體物理特性和操作細節,向上輸出統一介面,為使用者使用電腦提供了便利

作業系統將底層電腦所提供的的各種計算能力抽象為一種統一介面的軟體,無論底層是AMD的cpu還是Inter的cpu,都統一成一個提供計算能力的,也不管記憶體是1G、2G、4G、8G都統一成32位系統4G記憶體,64位系統4G*4G的記憶體。所以程式員寫程式就大大的簡化了,不管底層到底硬體如何,我直觀面對linux或者window這種作業系統,或者32位、64位作業系統寫程式即可。這就是我們為什麼買了電腦第一件事情是裝作業系統,然後才能裝各種軟體,因為一般來說程式員寫程式是面對作業系統寫的,而不是面對機器寫的,沒有作業系統軟體沒法運行。

問:是不是軟體一定要在作業系統上才能運行。

答:並不是那麼絕對,如果程式員願意按照底層的機器語言去寫程式,是不需要作業系統的,但是底層的機器語言太過複雜,難以滿足現在應用軟體的需求。

2)有效管理系統資源,提高系統資源使用效率。如何有效地管理、合理地分配系統資源,提高系統資源的使用效率是作業系統必鬚髮揮的主要作用。比如:硬體驅動、CPU時間片切割分配(進程管理)、記憶體管理、網路管理等等。 2、作業系統組成:

1)核心(Kernel)

核心,是一個作業系統的核心。從不同的角度來看,核心擔任的角色不同。從純技術角度來看,核心只是軟體和硬體的一個中介層,它把從軟體發來的請求發送給硬體,完成定址等操作,還充當了底層驅動。從應用程式角度來看,核心是對硬體的一個高層次的抽象,應用程式與硬體沒有聯絡,只與核心有聯絡,核心是應用程式知道的最底層。從多個並發的進程的角度來看,核心是一個資源管理員,它完成對進程的切換,調度,共用電腦資源(CPU,記憶體,磁碟,網路等)。還可以把核心看成一個庫,通過系統調用向核心發送各種請求。

2)系統調用(System Calls)

在CPU的所有指令中,有一些指令是非常危險的,如果所有的程式都能使用這些指令,一旦錯用指令將導致整個系統崩潰,比如:清記憶體、設定時鐘等。所以,CPU將指令分為特權指令和非特權指令,對於那些危險的特權指令,只允許作業系統的核心使用,普通的應用程式只能使用那些不會造成災難的非特權指令。

但是一個應用程式肯定是特權指令和非特權指令都需要使用的,這時怎麼辦。

作業系統將程式的Runspace分為核心空間使用者空間(即核心態和使用者態),他們分別運行在不同的層級上,邏輯上是相互隔離的。使用者進程在通常情況下是不允許訪問核心資料的,它也就無法使用核心功能,它們只能在使用者空間操作使用者資料,調用使用者空間的函數。Intel的CPU將特權層級分為4個層級:RING0,RING1,RING2,RING3。Linux使用了Ring3層級運行使用者態,Ring0作為核心態,沒有使用Ring1和Ring2。Ring3狀態不能訪問Ring0的地址空間,包括代碼和資料。而系統調用正是作業系統向使用者程式提供支援的介面,系統調用把應用程式的請求傳給核心,調用相應的的核心功能完成所需的處理,將處理結果返回給應用程式。注意,系統調用並非每一個時刻都會發生,只有那些特權指令才需要通過系統調用介面去請求核心。而一些非特權指令並不需要調用核心而直接可以運行在CPU上。

問:應用程式如何在使用者態和核心態之間切換。

答:當進程在執行使用者自己的代碼時,我們稱其處於使用者態。即此時處理器在特權級最低的使用者代碼中運行。每當使用者進程使用系統調用時,都自動地將運行模式從使用者級轉為核心級,此時進程在核心的地址空間中運行。當一個進程執行系統調用而陷入核心代碼中執行時,我們就稱進程處於核心態。此時處理器處於特權級最高的核心代碼中執行。當進程處於核心態時,執行的核心代碼會使用當前進程的核心棧,每個進程都有自己的核心棧。

問:為什麼應用程式不能直接調用核心。

答:現代的作業系統通常都具有多任務處理的功能,通常靠進程來實現。由於作業系統快速的在每個進程間切換執行,所以一切看起來就會像是同時的。同時這也帶來了很多安全問題,例如,一個進程可以輕易的修改進程的記憶體空間中的資料來使另一個進程異常或達到一些目的,因此作業系統必須保證每一個進程都能安全的執行。這一問題的解決方案是在處理器中加入基底位址暫存器和界限寄存器。這兩個寄存器中的內容用硬體限制了對儲存器的存取指令所訪問的儲存器的地址。這樣就可以在系統切換進程時寫入這兩個寄存器的內容到該進程被分配的位址範圍,從而避免惡意軟體。為了防止使用者程式修改基底位址暫存器和界限寄存器中的內容來達到訪問其他記憶體空間的目的,這兩個寄存器必須通過一些特殊的指令來訪問。通常,處理器設有兩種模式:“使用者模式”與“核心模式”,通過一個標籤位來鑒別當前正處於什麼模式。一些諸如修改基底位址暫存器內容的指令只有在核心模式中可以執行,而處於使用者模式的時候硬體會直接跳過這個指令並繼續執行下一個。同樣,為了安全問題,一些I/O操作的指令都被限制在只有核心模式可以執行,因此作業系統有必要提供介面來為應用程式提供諸如讀取磁碟某位置的資料的介面,這些介面就被稱為系統調用。當作業系統接收到系統調用請求後,會讓處理器進入核心模式,從而執行諸如I/O操作,修改基底位址暫存器內容等指令,而當處理完系統調用內容後,作業系統會讓處理器返回使用者模式,來執行使用者代碼。

3)庫函數調用(Library Calls)

系統調用雖然是核心和使用者應用程式之間的溝通橋樑,是使用者應用程式訪問核心的進入點,但通常情況下,系統調用並不直接和程式員打交道,它僅僅是一個通過非強制中斷機制(X86中的int 0x80)向核心提交請求以擷取核心服務的介面。應用程式是通過作業系統提供的應用編程介面(API)而不是直接通過系統調用來編程。作業系統API的主要作用是把作業系統的功能完全展示出來,提供給應用程式,基於該作業系統,與檔案、記憶體、時鐘、網路、圖形、各種外設等互操作的能力。此外,作業系統API通常還提供許多工具類的功能,比如操縱字串、各種資料類型、時間日期等。

在Linux中,API遵循了在UNIX中最流行的應用編程介面標準——POSIX標準,該標準基於當時現有的UNIX 實踐和經驗,描述了作業系統的系統調用編程介面(即API),用於保證應用程式可以再原始碼一級多種作業系統上移植運行,這些系統調用編程介面主要是通過 C 庫(libc)實現的。庫函數(library function)是由使用者或組織自己開發的,具有一定功能的函數集合,一般具有較好平台移植性,通過庫檔案(靜態庫或動態庫)向程式員提供功能性調用。程式員無需關心平台差異,由庫來屏蔽平台差異性。

C庫(libc)提供了POSIX的絕大部分API,同時,核心提供的每個系統調用在C庫中都具有相應的封裝函數。系統調用與其C庫封裝函數的名稱常常相同,比如,read系統調用在C庫中的封裝函數即為read函數。實際上,從使用者的角度看,系統調用和C庫之間的區別並不重要,他們只需通過C庫函數完成所需功能。相反,從核心的角度看,需要考慮的則是提供哪些針對確定目的的系統調用,並不需要關注它們如何被使用。

4)系統調用和函數庫調用的聯絡和區別

系統調用和函數庫調用的聯絡:

    1、庫函數是在系統調用上的一層封裝,運行在使用者態(user mode),打個比方,庫函數相當於包工頭,系統調用是工人,我們可以自己找工人分任務,但一般是把任務攤給包工頭,包工頭再去給工人分任務。

    2、函數庫中的某些函數調用了系統調用介面,編程人員可以通過函數庫調用系統調用介面,當然進階編程也可以直接採用int 0x80進入系統調用,而不必通過函數庫作為中介;

    3、很多函數庫中的函數名與系統調用的名稱一樣,是因為該函數本身其實就是調用的系統調用,放到函數庫就是為了使用者態的使用,這樣可以減少使用者態到核心態的切換開銷。但系統調用和庫函數之間並不是一一對應的關係,可能幾個不同的函數會調用到同一個系統調用,也有可能一個函數調用多個系統調用。更有些函數並不依賴於任何系統調用,因為它們並不需要向核心請求任何服務。

系統調用和函數庫調用的區別:

問:一個程式需要執行核心代碼最終都是要系統調用,但是為什麼我們通常的做法是調用庫函數而不是直接系統調用。

答: 1、庫函數調用不依賴於作業系統,平台移植性好;

       2、庫函數給我們提供的介面更人性化,所以調用起來更方便;

       3、調用庫函數更安全,記憶體管理不用自己太操心;

       4、調用庫函數效率更高,雖然庫函數最終是調用系統函數,但是庫函數會比我們用更好的方式方法調用系統函數(比如說使用緩衝池)。

問:系統調用在各個作業系統是不同的,而庫函數調用最終還是會進行系統調用,那如何?庫函數的可移植呢。

答:在各個作業系統之間,基於大部分需求會抽象出一個中介層。在中介層中,中介層用了屏蔽底層細節,在程式員看來C言語庫就是這樣一個中介層的作用。在各個平台下,我們預設C標準庫中的函數都是一樣的,這樣基本可以實現可移植。但是對於C庫本身而言,在各種作業系統平台下其內部實現是完全不同的,也就是說C庫封裝了系統調用介面在其內部的實現細節(編譯器來負責庫函數到系統調用之間的轉換)。  因此,C語言提供了我們在代碼級的可移植性,即這種可移植是通過C語言這個中介層來完成的。

問:如果程式員寫的程式是面向API而非作業系統,具有可移植性,那為什麼一般情況下windows上的程式在linux上無法運行。

答:這裡說的可移植,是源碼可移植,並非程式可移植,可執行程式是經過源碼編譯而成的,編譯後源碼就變成了機器語言二進位代碼,而不同作業系統編譯出來的二進位代碼是不同的,不同作業系統對二進位代碼的解釋也是不一樣的,並且編譯後的可執行檔在各個作業系統中也是不一樣的。通俗的說如果把源碼比喻成一篇中文文章,那麼用德語翻譯的文章只有德國人能看懂,用法語翻譯的文章只有法國人才能看懂。(編譯器是把原始碼整個編譯成目標代碼,執行時不在需要編譯器,直接在支援目標代碼的平台上運行,這樣執行效率比解釋執行快很多。比如C語言代碼被編譯成二進位代碼exe程式,在windows平台上執行。)

關於更多系統調用和庫函數調用知識請參考:系統調用和c庫之間的關係 四、組合語言

組合語言(assembly language)是一種用於電子電腦、微處理器、微控制器或其他可程式化器件的低級語言,亦稱為符號語言。在不同的裝置中,組合語言對應著不同的機器語言指令集,通過彙編過程轉換成機器指令。
組合語言優點:

1、因為用組合語言設計的程式最終被轉換成機器指令,故能夠保持機器語言的一致性,直接、簡捷,並能像機器指令一樣訪問、控制電腦的各種硬體裝置,如磁碟、儲存空間、CPU、I/O連接埠等。使用組合語言,可以訪問所有能夠被訪問的軟、硬體資源;

2、目標代碼簡短,佔用記憶體少,執行速度快,是高效的程式設計語言,經常與進階語言配合使用,以改善程式的執行速度和效率,彌補進階語言在硬體控制方面的不足,應用十分廣泛。 組合語言缺點:

1、組合語言指令是機器指令的一種符號表示,而不同類型的CPU 有不同的機器指令系統,也就有不同的組合語言,所以,組合語言程式與機器有著密切的關係。所以,除了同系列、不同型號CPU 之間的組合語言程式有一定程度的可移植性之外,其它不同類型(如:小型機和微機等)CPU 之間的組合語言程式是無法移植的,也就是說,組合語言程式的通用性和可移植性要比進階語言程式低;

2、難於從組合語言代碼上理解程式設計意圖,可維護性差,即使是完成簡單的工作也需要大量的組合語言代碼,很容易產生bug,難於調試;

3、使用組合語言必須對某種處理器非常瞭解,而且只能針對特定的體繫結構和處理器進行最佳化,開發效率很低,周期長且單調。 組合語言的運用情境:

曆史上,組合語言曾經是非常流行的程式設計語言之一。但隨著現代軟體系統越來越龐大複雜,大量經過了封裝的進階語言如C/C++,Pascal/Object Pascal也應運而生。這些新的語言使得程式員在開發過程中能夠更簡單,更有效率,使軟體開發人員得以應付快速的軟體開發的要求。而組合語言由於其複雜性使得其適用領域逐步減小。

但這並不意味著彙編已無用武之地。由於彙編更接近機器語言,能夠直接對硬體進行操作,產生的程式與其他的語言相比具有更高的運行速度,佔用更小的記憶體,因此在一些對於時效性要求很高的程式、許多大型程式的核心模組以及工業控制方面大量應用。

1、組合語言的大部分語句直接對應著機器指令,執行速度快,效率高,代碼體積小,在那些儲存空間容量有限,但需要快速和即時響應的場合比較有用,比如儀器儀錶和工業控制裝置中。

2、在系統程式的核心部分,以及與系統硬體頻繁打交道的部分,可以使用組合語言。比如作業系統的核心程式段、I/O介面電路的初始化程式、外部裝置的低層驅動程式,以及頻繁調用的子程式、動態串連庫、某些進階繪圖程式、視頻遊戲程式等等。拿Linux核心來講,雖然絕大部分代碼是用C語言編寫的,但仍然不可避免地在某些關鍵地方使用了彙編代碼。由於這部分代碼與硬體的關係非常密切,即使是C語言也會顯得力不從心,而組合語言則能夠很好揚長避短,最大限度地發揮硬體的效能。

3、組合語言可以用於軟體的加密和解密、電腦病毒的分析和防治,以及程式的調試和錯誤分析等各個方面。

4、通過學習組合語言,能夠加深對電腦原理和作業系統等課程的理解。通過學習和使用組合語言,能夠感知、體會和理解機器的邏輯功能,向上為理解各種軟體系統的原理,打下技術理論基礎;向下為掌握硬體系統的原理,打下實踐應用基礎。
五、進階語言

由於組合語言依賴於硬體體系,且助記符量大難記,於是人們又發明了更加易用的所謂進階語言.進階語言(High-level programming language)是高度封裝了的程式設計語言,與低級語言相對。它是以人類的日常語言為基礎的一種程式設計語言,使用一般人易於接受的文字來表示(例如漢字、不規則英文或其他外語),從而使程式編寫員編寫更容易,亦有較高的可讀性,以方便對電腦認知較淺的人亦可以大概明白其內容。由於早期電腦業的發展主要在美國,因此一般的進階語言都是以英語為藍本。正因為進階語言是經過封裝的程式設計語言,所以不能直接被電腦所識別,並需經過轉化才能被執行,按轉換方式可以講他們分成兩類:

1、編譯型語言

編譯型語言套件括C、C++等。這裡說的編譯是指在應用來源程式執行之前,就將程式原始碼“翻譯”成組合語言,然後進一步的根據硬體環境被變成符合運行需要的機器語言的目標檔案。

2、解釋型語言

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.