《软体介绍》PPT课件.ppt

上传人:牧羊曲112 文档编号:4860440 上传时间:2023-05-20 格式:PPT 页数:61 大小:898KB
返回 下载 相关 举报
《软体介绍》PPT课件.ppt_第1页
第1页 / 共61页
《软体介绍》PPT课件.ppt_第2页
第2页 / 共61页
《软体介绍》PPT课件.ppt_第3页
第3页 / 共61页
《软体介绍》PPT课件.ppt_第4页
第4页 / 共61页
《软体介绍》PPT课件.ppt_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《《软体介绍》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《软体介绍》PPT课件.ppt(61页珍藏版)》请在三一办公上搜索。

1、1,第六章軟體介紹,電腦光有硬體是無法運作的,真的要讓電腦解決我們的問題,還需要軟體的配合。在本章中,我們將建立對軟體的正確觀念,以及介紹各式各樣的軟體。,2,第六章 軟體介紹,我們需要透過軟體指揮電腦硬體來完成我們指定的工作,而什麼是軟體呢?軟體其實是一種抽象化的名詞,它必須以某種排列方式附著於某個硬體之上,例如:附著於記憶體、硬碟、光碟片中軟體的功能則是告知電腦該去做什麼或提供電腦所需要的資料來源。在本章中,首先我們將從軟體的目的、軟體的組成,開始介紹到底軟體是什麼東西,進而介紹軟體的種類以及幾種常見的系統軟體。,3,大綱,6.1什麼是軟體6.1.1軟體的目的6.1.2軟體的種類6.1.3

2、軟體與韌體6.2軟體的分類6.2.1依執行與設計分類6.2.2依使用對象分類6.2.3依網路分類6.3系統軟體6.4軟體與檔案6.4.1檔案系統6.4.2軟體的組織成分6.5系統程式6.5.1傳統的系統程式6.5.2現代的系統程式,4,相對於摸的到看的到的硬體而言,軟體(Software)只是一種抽象化的名詞,它必須以某種排列方式附著於某個硬體之上,其實我們只能感覺到軟體的存在,或者透過硬體看到軟體的成效,為了說明什麼是軟體,我們將從軟體的目的及軟體的內容來分別討論。,6.1什麼是軟體,5,6.1.1軟體的目的,科技起始於人性,發明電腦的主要目的是為了幫助人類解決問題。然而單靠電腦硬體是無法運

3、作的,就如同是人光有身體的各個組織成分,但大腦無法運作,就只是個軀殼,我們必須透過大腦的指示,才能夠指揮身體的各種器官來完成某些工作,例如:拿東西、拉抽屜、走路、跑步、吃飯等等。電腦的運作也是如此,要讓電腦硬體產生運作,就必須搭配軟體。簡單的說,軟體的最主要目的在於讓人們操控電腦硬體來完成工作,軟體的種類有很多,而各種軟體雖然都是為了解決讓人們操控電腦硬體來完成工作而發展的,但卻各有不同的設計目的。指揮電腦硬體最底層軟體的根本功能必須能夠指揮電腦硬體,這類軟體必須負責協調與控制各個硬體元件的執行動作,並且協調不同軟體共用電腦硬體資源時的溝通與控制。提供此功能的軟體,我們稱之為系統軟體(6.3節

4、將對系統軟體有更深入的說明)。做為使用者介面使用者必須能夠透過軟體命令電腦硬體執行指定的工作,而電腦硬體執行完畢後,也必須透過軟體才能將執行結果以各類方式反應給使用者。例如顯示於螢幕上,從印表機列印出來,儲存於檔案內。,6,6.1.1軟體的目的,做為其他軟體間的溝通橋樑某些固定執行的工作也可以發展為軟體,此類軟體並不負責與使用者接觸的介面,也不負責最底層的硬體操作,我們可以將這類軟體看做是中介性質的軟體,由於未提供使用者介面,因此只能自動執行或做為其他軟體之呼叫對象之用,此類軟體大多作為伺服器之用,或做為程式的函數庫之用。,使用者、軟體、硬體關係圖,軟體的目的,7,6.1.2軟體的種類,軟體其

5、實指的就是程式,但廣義的軟體應可區分為資料與程式兩大類。程式是一連串的指令,正如同電子辭典中的搜尋單字功能,就必須透過一個搜尋程式來達成而電子辭典中的所有單字則為資料換句話說,即使程式相同,但若提供的資料不同,則所提供的服務也就不同。目前大多數的軟體都包含了程式(Program)與資料(data)兩部分正如同購買電子辭典時,也同時購買了搜尋程式與基礎的單字詞庫資料通常可以分別購買,例如我們可以擴充電子辭典的詞庫。音樂CD正是標準的資料軟體軟體的資料可稱為數位內容,它必須透過撥放程式才能完成播放音樂的目的。,8,6.1.3軟體與韌體,有時候,不僅資料可以擴充,程式也可以擴充,尤其這正是電腦定義的

