《软体介绍》PPT课件.ppt_第1页
《软体介绍》PPT课件.ppt_第2页
《软体介绍》PPT课件.ppt_第3页
《软体介绍》PPT课件.ppt_第4页
《软体介绍》PPT课件.ppt_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 第六章軟體介紹 電腦光有硬體是無法運作的 真的要讓電腦解決我們的問題 還需要軟體的配合 在本章中 我們將建立對軟體的正確觀念 以及介紹各式各樣的軟體 2 第六章軟體介紹 我們需要透過軟體指揮電腦硬體來完成我們指定的工作 而什麼是 軟體 呢 軟體 其實是一種抽象化的名詞 它必須以某種排列方式附著於某個硬體之上 例如 附著於記憶體 硬碟 光碟片中 軟體 的功能則是告知電腦該去做什麼或提供電腦所需要的資料來源 在本章中 首先我們將從軟體的目的 軟體的組成 開始介紹到底 軟體 是什麼東西 進而介紹軟體的種類以及幾種常見的系統軟體 3 大綱 6 1什麼是軟體6 1 1軟體的目的6 1 2軟體的種類6 1 3軟體與韌體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軟體的目的 科技起始於人性 發明電腦的主要目的是為了幫助人類解決問題 然而單靠電腦硬體是無法運作的 就如同是人光有身體的各個組織成分 但大腦無法運作 就只是個軀殼 我們必須透過大腦的指示 才能夠指揮身體的各種器官來完成某些工作 例如 拿東西 拉抽屜 走路 跑步 吃飯等等 電腦的運作也是如此 要讓電腦硬體產生運作 就必須搭配 軟體 簡單的說 軟體 的最主要目的在於讓人們操控電腦硬體來完成工作 軟體的種類有很多 而各種軟體雖然都是為了解決 讓人們操控電腦硬體來完成工作 而發展的 但卻各有不同的設計目的 指揮電腦硬體最底層軟體的根本功能必須能夠指揮電腦硬體 這類軟體必須負責協調與控制各個硬體元件的執行動作 並且協調不同軟體共用電腦硬體資源時的溝通與控制 提供此功能的軟體 我們稱之為 系統軟體 6 3節將對系統軟體有更深入的說明 做為使用者介面使用者必須能夠透過軟體命令電腦硬體執行指定的工作 而電腦硬體執行完畢後 也必須透過軟體才能將執行結果以各類方式反應給使用者 例如顯示於螢幕上 從印表機列印出來 儲存於檔案內 6 6 1 1軟體的目的 做為其他軟體間的溝通橋樑某些固定執行的工作也可以發展為軟體 此類軟體並不負責與使用者接觸的介面 也不負責最底層的硬體操作 我們可以將這類軟體看做是中介性質的軟體 由於未提供使用者介面 因此只能自動執行或做為其他軟體之呼叫對象之用 此類軟體大多作為伺服器之用 或做為程式的函數庫之用 使用者 軟體 硬體關係圖 軟體的目的 7 6 1 2軟體的種類 軟體其實指的就是程式 但廣義的軟體應可區分為資料與程式兩大類 程式是一連串的指令 正如同電子辭典中的搜尋單字功能 就必須透過一個搜尋程式來達成而電子辭典中的所有單字則為資料換句話說 即使程式相同 但若提供的資料不同 則所提供的服務也就不同 目前大多數的軟體都包含了程式 Program 與資料 data 兩部分正如同購買電子辭典時 也同時購買了搜尋程式與基礎的單字詞庫資料通常可以分別購買 例如我們可以擴充電子辭典的詞庫 音樂CD正是標準的資料軟體 軟體的資料可稱為數位內容 它必須透過撥放程式才能完成播放音樂的目的 8 6 1 3軟體與韌體 有時候 不僅資料可以擴充 程式也可以擴充 尤其這正是電腦定義的最重要元素之一 因此我們藉由安裝不同的程式 使得電腦具有更多的功能 有些微控制器 Micro controller 系統則不一定具有擴充功能 例如早期的電子辭典 手機等等 明顯地 它仍然有一些程式在內部運作 但我們卻無法安裝新的程式 這是因為這些程式與資料都被燒錄在唯讀性記憶體 ROM 中 因此無法修改記憶體中的內容 這類的程式則稱之為韌體程式例如電腦中的BIOS就是一種韌體 Firmware 電腦具有擴充軟體的特性 我們可以藉由外部儲存媒體或網路 將軟體安裝於電腦系統中 並於執行時載入主記憶體執行而目前較新穎的電子辭典或手機 則提供了插卡功能 例如插入Flash卡 以擴充其功能 9 6 2軟體的分類 軟體 專指程式而言 可以依照不同的角度來加以分類 在不同的分類中 每個軟體所扮演的角色也有所不同 在本節中 我們將分別加以介紹 10 6 2 1依執行與設計分類 依照執行與設計 我們可以將軟體區分為系統軟體 SystemSoftware 與應用軟體 ApplicationSoftware 兩大類 系統軟體系統軟體又分為兩大類 作業系統 與 系統程式 作業系統提供了其他程式執行的環境 因此較接近硬體底層的低階程式 都必須包含在作業系統的範圍內 以便管理與控制電腦硬體及周邊設備 而系統程式則是程式開發的工具 例如編輯程式碼的編輯器 翻譯程式碼的組譯器 編譯器與直譯器 連結目的碼的連結器 載入程式碼的載入器等等 為了提昇開發程式的效率 因此有許多廠商也將這些系統程式整合在一起 變成一套開發程式專用的軟體 也就是所謂的整合式開發環境 IDE 例如VisualC VisualBasic BorlandC Builder Delphi等等都是整合式開發環境的一種 分別提供了使用不同程式語言來開發程式的環境 11 6 2 1依執行與設計分類 所有的程式都必須透過程式開發工具來開發 然後在作業系統提供的環境中執行 我們將在下一節中分別加以介紹 並於下一章詳細介紹作業系統的原理與種類 系統軟體與應用軟體關係圖 12 應用軟體應用軟體是架構在系統軟體之上 依據某種特殊需求而開發出來的軟體 例如 Office 帳務系統 電腦遊戲等等 我們可以依照本身的需求 使用特定的應用軟體來完成工作 在第九章中 我們將介紹幾種比較常見的應用軟體 6 2 1依執行與設計分類 13 6 2 2依使用對象分類 軟體在開發時 依照使用對象可以分類為 通用型 與 專屬型 兩大類 通用型軟體此類軟體的使用者為一般電腦使用者 功能比較屬於多數人常見的需求 而不是針對某人 某個組織量身訂作例如辦公室所使用的文書處理軟體 收發電子郵件軟體 網路瀏覽器 影像處理軟體等等都是通用型軟體 對於系統軟體而言 所有的系統軟體都屬於通用型軟體因為系統程式的功能為開發程式 其對象為所有的程式設計師 作業系統的主要功能 專指作業系統核心 在於執行程式 其對象為所有的電腦使用者 因此 一般將軟體區分為通用型與專屬型 大多指的是應用軟體的分類 14 6 2 2依使用對象分類 通用型應用軟體又稱為水平應用軟體 HorizontalSoftware 這類軟體通常可以隨時購買 即刻使用 而不需要經過訂製 訂製包含了需求分析與設計等特殊需求 此類軟體是由軟體開發公司根據一般人的普遍需求所發展 以提高使用者的工作效率 讓使用者使用電腦時更加便利 一般開發此類程式的大多為國際知名廠商 雖然開發水平應用軟體的成本較高 需要較多人員參與設計 但因使用者眾 因此售價較低 銷售量較大國內廠商除少數知名廠商 如趨勢 友立 之外 大多將業務重點放在開發專屬型應用軟體 15 6 2 2依使用對象分類 專屬型軟體此類軟體是針對特殊需求而專門訂製的軟體 各家公司通常對於這些需求有些不同 所以無法或很難設計出一套一體適用的軟體 此類軟體通常是為了解決公司內部的作業流程 公司與公司的業務交易 公司與客戶的業務交易等等的需求換句話說 這類軟體通常是業務資訊化的推手 此類軟體也稱為垂直應用軟體 VerticalSoftware 因為它常常必須整合企業內部許多業務的處理流程例如會計系統 生產排程系統 企業資源整合系統 進銷存系統等等都屬於此類系統 此類系統由於其特殊性 因此需要針對需求進行特別的規劃及完整的開發過程 因此價格非常昂貴 但也較無盜版等問題 16 垂直應用軟體容易受到各地的文字 法規 文化 習慣等自然市場的區隔屏障 反而不容易受到技術變動的影響 發展此類系統通常需要強有力的領域知識 domainknowledge 做為後盾 因此不易被取代 為了更有效率的開發此類系統 通常會先發展此類系統的一般性雛形 當客戶願意購買時 再針對客戶的特殊需求 進行客製化 Customize 的修正及補強動作 若市場發生變化 一般性雛形也可能擴充為通用型軟體 6 2 2依使用對象分類 17 6 2 3依網路分類 由於網路的發達 一種新的分類也隨之產生 我們可以將軟體區分為 網路型軟體 單機型軟體 混合型軟體 網路型軟體此類軟體顧名思義必須要在網路連線的狀態中 才具有意義例如眾多的線上遊戲 On LineGame 即是一例 若使用者未能接通網路 則將軟體放置於個人電腦中將形同垃圾另一類常見的為電子郵件軟體 若電腦無法連接網路 則充其量電子郵件軟體只能做為記事等用途更有甚者 如網頁型電子郵件WebMail 使用者根本無法在網路未接通時使用該軟體 由於目前大多數的網路結構都屬於主從式架構 Client ServerArchitecture 因此網路型軟體又可分為伺服器軟體與客戶端軟體兩大類 常見的網頁伺服器如IIS Apache等即為伺服器軟體瀏覽器則為客戶端軟體 對於一般使用者而言 大多操作客戶端軟體對伺服器提出服務需求 而伺服器軟體會將需求加以執行 並將結果回傳給客戶端軟體 18 6 2 3依網路分類 單機型軟體單機型軟體不需要考慮網路是否處於連接狀態 網路的連接與否 並不會增加單機型軟體所提供的服務 單機型軟體的使用資源僅限於安裝該軟體的電腦 例如 磁碟重組工具 個人版遊戲軟體踩地雷等都屬於單機型軟體 混合型軟體混合型軟體大概是目前數量最多的軟體 此類軟體在網路未接通時 可以扮演單機型軟體的功能 而在網路連線的狀態下 也具有網路型軟體的功能 例如瀏覽器就屬於此種類型 瀏覽器不但可以讀取本地端電腦的HTML網頁 也可以讀取遠端伺服器的HTML網頁 此外 目前大多數的伺服器等級的作業系統都屬於混合性軟體 也就是具有單機操作與網路操作的功能 19 6 3系統軟體 系統軟體分為兩大類 一類為作業系統 另一類為系統程式 更詳細地說 系統軟體應該指的是 作業系統的核心 與 系統程式及整合開發環境 作業系統核心 的功能為直接管理與控制電腦硬體及周邊設備 以提供其他程式執行的環境 系統程式及整合開發環境 的用途則為提供程式設計師開發程式的環境 作業系統 OperatingSystem 簡稱OS 是介於電腦硬體與應用軟體之間的橋樑 負責所有硬體資源的操作細節 同時負責協調各個程式的資源配置 所有的程式都必須在作業系統的控管下來執行 作業系統負責分配CPU時間 記憶體以及其他周邊設備給這些程式 不過目前所流行的眾多作業系統已經不僅提供上述功能 它甚至還提供了瀏覽器 磁碟管理工具 伺服器等等的其他程式 因此 上述的基本功能 嚴格說起來 應該稱之為作業系統核心 OSkernel 也只有作業系統核心才屬於系統軟體的一部份而其他由作業系統附帶提供的軟體則應該歸類於應用軟體的範疇 20 6 3系統軟體 目前常見的作業系統有Windows Linux Unix Mac等等 我們將在第八章中 詳細說明作業系統的原理以及負責的幾項重要資源管理 WindowsVista作業系統的使用介面 21 6 4軟體與檔案 軟體其實是概括性的名詞 它是由程式及資料所組成 資料或程式必須以 檔案形式 存放在輔助儲存體 例如硬碟 中 並於執行時載入到主記憶體執行 檔案是存放資料或程式的單位 但檔案在磁碟中並非雜亂無章的存放 而是透過檔案系統來管理 在本節中 我們將介紹常見的樹狀檔案系統以及各類型常見的檔案 22 6 4 1檔案系統 資料或程式都是以檔案 file 型式儲存在次要儲存裝置 例如磁碟 光碟等 以便於在電力喪失的狀況下仍舊能夠被保存下來 在電腦的儲存裝置中 存在極大量的檔案數目 若不加以分類整理 將難以管理與搜尋 一般來說 檔案的儲存是階層式的架構 使用者可以依照檔案的性質及功能加以分類 形成許多的目錄 directory 或資料夾 folder 目錄是一種階層式結構 也就是說 目錄下仍舊可以包含有子目錄 subdirectory 而最上層的目錄則稱之為根目錄 rootdirectory 除了根目錄之外 每一個目錄都有唯一的父目錄 Parentdirectory 換句話說 所有的目錄將形成階層式的樹狀目錄 treedirectory 如圖6 7 6 8所示 而任何一個檔案都將位於其中的一個目錄 23 6 4 1檔案系統 Linux作業系統的樹狀目錄結構 Windows作業系統的檔案總管可以觀察樹狀目錄結構 24 6 4 1檔案系統 檔案系統檔案與目錄的存放方式由檔案系統 FileSystem 所控制 例如使用者以完整路徑及檔案名稱存取檔案時 例如C DocumentsandSettings Administrator MyDocuments homework1 doc 檔案系統將會找出檔案儲存在磁碟的哪個位置 進而存取該檔案的資料 不同的作業系統採用的檔案系統也不相同DOS的檔案系統為FAT fileallocationtable Windows2000的檔案系統為FAT FAT32或NTFSLinux的檔案系統為linuxext2MacOS的檔案系統為HFS hierarchicalfilesystem 不同的作業系統之間可能無法立即存取其他檔案系統的檔案 不過也可以藉由一些特殊程式達到此項功能 25 6 4 1檔案系統 檔案名稱檔案名稱分為兩大部分 主檔名與副檔名 中間以 做為間隔符號 當 不只一個時 則以最後出現的 做為間隔符號 主檔名通常是用來代表檔案內容的名稱副檔名 又稱為附屬檔名或延伸檔名 則用來代表檔案類型例如 homework txt的主檔名homework 代表檔案內容可能是家庭作業 而txt則是純文字檔 可以使用記事本 WordPad Word UltraEdit等軟體開啟 檔名並非毫無限制在以往的DOS作業系統中 主檔名不得超過8個字元 副檔名不得超過3個字元 並且只能夠使用 英文字母 數字 及 來命名 而在Windows95以後的視窗作業系統 則允許主檔名的長度可達255個字元 並且允許使用 空白字元 中文字等特殊字元來命名一般建議盡量使用 英文字母 數字 及 等來命名以避免檔案需要在網路傳輸時 另一端的作業系統不支援的情況發生 26 6 4 1檔案系統 副檔名的種類隨著所安裝的軟體種類而有所增減 在Windows中 若您已經安裝某些軟體後 在檔案總管中開啟這些特殊副檔名的檔案後 將會自動開啟對應的軟體 而管理副檔名的對應程式則位於檔案總管 WindowsXP 或控制台 WindowsVista 中 如圖 WindowsXP執行檔案總管的 工具 資料夾選項 指令 WindowsVista執行開始功能表的 控制台 預設程式 設定關聯 指令 可以開啟管理副檔名的程式 27 28 29 30 31 6 4 1檔案系統 表達檔案在磁碟的邏輯位址是透過檔案路徑來完成的 而檔案路徑又分為絕對路徑 absolutepath 與相對路徑 relativepath 絕對路徑是由根目錄開始計算的完整路徑就Windows作業系統而言 絕對路徑包含了 磁碟機 所有經過的目錄 檔案名稱 等三大部分 其中以 做為目錄與目錄及目錄與檔案的區隔 如下範例 範例1 Windows的絕對路徑C DocumentsandSettings Administrator MyDocuments homework1 txt說明 C 是磁碟機代號 之後必須接著 做為區隔 DocumentsandSettings 是C磁碟機下的一個目錄 Administrator 是 DocumentsandSettings 下的子目錄 MyDocuments 是 Administrator 下的子目錄 目錄間以 做區隔 homework1 txt 是檔案名稱 位於 MyDocuments 目錄內 目錄與檔案名稱間以 做為區隔 32 6 4 1檔案系統 UNIX Linux的絕對路徑和Windows差不多 但UNIX Linux沒有磁碟機代號 而根目錄的表示法就是 並且目錄與目錄之間則以 做為區隔 如下範例 範例2 UNIX Linux的絕對路徑 home jhchen homework txt說明 第一個 代表是根目錄 home 是根目錄下的一個子目錄 jhchen 是 home 下的子目錄 目錄間以 做為區隔 homework txt 是檔案名稱 位於 jhchen 目錄內 目錄與檔案名稱間以 做為區隔 33 6 4 1檔案系統 相對路徑是由所在目錄開始往上或往下計算所得到的路徑要表達目前所在目錄可以使用 來代表要表達父目錄則必須使用 來表達 子目錄則為 Windows 或 UNIX Linux 如下範例 範例3 Windows的相對路徑假設目前位於C MyData Word目錄 則要存取C MyData Excel hw xls可以使用 Excel hw xls 來代表 如下圖示意 34 6 4 1檔案系統 對UNIX Linux而言 仍舊是用來代表目前所在目錄 也是用來表達父目錄 子目錄則為 此外 在UNIX Linux中 欲表達登入者的起始目錄 還可以使用 符號 35 6 4 2軟體的組織成分 軟體以檔案形式存放於輔助記憶體中 而其中一類檔案稱之為可執行檔 可執行檔 ExecutableFile 是一種可以直接在作業系統環境中執行的程式檔案 其中的內容則為許多的指令以下將就 指令 程式 軟體 系統 之間的關係加以說明 指令指令 instruction 是驅動電腦硬體最基本的命令 例如 命令ALU執行加法 減法 讀取磁碟等等 它具有特殊的格式 對電腦硬體而言 電腦只能夠以二進制方式來表達所有的資料 包含指令 因此 真正控制電腦的指令其實是一些特定格式的二進制碼 稱之為機器碼 machinecode 並且根據電腦硬體結構的不同 每一種電腦的機器碼格式也大不相同 指令集 每一種電腦提供的指令都不相同 而一台電腦提供各式各樣的指令合起來就稱之為該電腦所提供的指令集 instructionset 因此 每一種電腦提供的指令集也不一定相同 根據指令特性 又可以將指令集分為RISC ReducedInstructionSetComputing 精簡指令集 與CISC ComplexInstructionSetComputing 複雜指令集 兩種電腦結構 RISC的單一個指令大多只能夠完成非常簡單的一項工作 而CISC的單一指令則可以完成較複雜的工作 36 6 4 2軟體的組織成分 程式正如同上述所言 單一個指令只能夠完成單一項簡單的工作 RISC的指令所能完成的工作更簡單 因此 如果想要完成某一項特定工作 則必須由更多的指令共同完成 而程式 program 就是一連串指令的集合 用以完成某一項特定工作 舉例來說 如果要完成兩個數的相加 則一個指令就可以完成 但如果要計算全班學生的平均成績 就必須透過程式來完成 這個程式可能包含加法指令 迴圈跳躍指令 除法指令等等 37 6 4 2軟體的組織成分 軟體軟體 Software 和程式的分界線並不那麼明顯 但一般所稱的軟體大多是由一個以上的程式所組成 可以針對某項工作需求提供較完整的解答例如計算全班學生的平均成績如果是一個程式 那麼計算 統計 繪曲線圖等等的程式則可以歸納在試算表軟體之內 而試算表軟體又可以規範在辦公室軟體之內正如同Microsoft出版的Office套裝軟體中 包含Excel試算表軟體 而Excel試算表軟體可以進行各種資料的加總 統計 繪曲線圖 柱狀圖等功能 軟體是由 程式 所組成 這是毫無疑問的 但有些人也將 資料 視為軟體的一個構成項目舉例來說 一個媒體播放軟體可以用來播放VCD電影 然而如果沒有VCD電影 該軟體將毫無用處 而VCD電影是一種資料 雖然它不具備驅動電腦硬體的特性 但仍是一種抽象的排列組合 不同的0 1排列代表著不同的電影 而只有媒體播放軟體能夠正確的辨識這些0 1排列的資料 並將之轉換為我們能夠看到的影片 因此廣義的軟體應該包含程式檔與資料檔兩大部分 38 6 4 2軟體的組織成分 系統系統 System 與軟體的分界更不明顯 更明確地說 系統可以稱之軟體 但軟體卻不一定能夠稱之為系統 系統的功能是非常明確且龐大的 它包含了各種不同的軟體 甚至還可能包含了某些硬體 舉例來說 資料庫管理系統可能包含了資料庫軟體 程式介面 備份軟體 甚至連硬碟也可以規劃其內 系統 軟體 程式 指令階層圖 39 6 4 2軟體的組織成分 一般來說 程式依據其目的 由硬體製造商或軟體公司來撰寫例如製造掃描器的公司會提供掃描器的驅動程式軟體會計軟體則大多由軟體公司開發 開發程式的人員 我們稱之為程式設計師 programmer 由於直接撰寫機器碼對於大部分的人來說是非常困難的 因此幾乎所有的程式設計師都必須依靠系統程式的程式開發工具 developmenttools 來完成程式的撰寫工作 在程式開發工具的輔助下 程式設計師可以藉由指令來控制電腦硬體的運作 以便完成使用者要求的特定工作 對純粹資料所形成的軟體 數位內容 而言 製造者稱為數位內容提供者舉例來說 製作VCD電影及製造CD音樂的人員都可以稱之為數位內容提供者一般我們也會將數位內容提供者歸類於電腦使用者之中 只不過這些使用者的工作比較固定 並且透過各種特殊功能的軟體來完成資料 如電影 CD 文件 的製作 40 6 5系統程式 系統程式 Systemprogram 主要是用來提供開發程式及執行過程中所需要用到的所有工具 事實上 它的許多功能其實已經被結合在作業系統或整合式開發環境中 系統程式幾乎都是 與機器相關 machine dependent 的程式什麼是 與機器相關 的程式呢 電腦的運作主要是依靠CPU與主記憶體之間的資料轉換來完成 所有要被執行的程式都必須被載入到主記憶體 然後才能夠被執行 因為指令只能夠在CPU的暫存器與主記憶體之間搬移資料 或透過ALU進行算術邏輯運算 因此要控制程式的執行 必須能夠控制記憶體 暫存器或其他硬體 而這牽扯到硬體的設計結構 每一種電腦或每一種CPU的控制方法都不相同 例如 PC一般使用Intel相容的CPU晶片 x86指令集 而早期Mac則使用Motorola出產的68xxx晶片 因此 這些控制硬體的程式就必須按照電腦結構來設計 故稱之為 與機器相關 的程式 系統程式就是其中一例 41 6 5 1傳統的系統程式 系統程式的行為又可以分為下列五大類 此五類動作分別交由五種程式來執行 其目的都是為了要控制各種程式的發展與執行 載入程式 Loader 在前面提到 可執行檔是一種程式 其內容為可以供電腦辨識的機器碼 而載入程式負責將可執行檔載入到記憶體的指定位址 值得一提的是 程式以二進位碼型式存在於輔助記憶體中 這些程式是經過編譯或轉譯之後的目的碼 而載入程式的功能就是 1 將這些目的碼搬移到記憶體的指定位址 並且 2 將執行權轉移到這些目的碼的開頭 然後 3 開始執行該程式 現代化的載入程式一般都已經內建於作業系統中當您在MicrosoftWindows檔案總管中 在某個應用程式上面按兩下之後 Windows作業系統就會啟動內含的載入程式 將指定的應用程式載入到記憶體 並開始執行它 作業系統也是一個程式 在開機之前也是存放在硬碟中 那麼作業系統又是如何被載入到記憶體的呢 這就必須說到另外一種特殊的載入程式 啟動載入程式 BootstrapLoader 啟動載入程式是一個非常小的程式 一般會包含在BIOS之內 以便於在一開機之後載入管理電腦系統資源的作業系統 42 6 5 1傳統的系統程式 連結程式 Linker 有的時候 目的碼還需要結合其他目的碼才能夠完成工作 而這些目的碼可能是已經事先撰寫完成 放置於程式庫 Library 供程式設計師使用的程式模組 要將這些程式模組的目的碼連結起來 就必須透過連結程式 Linker 經過連結後的程式會變得比較大 然後再一起載入到記憶體被執行 若將連結程式詳細的分類 又可以分為連結編輯器 LinkingEditor 及連結載入器 LinkingLoader 兩種 連結編輯器只會將目的碼完成連結的動作 然後還需要透過載入器進行重新定位以及載入的動作後 程式才會被執行 連結載入器不但具有連結的功能 還具備載入器的功能 也就是當目的碼完成所需要的連結後 將立刻被載入到記憶體中被執行 43 6 5 1傳統的系統程式 連結編輯器的處理流程 連結載入器的處理流程 44 6 5 1傳統的系統程式 重新定址 Relocation 功能對於現代的電腦系統而言 程式目的碼裡面所標註程式位址並不代表程式執行時真實的記憶體位址 這是為了讓系統具備更多的彈性可以執行各式各樣程式的緣故 對於目的碼內的位址而言 其實規範的都是一種相對位址 在目的碼被載入到記憶體時 這些位址應該加上目的碼在記憶體的起始位址 而這個動作稱之為重新定址 Relocation 舉例來說 目的碼內有兩個位址分別是0010及0018 而載入程式若將程式載入到1000的起始位址 則這兩個位址將被修正為1010及1018由於所有的程式位址都會被修正 因此程式仍然可以正確地被執行 下圖是目的碼被執行之前的過程 包含了連結 載入 重新定址等步驟 45 6 5 1傳統的系統程式 連結 載入 重新定址 46 6 5 1傳統的系統程式 語言轉譯程式在前面提及 執行程式是將可執行檔載入記憶體中執行 而可執行檔又是由目的碼檔案經由連結而成 至於目的碼檔案又是如何產生的呢 目的碼其實也是一種二進位檔案 除了非常早期的電腦系統外 程式設計師一般都不會直接撰寫機器碼或目的碼 而是使用其他程式語言先撰寫好原始程式 Sourcecode 再透過程式發展工具 語言轉譯程式 的轉換 將原始程式轉換成機器碼 machinecode 或目的碼 objectcode 47 6 5 1傳統的系統程式 語言轉譯程式 也不只一種 我們可以依據轉譯程式的特性 將之區分為下列三種語言轉譯程式 1 組譯器 Assembler 組譯器 Assembler 可以將組合語言程式 Assemblylanguageprogram 轉譯為目的碼 objectcode 組合語言是最接近機器碼的低階語言 由於機器碼的01串列不容易被人辨識與記憶 因此組合語言使用運算子與運算元來表示一連串的0 1組合 而這些運算子則使用助憶碼以利人類的記憶與理解 這些助憶碼一般都是某些英文的簡寫 例如 使用INC來代表Increment 累加 不同的CPU的組合語言也不相同 因此 組譯器也不相同 由於組合語言與機器碼一對一的特性 因此開發組譯器相對於開發另外兩類語言轉譯程式而言 是比較簡單的 48 6 5 1傳統的系統程式 2 編譯器 Compiler 編譯器採用整批作業 Batch 方式來處理程式轉譯的工作 換句話說 當我們將程式設計完畢並交由編譯器轉譯之後 編譯器會將翻譯結果存成一個目的檔 objectfile 而這個目的檔可經由連結其他目的檔及程式庫之後形成可執行檔 executefile 並由電腦直接執行 常見使用編譯器的語言有C C Pascal ObjectPascal VisualBasic 須編譯 等等 3 直譯器 Interpreter 直譯器與編譯器處理程式的步驟不同 當我們使用直譯式語言撰寫程式完畢並使用直譯器來翻譯程式的過程中 不需要產生目的檔 直譯器會將程式一行一行的讀入 逐行翻譯 並送交由電腦執行 因此 每一次要執行直譯式語言程式時 都必須啟動直譯器來重新翻譯程式 也正因為如此 所以當程式中有錯誤發生時 前面沒有錯誤的程式仍會被執行 並且停留在錯誤的那一行程式 因此適合用於程式開發過程 這一點則與編譯式語言完全不同 因此 直譯器具有監督執行狀況的效果 早期的Basic以及常見的JavaScript VBScript Python等都是屬於直譯式語言 49 6 5 1傳統的系統程式 編譯式語言與直譯式語言 在前面提過直譯式語言與編譯式語言 但事實上這並非是程式語言的分類 例如有些書籍會將C語言稱為編譯式語言 但這並非正確的說法 歷史也曾經出現過許多特定用途的C語言直譯器 如Stanford的ThetisCInterpreter 之所以許多人將C語言認為是編譯式語言 是因為大多數的程式設計師都是透過C語言的編譯器來翻譯程式 因此 最正確的說法是 原始程式可以透過編譯器來翻譯 也可以透過直譯器來翻譯並執行 50 6 5 1傳統的系統程式 組譯器 編譯器 直譯器的處理流程 51 6 5 1傳統的系統程式 編輯程式 Editor 程式設計師實際撰寫的程式稱之為原始程式碼 而編輯原始程式碼的環境稱之為編輯程式 Editor 又稱編輯器 程式設計師在編輯器中編輯原始程式碼 然後將原始程式碼儲存為原始程式檔 原始程式檔是一種純文字檔 因此許多軟體都可以充當編輯器 例如Linux Unix的Vi DOS的PE2 3 Windows的記事本等等 也正因為一般的文書處理軟體或純文字編輯軟體就可以充當編輯器 因此編輯器是否需要歸類於系統程式或系統軟體中 則各有其見解上的不同 換句話說 我們也可以將具有編輯器功能的軟體歸類於應用軟體 52 在介紹現代的系統程式之前 我們先回顧傳統透過編譯器翻譯程式的流程 首先程式設計師透過編輯器將原始程式碼編譯完成 並將之透過編譯器翻譯為目的碼 然後由連結程式連結為可執行檔 最後由載入程式將程式載入主記憶體中執行 其流程簡化如下圖 6 5 2現代的系統程式 程式開發與轉譯過程 53 6 5 2現代的系統程式 在這個傳統的開發程式流程中 由於程式可能不會一次就成功開發完成 而仍舊存在許多問題 這些問題稱之為程式的臭蟲 bug 此時程式設計師必須找出發生錯誤的地方 重新修改原始程式 並重複進行編譯 連結 執行等步驟 臭蟲 在早期使用繼電器做為電腦元件的1945年9月9日 MarkII電腦發生了一個錯誤 後來GraceHooper發現是一隻蛾死在繼電器裡面 導致電腦當機 當時他用髮夾把那隻蛾弄出來並貼在管理日誌上 旁邊註明 就是這個臭蟲 bug 害我們無法完成今天的工作 從此之後 實驗室的人常把工作沒做完的過錯推給bug 就此流傳下來 演變至軟硬體分家的年代 通常程式設計師把程式中的意外錯誤 稱之為bug 而除錯工作稱為debug 54 6 5 2現代的系統程式 值得注意的是 即使通過編譯器檢查的程式也僅僅只代表著程式語法無誤 但不代表語意符合程式設計師的需求 因此程式設計師常常會遇到一個惱人的狀況 當程式完成後並經由編譯確定語法無誤 但卻在執行時發生了不如預期狀況的現象 這種現象極可能是因為程式邏輯有誤或者思慮不夠周詳所致 此時 程式設計師可以藉由除錯器來追蹤程式執行的各個步

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论