6、最重要元素之一,因此我們藉由安裝不同的程式,使得電腦具有更多的功能。有些微控制器(Micro-controller)系統則不一定具有擴充功能,例如早期的電子辭典、手機等等,明顯地,它仍然有一些程式在內部運作,但我們卻無法安裝新的程式,這是因為這些程式與資料都被燒錄在唯讀性記憶體(ROM)中,因此無法修改記憶體中的內容,這類的程式則稱之為韌體程式例如電腦中的BIOS就是一種韌體(Firmware)。電腦具有擴充軟體的特性,我們可以藉由外部儲存媒體或網路,將軟體安裝於電腦系統中,並於執行時載入主記憶體執行而目前較新穎的電子辭典或手機,則提供了插卡功能(例如插入Flash卡),以擴充其功能。,9,6

7、.2軟體的分類,軟體(專指程式而言)可以依照不同的角度來加以分類。在不同的分類中,每個軟體所扮演的角色也有所不同,在本節中,我們將分別加以介紹。,10,6.2.1依執行與設計分類,依照執行與設計,我們可以將軟體區分為系統軟體(System Software)與應用軟體(Application Software)兩大類。系統軟體系統軟體又分為兩大類:作業系統與系統程式作業系統提供了其他程式執行的環境,因此較接近硬體底層的低階程式,都必須包含在作業系統的範圍內,以便管理與控制電腦硬體及周邊設備。而系統程式則是程式開發的工具,例如編輯程式碼的編輯器、翻譯程式碼的組譯器、編譯器與直譯器、連結目的碼的連

8、結器、載入程式碼的載入器等等。為了提昇開發程式的效率,因此有許多廠商也將這些系統程式整合在一起,變成一套開發程式專用的軟體,也就是所謂的整合式開發環境(IDE)例如Visual C+、Visual Basic、Borland C+Builder、Delphi等等都是整合式開發環境的一種,分別提供了使用不同程式語言來開發程式的環境。,11,6.2.1依執行與設計分類,所有的程式都必須透過程式開發工具來開發,然後在作業系統提供的環境中執行。我們將在下一節中分別加以介紹,並於下一章詳細介紹作業系統的原理與種類。,系統軟體與應用軟體關係圖,12,應用軟體 應用軟體是架構在系統軟體之上,依據某種特殊需求

9、而開發出來的軟體,例如:Office、帳務系統、電腦遊戲等等。我們可以依照本身的需求,使用特定的應用軟體來完成工作,在第九章中,我們將介紹幾種比較常見的應用軟體。,6.2.1依執行與設計分類,13,6.2.2依使用對象分類,軟體在開發時,依照使用對象可以分類為通用型與專屬型兩大類:通用型軟體此類軟體的使用者為一般電腦使用者,功能比較屬於多數人常見的需求,而不是針對某人、某個組織量身訂作例如辦公室所使用的文書處理軟體、收發電子郵件軟體、網路瀏覽器、影像處理軟體等等都是通用型軟體。對於系統軟體而言,所有的系統軟體都屬於通用型軟體因為系統程式的功能為開發程式,其對象為所有的程式設計師。作業系統的主要

10、功能(專指作業系統核心)在於執行程式,其對象為所有的電腦使用者。因此,一般將軟體區分為通用型與專屬型,大多指的是應用軟體的分類。,14,6.2.2依使用對象分類,通用型應用軟體又稱為水平應用軟體(Horizontal Software),這類軟體通常可以隨時購買,即刻使用,而不需要經過訂製(訂製包含了需求分析與設計等特殊需求)。此類軟體是由軟體開發公司根據一般人的普遍需求所發展,以提高使用者的工作效率,讓使用者使用電腦時更加便利。一般開發此類程式的大多為國際知名廠商,雖然開發水平應用軟體的成本較高(需要較多人員參與設計),但因使用者眾,因此售價較低,銷售量較大國內廠商除少數知名廠商(如趨勢、友

11、立)之外,大多將業務重點放在開發專屬型應用軟體。,15,6.2.2依使用對象分類,專屬型軟體此類軟體是針對特殊需求而專門訂製的軟體,各家公司通常對於這些需求有些不同,所以無法或很難設計出一套一體適用的軟體。此類軟體通常是為了解決公司內部的作業流程,公司與公司的業務交易,公司與客戶的業務交易等等的需求換句話說,這類軟體通常是業務資訊化的推手。此類軟體也稱為垂直應用軟體(Vertical Software),因為它常常必須整合企業內部許多業務的處理流程例如會計系統、生產排程系統、企業資源整合系統、進銷存系統等等都屬於此類系統。此類系統由於其特殊性,因此需要針對需求進行特別的規劃及完整的開發過程,因

12、此價格非常昂貴,但也較無盜版等問題。,16,垂直應用軟體容易受到各地的文字、法規、文化、習慣等自然市場的區隔屏障,反而不容易受到技術變動的影響。發展此類系統通常需要強有力的領域知識(domain knowledge)做為後盾,因此不易被取代。為了更有效率的開發此類系統,通常會先發展此類系統的一般性雛形,當客戶願意購買時,再針對客戶的特殊需求,進行客製化(Customize)的修正及補強動作。若市場發生變化,一般性雛形也可能擴充為通用型軟體。,6.2.2依使用對象分類,17,6.2.3依網路分類,由於網路的發達,一種新的分類也隨之產生,我們可以將軟體區分為網路型軟體、單機型軟體、混合型軟體。網路

13、型軟體此類軟體顧名思義必須要在網路連線的狀態中,才具有意義例如眾多的線上遊戲(On-Line Game)即是一例。若使用者未能接通網路,則將軟體放置於個人電腦中將形同垃圾另一類常見的為電子郵件軟體,若電腦無法連接網路,則充其量電子郵件軟體只能做為記事等用途更有甚者(如網頁型電子郵件Web Mail),使用者根本無法在網路未接通時使用該軟體。由於目前大多數的網路結構都屬於主從式架構(Client/Server Architecture),因此網路型軟體又可分為伺服器軟體與客戶端軟體兩大類。常見的網頁伺服器如IIS、Apache等即為伺服器軟體瀏覽器則為客戶端軟體。對於一般使用者而言,大多操作客戶

14、端軟體對伺服器提出服務需求;而伺服器軟體會將需求加以執行,並將結果回傳給客戶端軟體。,18,6.2.3依網路分類,單機型軟體單機型軟體不需要考慮網路是否處於連接狀態,網路的連接與否,並不會增加單機型軟體所提供的服務。單機型軟體的使用資源僅限於安裝該軟體的電腦,例如:磁碟重組工具、個人版遊戲軟體踩地雷等都屬於單機型軟體。混合型軟體混合型軟體大概是目前數量最多的軟體,此類軟體在網路未接通時,可以扮演單機型軟體的功能,而在網路連線的狀態下,也具有網路型軟體的功能。例如瀏覽器就屬於此種類型,瀏覽器不但可以讀取本地端電腦的HTML網頁,也可以讀取遠端伺服器的HTML網頁。此外,目前大多數的伺服器等級的作

15、業系統都屬於混合性軟體,也就是具有單機操作與網路操作的功能。,19,6.3系統軟體,系統軟體分為兩大類,一類為作業系統,另一類為系統程式。更詳細地說,系統軟體應該指的是作業系統的核心與系統程式及整合開發環境。作業系統核心的功能為直接管理與控制電腦硬體及周邊設備,以提供其他程式執行的環境。系統程式及整合開發環境的用途則為提供程式設計師開發程式的環境。作業系統(Operating System;簡稱OS),是介於電腦硬體與應用軟體之間的橋樑,負責所有硬體資源的操作細節,同時負責協調各個程式的資源配置。所有的程式都必須在作業系統的控管下來執行,作業系統負責分配CPU時間、記憶體以及其他周邊設備給這些

16、程式。不過目前所流行的眾多作業系統已經不僅提供上述功能,它甚至還提供了瀏覽器、磁碟管理工具、伺服器等等的其他程式。因此,上述的基本功能,嚴格說起來,應該稱之為作業系統核心(OS kernel),也只有作業系統核心才屬於系統軟體的一部份而其他由作業系統附帶提供的軟體則應該歸類於應用軟體的範疇。,20,6.3系統軟體,目前常見的作業系統有Windows、Linux、Unix、Mac等等。我們將在第八章中,詳細說明作業系統的原理以及負責的幾項重要資源管理。,Windows Vista作業系統的使用介面,21,6.4軟體與檔案,軟體其實是概括性的名詞,它是由程式及資料所組成,資料或程式必須以檔案形式存

17、放在輔助儲存體(例如硬碟)中,並於執行時載入到主記憶體執行。檔案是存放資料或程式的單位,但檔案在磁碟中並非雜亂無章的存放,而是透過檔案系統來管理,在本節中,我們將介紹常見的樹狀檔案系統以及各類型常見的檔案。,22,6.4.1檔案系統,資料或程式都是以檔案(file)型式儲存在次要儲存裝置(例如磁碟、光碟等)以便於在電力喪失的狀況下仍舊能夠被保存下來。在電腦的儲存裝置中,存在極大量的檔案數目,若不加以分類整理,將難以管理與搜尋。一般來說,檔案的儲存是階層式的架構,使用者可以依照檔案的性質及功能加以分類,形成許多的目錄(directory)或資料夾(folder)。目錄是一種階層式結構,也就是說,

18、目錄下仍舊可以包含有子目錄(subdirectory),而最上層的目錄則稱之為根目錄(root directory)。除了根目錄之外,每一個目錄都有唯一的父目錄(Parent directory),換句話說,所有的目錄將形成階層式的樹狀目錄(tree directory),如圖6-7、6-8所示,而任何一個檔案都將位於其中的一個目錄。,23,6.4.1檔案系統,Linux作業系統的樹狀目錄結構,Windows作業系統的檔案總管可以觀察樹狀目錄結構,24,6.4.1檔案系統,檔案系統檔案與目錄的存放方式由檔案系統(File System)所控制。例如使用者以完整路徑及檔案名稱存取檔案時(例如C:

19、Documents and SettingsAdministratorMy Documentshomework1.doc),檔案系統將會找出檔案儲存在磁碟的哪個位置,進而存取該檔案的資料。不同的作業系統採用的檔案系統也不相同DOS的檔案系統為FAT(file allocation table)Windows 2000的檔案系統為FAT、FAT32或NTFSLinux的檔案系統為linux ext2Mac OS的檔案系統為HFS(hierarchical file system)不同的作業系統之間可能無法立即存取其他檔案系統的檔案,不過也可以藉由一些特殊程式達到此項功能。,25,6.4.1檔案系

20、統,檔案名稱檔案名稱分為兩大部分:主檔名與副檔名,中間以.做為間隔符號(當.不只一個時,則以最後出現的.做為間隔符號)。主檔名通常是用來代表檔案內容的名稱副檔名(又稱為附屬檔名或延伸檔名)則用來代表檔案類型例如,homework.txt的主檔名homework,代表檔案內容可能是家庭作業,而txt則是純文字檔,可以使用記事本、WordPad、Word、UltraEdit等軟體開啟。檔名並非毫無限制在以往的DOS作業系統中,主檔名不得超過8個字元,副檔名不得超過3個字元,並且只能夠使用英文字母、數字及_來命名。而在Windows 95以後的視窗作業系統,則允許主檔名的長度可達255個字元,並且允

21、許使用!#$%&()-、空白字元、中文字等特殊字元來命名一般建議盡量使用英文字母、數字及_等來命名以避免檔案需要在網路傳輸時,另一端的作業系統不支援的情況發生。,26,6.4.1檔案系統,副檔名的種類隨著所安裝的軟體種類而有所增減,在Windows中,若您已經安裝某些軟體後,在檔案總管中開啟這些特殊副檔名的檔案後,將會自動開啟對應的軟體,而管理副檔名的對應程式則位於檔案總管(Windows XP)或控制台(Windows Vista)中,如圖:,Windows XP執行檔案總管的【工具資料夾選項】指令,Windows Vista執行開始功能表的【控制台預設程式設定關聯】指令,可以開啟管理副檔名

22、的程式,27,28,29,30,31,6.4.1檔案系統,表達檔案在磁碟的邏輯位址是透過檔案路徑來完成的,而檔案路徑又分為絕對路徑(absolute path)與相對路徑(relative path)。絕對路徑是由根目錄開始計算的完整路徑就Windows作業系統而言,絕對路徑包含了磁碟機、所有經過的目錄、檔案名稱等三大部分。其中以做為目錄與目錄及目錄與檔案的區隔,如下範例。【範例1】:Windows的絕對路徑C:Documents and SettingsAdministratorMy Documentshomework1.txt說明:C是磁碟機代號,之後必須接著:做為區隔。Documents

23、 and Settings是C磁碟機下的一個目錄,Administrator是Documents and Settings下的子目錄,My Documents是Administrator下的子目錄。目錄間以做區隔。homework1.txt是檔案名稱。位於My Documents目錄內,目錄與檔案名稱間以做為區隔。,32,6.4.1檔案系統,UNIX/Linux的絕對路徑和Windows差不多,但UNIX/Linux沒有磁碟機代號,而根目錄的表示法就是/,並且目錄與目錄之間則以/做為區隔,如下範例。【範例2】:UNIX/Linux的絕對路徑。/home/jhchen/homework.txt說

24、明:第一個/代表是根目錄。home是根目錄下的一個子目錄,jhchen是home下的子目錄。目錄間以/做為區隔。homework.txt是檔案名稱。位於jhchen目錄內,目錄與檔案名稱間以/做為區隔。,33,6.4.1檔案系統,相對路徑是由所在目錄開始往上或往下計算所得到的路徑要表達目前所在目錄可以使用.來代表要表達父目錄則必須使用.來表達,子目錄則為(Windows)或/(UNIX/Linux),如下範例。【範例3】:Windows的相對路徑假設目前位於C:MyDataWord目錄。則要存取C:MyDataExcelhw.xls可以使用.Excelhw.xls來代表,如下圖示意。,34,6

25、.4.1檔案系統,對UNIX/Linux而言,.仍舊是用來代表目前所在目錄,.也是用來表達父目錄,子目錄則為/,此外,在UNIX/Linux中,欲表達登入者的起始目錄,還可以使用符號。,35,6.4.2軟體的組織成分,軟體以檔案形式存放於輔助記憶體中,而其中一類檔案稱之為可執行檔。可執行檔(Executable File)是一種可以直接在作業系統環境中執行的程式檔案。其中的內容則為許多的指令以下將就指令、程式、軟體、系統之間的關係加以說明。指令指令(instruction)是驅動電腦硬體最基本的命令,例如:命令ALU執行加法、減法,讀取磁碟等等,它具有特殊的格式,對電腦硬體而言,電腦只能夠以二

26、進制方式來表達所有的資料(包含指令),因此,真正控制電腦的指令其實是一些特定格式的二進制碼,稱之為機器碼(machine code),並且根據電腦硬體結構的不同,每一種電腦的機器碼格式也大不相同。,【指令集】每一種電腦提供的指令都不相同,而一台電腦提供各式各樣的指令合起來就稱之為該電腦所提供的指令集(instruction set),因此,每一種電腦提供的指令集也不一定相同。根據指令特性,又可以將指令集分為RISC(Reduced Instruction Set Computing;精簡指令集)與CISC(Complex Instruction Set Computing;複雜指令集)兩種電腦

27、結構。RISC的單一個指令大多只能夠完成非常簡單的一項工作;而CISC的單一指令則可以完成較複雜的工作。,36,6.4.2軟體的組織成分,程式正如同上述所言,單一個指令只能夠完成單一項簡單的工作(RISC的指令所能完成的工作更簡單),因此,如果想要完成某一項特定工作,則必須由更多的指令共同完成,而程式(program)就是一連串指令的集合,用以完成某一項特定工作。舉例來說,如果要完成兩個數的相加,則一個指令就可以完成,但如果要計算全班學生的平均成績,就必須透過程式來完成,這個程式可能包含加法指令、迴圈跳躍指令、除法指令等等。,37,6.4.2軟體的組織成分,軟體軟體(Software)和程式的

28、分界線並不那麼明顯,但一般所稱的軟體大多是由一個以上的程式所組成,可以針對某項工作需求提供較完整的解答例如計算全班學生的平均成績如果是一個程式,那麼計算、統計、繪曲線圖等等的程式則可以歸納在試算表軟體之內,而試算表軟體又可以規範在辦公室軟體之內正如同Microsoft出版的Office套裝軟體中,包含Excel試算表軟體,而Excel試算表軟體可以進行各種資料的加總、統計、繪曲線圖、柱狀圖等功能。軟體是由程式所組成,這是毫無疑問的,但有些人也將資料視為軟體的一個構成項目舉例來說,一個媒體播放軟體可以用來播放VCD電影,然而如果沒有VCD電影,該軟體將毫無用處,而VCD電影是一種資料,雖然它不具

29、備驅動電腦硬體的特性,但仍是一種抽象的排列組合,不同的0、1排列代表著不同的電影,而只有媒體播放軟體能夠正確的辨識這些0、1排列的資料,並將之轉換為我們能夠看到的影片。因此廣義的軟體應該包含程式檔與資料檔兩大部分。,38,6.4.2軟體的組織成分,系統系統(System)與軟體的分界更不明顯,更明確地說,系統可以稱之軟體,但軟體卻不一定能夠稱之為系統。系統的功能是非常明確且龐大的,它包含了各種不同的軟體,甚至還可能包含了某些硬體。舉例來說,資料庫管理系統可能包含了資料庫軟體、程式介面、備份軟體、甚至連硬碟也可以規劃其內。,系統、軟體、程式、指令階層圖,39,6.4.2軟體的組織成分,一般來說,

30、程式依據其目的,由硬體製造商或軟體公司來撰寫例如製造掃描器的公司會提供掃描器的驅動程式軟體會計軟體則大多由軟體公司開發。開發程式的人員,我們稱之為程式設計師(programmer)由於直接撰寫機器碼對於大部分的人來說是非常困難的,因此幾乎所有的程式設計師都必須依靠系統程式的程式開發工具(development tools)來完成程式的撰寫工作。在程式開發工具的輔助下,程式設計師可以藉由指令來控制電腦硬體的運作,以便完成使用者要求的特定工作。對純粹資料所形成的軟體數位內容而言,製造者稱為數位內容提供者舉例來說,製作VCD電影及製造CD音樂的人員都可以稱之為數位內容提供者一般我們也會將數位內容提供

31、者歸類於電腦使用者之中,只不過這些使用者的工作比較固定,並且透過各種特殊功能的軟體來完成資料(如電影、CD、文件)的製作。,40,6.5系統程式,系統程式(System program)主要是用來提供開發程式及執行過程中所需要用到的所有工具。事實上,它的許多功能其實已經被結合在作業系統或整合式開發環境中。系統程式幾乎都是與機器相關(machine-dependent)的程式什麼是與機器相關的程式呢?電腦的運作主要是依靠CPU與主記憶體之間的資料轉換來完成,所有要被執行的程式都必須被載入到主記憶體,然後才能夠被執行,因為指令只能夠在CPU的暫存器與主記憶體之間搬移資料,或透過ALU進行算術邏輯運

32、算。因此要控制程式的執行,必須能夠控制記憶體、暫存器或其他硬體,而這牽扯到硬體的設計結構,每一種電腦或每一種CPU的控制方法都不相同,例如:PC一般使用Intel相容的CPU晶片x86指令集,而早期Mac則使用Motorola出產的68xxx晶片,因此,這些控制硬體的程式就必須按照電腦結構來設計,故稱之為與機器相關的程式,系統程式就是其中一例。,41,6.5.1傳統的系統程式,系統程式的行為又可以分為下列五大類,此五類動作分別交由五種程式來執行,其目的都是為了要控制各種程式的發展與執行:載入程式(Loader)在前面提到,可執行檔是一種程式,其內容為可以供電腦辨識的機器碼。而載入程式負責將可執

33、行檔載入到記憶體的指定位址,值得一提的是,程式以二進位碼型式存在於輔助記憶體中,這些程式是經過編譯或轉譯之後的目的碼,而載入程式的功能就是(1)將這些目的碼搬移到記憶體的指定位址,並且(2)將執行權轉移到這些目的碼的開頭,然後(3)開始執行該程式。現代化的載入程式一般都已經內建於作業系統中當您在Microsoft Windows檔案總管中,在某個應用程式上面按兩下之後,Windows作業系統就會啟動內含的載入程式,將指定的應用程式載入到記憶體,並開始執行它。作業系統也是一個程式,在開機之前也是存放在硬碟中,那麼作業系統又是如何被載入到記憶體的呢?這就必須說到另外一種特殊的載入程式啟動載入程式(

34、Bootstrap Loader)。啟動載入程式是一個非常小的程式,一般會包含在BIOS之內,以便於在一開機之後載入管理電腦系統資源的作業系統。,42,6.5.1傳統的系統程式,連結程式(Linker)有的時候,目的碼還需要結合其他目的碼才能夠完成工作,而這些目的碼可能是已經事先撰寫完成,放置於程式庫(Library),供程式設計師使用的程式模組。要將這些程式模組的目的碼連結起來,就必須透過連結程式(Linker),經過連結後的程式會變得比較大,然後再一起載入到記憶體被執行。若將連結程式詳細的分類,又可以分為連結編輯器(Linking Editor)及連結載入器(Linking Loader)

35、兩種。連結編輯器只會將目的碼完成連結的動作,然後還需要透過載入器進行重新定位以及載入的動作後,程式才會被執行。連結載入器不但具有連結的功能,還具備載入器的功能,也就是當目的碼完成所需要的連結後,將立刻被載入到記憶體中被執行。,43,6.5.1傳統的系統程式,連結編輯器的處理流程,連結載入器的處理流程,44,6.5.1傳統的系統程式,重新定址(Relocation)功能對於現代的電腦系統而言,程式目的碼裡面所標註程式位址並不代表程式執行時真實的記憶體位址,這是為了讓系統具備更多的彈性可以執行各式各樣程式的緣故。對於目的碼內的位址而言,其實規範的都是一種相對位址,在目的碼被載入到記憶體時,這些位址

36、應該加上目的碼在記憶體的起始位址,而這個動作稱之為重新定址(Relocation)。舉例來說,目的碼內有兩個位址分別是0010及0018,而載入程式若將程式載入到1000的起始位址,則這兩個位址將被修正為1010及1018由於所有的程式位址都會被修正,因此程式仍然可以正確地被執行。下圖是目的碼被執行之前的過程,包含了連結、載入、重新定址等步驟。,45,6.5.1傳統的系統程式,連結、載入、重新定址,46,6.5.1傳統的系統程式,語言轉譯程式在前面提及,執行程式是將可執行檔載入記憶體中執行,而可執行檔又是由目的碼檔案經由連結而成。至於目的碼檔案又是如何產生的呢?目的碼其實也是一種二進位檔案,除

37、了非常早期的電腦系統外,程式設計師一般都不會直接撰寫機器碼或目的碼,而是使用其他程式語言先撰寫好原始程式(Source code),再透過程式發展工具語言轉譯程式的轉換,將原始程式轉換成機器碼(machine code)或目的碼(object code)。,47,6.5.1傳統的系統程式,語言轉譯程式也不只一種,我們可以依據轉譯程式的特性,將之區分為下列三種語言轉譯程式:(1)組譯器(Assembler):組譯器(Assembler)可以將組合語言程式(Assembly language program)轉譯為目的碼(object code)。組合語言是最接近機器碼的低階語言,由於機器碼的01

38、串列不容易被人辨識與記憶,因此組合語言使用運算子與運算元來表示一連串的0、1組合,而這些運算子則使用助憶碼以利人類的記憶與理解,這些助憶碼一般都是某些英文的簡寫,例如:使用INC來代表Increment(累加)。不同的CPU的組合語言也不相同,因此,組譯器也不相同。由於組合語言與機器碼一對一的特性,因此開發組譯器相對於開發另外兩類語言轉譯程式而言,是比較簡單的。,48,6.5.1傳統的系統程式,(2)編譯器(Compiler):編譯器採用整批作業(Batch)方式來處理程式轉譯的工作,換句話說,當我們將程式設計完畢並交由編譯器轉譯之後,編譯器會將翻譯結果存成一個目的檔(object file)

39、,而這個目的檔可經由連結其他目的檔及程式庫之後形成可執行檔(execute file),並由電腦直接執行。常見使用編譯器的語言有C、C+、Pascal、Object Pascal、Visual Basic(須編譯)等等。(3)直譯器(Interpreter):直譯器與編譯器處理程式的步驟不同,當我們使用直譯式語言撰寫程式完畢並使用直譯器來翻譯程式的過程中,不需要產生目的檔,直譯器會將程式一行一行的讀入,逐行翻譯,並送交由電腦執行,因此,每一次要執行直譯式語言程式時,都必須啟動直譯器來重新翻譯程式。也正因為如此,所以當程式中有錯誤發生時,前面沒有錯誤的程式仍會被執行,並且停留在錯誤的那一行程式,

40、因此適合用於程式開發過程,這一點則與編譯式語言完全不同。因此,直譯器具有監督執行狀況的效果。早期的Basic以及常見的JavaScript、VBScript、Python等都是屬於直譯式語言。,49,6.5.1傳統的系統程式,【編譯式語言與直譯式語言】:在前面提過直譯式語言與編譯式語言,但事實上這並非是程式語言的分類,例如有些書籍會將C語言稱為編譯式語言,但這並非正確的說法。,歷史也曾經出現過許多特定用途的C語言直譯器,如Stanford的Thetis C Interpreter。之所以許多人將C語言認為是編譯式語言,是因為大多數的程式設計師都是透過C語言的編譯器來翻譯程式。因此,最正確的說法

41、是,原始程式可以透過編譯器來翻譯,也可以透過直譯器來翻譯並執行。,50,6.5.1傳統的系統程式,組譯器、編譯器、直譯器的處理流程,51,6.5.1傳統的系統程式,編輯程式(Editor)程式設計師實際撰寫的程式稱之為原始程式碼,而編輯原始程式碼的環境稱之為編輯程式(Editor;又稱編輯器),程式設計師在編輯器中編輯原始程式碼,然後將原始程式碼儲存為原始程式檔。原始程式檔是一種純文字檔,因此許多軟體都可以充當編輯器,例如Linux/Unix的Vi、DOS的PE2/3、Windows的記事本等等。也正因為一般的文書處理軟體或純文字編輯軟體就可以充當編輯器,因此編輯器是否需要歸類於系統程式或系統

42、軟體中,則各有其見解上的不同,換句話說,我們也可以將具有編輯器功能的軟體歸類於應用軟體。,52,在介紹現代的系統程式之前,我們先回顧傳統透過編譯器翻譯程式的流程。首先程式設計師透過編輯器將原始程式碼編譯完成,並將之透過編譯器翻譯為目的碼,然後由連結程式連結為可執行檔,最後由載入程式將程式載入主記憶體中執行,其流程簡化如下圖。,6.5.2現代的系統程式,程式開發與轉譯過程,53,6.5.2現代的系統程式,在這個傳統的開發程式流程中,由於程式可能不會一次就成功開發完成,而仍舊存在許多問題,這些問題稱之為程式的臭蟲(bug),此時程式設計師必須找出發生錯誤的地方,重新修改原始程式,並重複進行編譯、連

43、結、執行等步驟。,【臭蟲】:在早期使用繼電器做為電腦元件的1945年9月9日,Mark II電腦發生了一個錯誤,後來Grace Hooper發現是一隻蛾死在繼電器裡面,導致電腦當機。當時他用髮夾把那隻蛾弄出來並貼在管理日誌上,旁邊註明:就是這個臭蟲(bug),害我們無法完成今天的工作。從此之後,實驗室的人常把工作沒做完的過錯推給bug,就此流傳下來。演變至軟硬體分家的年代,通常程式設計師把程式中的意外錯誤,稱之為 bug,而除錯工作稱為debug。,54,6.5.2現代的系統程式,值得注意的是,即使通過編譯器檢查的程式也僅僅只代表著程式語法無誤,但不代表語意符合程式設計師的需求,因此程式設計師

44、常常會遇到一個惱人的狀況,當程式完成後並經由編譯確定語法無誤,但卻在執行時發生了不如預期狀況的現象。這種現象極可能是因為程式邏輯有誤或者思慮不夠周詳所致。此時,程式設計師可以藉由除錯器來追蹤程式執行的各個步驟,以便找出發生錯誤的程式位置。下圖是GDB除錯器的執行狀況,這是一個Linux環境的除錯器,通常搭配GCC編譯器一起運作。,使用除錯器GDB來除錯,55,6.5.2現代的系統程式,整合開發環境在之前的內容中,我們曾經已經提到,傳統的系統程式已經被納入在作業系統或整合開發環境中。其中被納入作業系統的為載入程式,因此當我們在檔案總管(檔案總管是Windows作業系統所附的一套軟體)中按兩下可執

45、行的程式檔時,該可執行檔就被載入到主記憶體中加以執行。而什麼又是整合開發環境呢?由於傳統的編譯程式開發流程有些繁複,程式設計師必須先用文書編輯器(例如:筆記本、Vim、PE2)先撰寫原始程式檔,然後再交由編譯器、連結器將原始程式檔編譯為具有除錯功能的可執行檔,最後經過除錯無誤後,才重新編譯連結為最終的可執行檔。通常,程式設計師大多無法一次就撰寫完全沒有錯誤的原始程式,因此這樣的開發流程顯得十分麻煩,必須常常在編輯器、編譯器、除錯器間切換許多次,才能夠得到最後正確的原始程式與執行檔。,56,6.5.2現代的系統程式,為了方便程式設計師設計程式,因此發展了許多的整合開發環境(Integrated

46、Development Environment;簡稱IDE),IDE將編輯器、編譯器、連結器、除錯器的功能整合為一,使得程式設計師在設計程式時,方便許多。下圖中的DEV C+就是一個IDE,它包含了編輯器、GCC編譯器、連結器以及除錯器的功能。,傳統開發編譯式程式的流程,57,6.5.2現代的系統程式,DEV C+整合開發環境,58,6.5.2現代的系統程式,整合開發環境與程式語言的區別程式語言與整合開發環境有著奇妙關係,有些整合開發環境與程式語言非常容易辨識,例如Dev C+是一個整合開發環境,它可以編輯、編譯由C+語法構成的原始程式。因此C+為一種程式語言GCC為C+語言的編譯器Dev C

47、+則為C+的整合開發環境的一種。由於視窗程式的流行,整合開發環境具備的功能也越來越多,它甚至包含了許多現成的程式碼與元件,供程式設計師使用。有時候,程式語言與整合開發環境也同時被推出,這也使得程式語言與整合開發環境的分際難以切割,例如Visual C+是微軟推出的一套整合開發環境,它能編譯由C+語法所撰寫的程式但Visual Basic也是由微軟推出的一套整合開發環境,它能編譯由Visual Basic語法所撰寫的程式,因此Visual Basic可以說是一種程式語言,也可以說是一套整合開發環境。,59,6.5.2現代的系統程式,整合開發環境與程式語言的區別程式語言與整合開發環境有著奇妙關係,

48、有些整合開發環境與程式語言非常容易辨識,例如Dev C+是一個整合開發環境,它可以編輯、編譯由C+語法構成的原始程式。因此C+為一種程式語言、GCC為C+語言的編譯器、Dev C+則為C+的整合開發環境的一種。由於視窗程式的流程,整合開發環境具備的功能也越來越多,它甚至包含了許多現成的程式碼與元件,供程式設計師使用。有時候,程式語言與整合開發環境也同時被推出,這也使得程式語言與整合開發環境的分際難以切割,例如Visual C+是微軟推出的一套整合開發環境,它能編譯由C+語法所撰寫的程式;但Visual Basic也是由微軟推出的一套整合開發環境,它能編譯由Visual Basic語法所撰寫的程式,因此Visual Basic可以說是一種程式語言,也可以說是一套整合開發環境。,60,重點回顧,本章習題,61,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号