當前位置:首頁 » 服務存儲 » 存儲體系的移植性
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

存儲體系的移植性

發布時間: 2023-06-19 09:30:40

㈠ 什麼是存儲過程有什麼優點

存儲過程是事先經過編譯並存儲在資料庫中的一段sql語句的集合,調用存儲過程可以簡化應用開發人員的很多工作,減少數據在資料庫和應用伺服器之間的傳輸,對於提高數據處理的效率是有好處的。

優點:

1、重復使用:存儲過程可以重復使用,從而可以減少資料庫開發人員的工作量。

2、減少網路流量:存儲過程位於伺服器上,調用的時候只需要傳遞存儲過程的名稱以及參數就可以了,因此降低了網路傳輸的數據量。

3、安全性:參數化的存儲過程可以防止SQL注入式攻擊,而且可以將Grant、Deny以及Revoke許可權應用於存儲過程。

(1)存儲體系的移植性擴展閱讀

存儲過程的缺點:

1、更改比較繁瑣:如果更改范圍大到需要對輸入存儲過程的參數進行更改,或者要更改由其返回的數據,則仍需要更新程序集中的代碼以添加參數、更新 GetValue() 調用,等等,這時候估計比較繁瑣。

2、可移植性差:由於存儲過程將應用程序綁定到 SQL Server,因此使用存儲過程封裝業務邏輯將限制應用程序的可移植性。如果應用程序的可移植性在您的環境中非常重要,則需要將業務邏輯封裝在不特定於 RDBMS 的中間層中。

㈡ 在數據存儲管理方面,大家了解的比較智能化的管理系統都有哪些

資料庫管理系統(database management system)是一種操縱和管理資料庫的大型軟體,是用於建立、使用和維護資料庫,簡稱dbms。它對資料庫進行統一的管理和控制,以保證資料庫的安全性和完整性。用戶通過dbms訪問資料庫中的數據,資料庫管理員也通過dbms進行資料庫的維護工作。它提供多種功能,可使多個應用程序和用戶用不同的方法在同時或不同時刻去建立,修改和詢問資料庫。它使用戶能方便地定義和操縱數據,維護數據的安全性和完整性,以及進行多用戶下的並發控制和恢復資料庫。

按功能劃分,資料庫管理系統大致可分為6個部分:

(1)模式翻譯:提供數據定義語言(ddl)。用它書寫的資料庫模式被翻譯為內部表示。資料庫的邏輯結構、完整性約束和物理儲存結構保存在內部的數據字典中。資料庫的各種數據操作(如查找、修改、插入和刪除等)和資料庫的維護管理都是以資料庫模式為依據的。

(2)應用程序的編譯:把包含著訪問資料庫語句的應用程序,編譯成在dbms支持下可運行的目標程序。

(3)互動式查詢:提供易使用的互動式查詢語言,如sql。dbms負責執行查詢命令,並將查詢結果顯示在屏幕上。

(4)數據的組織與存取:提供數據在外圍儲存設備上的物理組織與存取方法。

⑸事務運行管理:提供事務運行管理及運行日誌,事務運行的安全性監控和數據完整性檢查,事務的並發控制及系統恢復等功能。

(6)資料庫的維護:為資料庫管理員提供軟體支持,包括數據安全控制、完整性保障、資料庫備份、資料庫重組以及性能監控等維護工具。

基於關系模型的資料庫管理系統已日臻完善,並已作為商品化軟體廣泛應用於各行各業。它在各戶伺服器結構的分布式多用戶環境中的應用,使資料庫系統的應用進一步擴展。隨著新型數據模型及數據管理的實現技術的推進,可以預期dbms軟體的性能還將更新和完善,應用領域也將進一步地拓寬。

它所提供的功能有以下幾項:
(1)數據定義功能。DBMS提供相應數據語言來定義(DDL)資料庫結構,它們是刻畫資料庫框架,並被保存在數據字典中。
(2)數據存取功能。DBMS提供數據操縱語言(DML),實現對資料庫數據的基本存取操作:檢索,插入,修改和刪除。
(3)資料庫運行管理功能。DBMS提供數據控制功能,即是數據的安全性、完整性和並發控制等對資料庫運行進行有效地控制和管理,以確保數據正確有效。
(4)資料庫的建立和維護功能。包括資料庫初始數據的裝入,資料庫的轉儲、恢復、重組織,系統性能監視、分析等功能。
(5)資料庫的傳輸。DBMS提供處理數據的傳輸,實現用戶程序與DBMS之間的通信,通常與操作系統協調完成。

著名資料庫管理系統

MS SQL
SYBASE
DB2
ORACLE
MySQL
ACCESS
VF

常見的資料庫管理系統

目前有許多資料庫產品,如Oracle、Sybase、Informix、Microsoft SQL Server、Microsoft Access、Visual FoxPro等產品各以自己特有的功能,在資料庫市場上佔有一席之地。下面簡要介紹幾種常用的資料庫管理系統。

Oracle
Oracle是一個最早商品化的關系型資料庫管理系統,也是應用廣泛、功能強大的資料庫管理系統。Oracle作為一個通用的資料庫管理系統,不僅具有完整的數據管理功能,還是一個分布式資料庫系統,支持各種分布式功能,特別是支持Internet應用。作為一個應用開發環境,Oracle提供了一套界面友好、功能齊全的資料庫開發工具。Oracle使用PL/SQL語言執行各種操作,具有可開放性、可移植性、可伸縮性等功能。特別是在Oracle 8i中,支持面向對象的功能,如支持類、方法、屬性等,使得Oracle 產品成為一種對象/關系型資料庫管理系統。

Microsoft SQL Server
Microsoft SQL Server是一種典型的關系型資料庫管理系統,可以在許多操作系統上運行,它使用Transact-SQL語言完成數據操作。由於Microsoft SQL Server是開放式的系統,其它系統可以與它進行完好的交互操作。目前最新版本的產品為Microsoft SQL Server 2000,它具有可靠性、可伸縮性、可用性、可管理性等特點,為用戶提供完整的資料庫解決方案。

Microsoft Office
作為Microsoft Office組件之一的Microsoft Access是在Windows環境下非常流行的桌面型資料庫管理系統。使用Microsoft Access無需編寫任何代碼,只需通過直觀的可視化操作就可以完成大部分數據管理任務。在Microsoft Access資料庫中,包括許多組成資料庫的基本要素。這些要素是存儲信息的表、顯示人機交互界面的窗體、有效檢索數據的查詢、信息輸出載體的報表、提高應用效率的宏、功能強大的模塊工具等。它不僅可以通過ODBC與其它資料庫相連,實現數據交換和共享,還可以與Word、Excel等辦公軟體進行數據交換和共享,並且通過對象鏈接與嵌入技術在資料庫中嵌入和鏈接聲音、圖像等多媒體數據。

資料庫管理系統選擇原則

選擇資料庫管理系統時應從以下幾個方面予以考慮:

(1) 構造資料庫的難易程度。
需要分析資料庫管理系統有沒有範式的要求,即是否必須按照系統所規定的數據模型分析現實世界,建立相應的模型;資料庫管理語句是否符合國際標准,符合國際標准則便於系統的維護、開發、移植;有沒有面向用戶的易用的開發工具;所支持的資料庫容量,資料庫的容量特性決定了資料庫管理系統的使用范圍。

(2) 程序開發的難易程度。
有無計算機輔助軟體工程工具CASE——計算機輔助軟體工程工具可以幫助開發者根據軟體工程的方法提供各開發階段的維護、編碼環境,便於復雜軟體的開發、維護。有無第四代語言的開發平台——第四代語言具有非過程語言的設計方法,用戶不需編寫復雜的過程性代碼,易學、易懂、易維護。有無面向對象的設計平台——面向對象的設計思想十分接近人類的邏輯思維方式,便於開發和維護。對多媒體數據類型的支持——多媒體數據需求是今後發展的趨勢,支持多媒體數據類型的資料庫管理系統必將減少應用程序的開發和維護工作。

(3) 資料庫管理系統的性能分析。
包括性能評估(響應時間、數據單位時間吞吐量)、性能監控(內外存使用情況、系統輸入/輸出速率、SQL語句的執行,資料庫元組控制)、性能管理(參數設定與調整)。

(4) 對分布式應用的支持。
包括數據透明與網路透明程度。數據透明是指用戶在應用中不需指出數據在網路中的什麼節點上,資料庫管理系統可以自動搜索網路,提取所需數據;網路透明是指用戶在應用中無需指出網路所採用的協議。資料庫管理系統自動將數據包轉換成相應的協議數據。

(5) 並行處理能力。
支持多CPU模式的系統(SMP,CLUSTER,MPP),負載的分配形式,並行處理的顆粒度、范圍。

(6) 可移植性和可括展性。
可移植性指垂直擴展和水平擴展能力。垂直擴展要求新平台能夠支持低版本的平台,資料庫客戶機/伺服器機制支持集中式管理模式,這樣保證用戶以前的投資和系統;水平擴展要求滿足硬體上的擴展,支持從單CPU模式轉換成多CPU並行機模式( SMP, CLUSTER, MPP)

(7) 數據完整性約束。
數據完整性指數據的正確性和一致性保護,包括實體完整性、參照完整性、復雜的事務規則。

(8) 並發控制功能。
對於分布式資料庫管理系統,並發控制功能是必不可少的。因為它面臨的是多任務分布環境,可能會有多個用戶點在同一時刻對同一數據進行讀或寫操作,為了保證數據的一致性,需要由資料庫管理系統的並發控制功能來完成。評價並發控制的標准應從下面幾方面加以考慮:

保證查詢結果一致性方法
數據鎖的顆粒度(數據鎖的控制范圍,表、頁、元組等)
數據鎖的升級管理功能
死鎖的檢測和解決方法

(9) 容錯能力。
異常情況下對數據的容錯處理。評價標准:硬體的容錯,有無磁碟鏡象處理功能軟體的容錯,有無軟體方法異常情況的容錯功能

(10) 安全性控制
包括安全保密的程度(帳戶管理、用戶許可權、網路安全控制、數據約束)

(11) 支持漢字處理能力
包括資料庫描述語言的漢字處理能力(表名、域名、數據)和資料庫開發工具對漢字的支持能力。

㈢ 深挖Kubernetes存儲為何如此難及其解決方案

以Kubernetes為代表的容器編排工具在應用開發部署領域起正發揮著顛覆性的變革作用。隨著微服務架構的發展,從開發人員的角度來看,應用邏輯架構與基礎設施架構之間開始解耦,這意味著開發者能夠將精力更多集中在軟體構建以及價值交付身上。

當管理Docker鏡像的時候,Kubernetes也讓實際應用變的十分便捷靈活。在利用Kubernetes進行容器架構的應用部署時,管理員們將在無需修改底層代碼的前提下將其部署在任何位置——包括公有雲、混合雲乃至私有雲。

雖然Kubernetes在擴展性、便攜性與管理性等方面的表現都相當給力,但截至目前,它仍然不支持存儲狀態。與之對應的是,如今的大多數應用都是有狀態的——換言之,要求在一定程度上配合外部存儲資源。

Kubernetes架構本身非常靈活的,能夠根據開發者的需求、規范以及實際負載情況,對容器進行隨意創建與撤銷。此外,Pod和容器還具有自我修復與復制能力。因此從本質上講,它們的生命周期普遍非常短暫。

但是,現有持久存儲解決方法無法支持動態的應用場景,而持久化存儲也無法滿足動態創建與撤銷的需求。

當我們需要將有狀態應用部署到其它基礎架構平台,或者另一家內部或混合雲供應商的環境中時,可移植性低下無疑將成為我們面臨的巨大挑戰。更具體地講,持久化存儲解決方案往往會鎖定於特定雲服務供應商,而無法靈活完成轉移。

另外,雲原生應用中的存儲機制也相當復雜、難於理解。Kubernetes中的不少存儲術語極易混淆,其中包含著復雜的含義與微妙的變化。再有,在原生Kubernetes、開源框架以及託管與付費服務之間還存在著諸多選項,這極大增加了開發人員在做出決定之前的考量與試驗成本。

以下是CNCF列出的雲原生存儲可選方案:

我們首先從最簡單的場景出發,即在Kubernetes當中部署一套資料庫。具體流程包括:選擇一套符合需求的資料庫,讓它在本地磁碟上運行,然後將其作為新的工作負載部署到集群當中。但是,由於資料庫中存在的一些固有屬性,這種方式往往無法帶來符合預期的效果。

容器本身是基於無狀態原則進行構建的,憑借這一天然屬性,我們才能如此輕松地啟動或撤銷容器環境。由於不存在需要保存及遷移的數據,集群也就不需要同磁碟讀寫這類密集型操作綁定在一起了。

但對於資料庫,其狀態必須隨時保存。如果以容器方式部署在集群當中的資料庫不需要進行遷移,或者不需要頻繁開關,那麼其基本屬性就相當於一種物理存儲設備。在理想情況下,使用數據的容器應該與該資料庫處於同一Pod當中。

當然,這並不是說將資料庫部署在容器中的作法不可取。在某些應用場景下,這樣的設計完全能夠滿足需求。舉例來說,在測試環境或者處理非生產級數據時,由於總體數據量很小,將資料庫納入集群完全沒有問題。但在實際生產中,開發人員往往需要仰仗於外部存儲機制。

Kubernetes到底是如何與存儲資源彼此通信的?其利用的是控制層介面。這些介面負責將Kubernetes與外部存儲相對接。接入Kubernetes的外部存儲解決方案被稱為「卷插件(Volume Plugins)」。正是有了卷插件的存在,存儲資源才得以抽象化並實現可移植性。

以前,卷插件一般由核心Kubernetes代碼庫進行構建、鏈接、編譯以及裝載。這樣就極大的限制了開發人員的發揮空間,同時也帶來了額外的維護開銷。因此,項目維護人員們決定在Kubernete的代碼庫上增加一些新的存儲功能。

隨著CSI以及Flexvolume的引入,卷插件如今可以在集群中直接部署,而完全無需更改代碼庫。

原生Kubernetes與存儲

持久卷是由管理員負責配置的存儲單元,它們獨立於任何單一Pod之外,因此不受Pod生命周期的影響。

存儲資源有兩種使用方式:靜態存儲與動態存儲。

實際上,靜態定義的持久卷並不能適應Kubernetes的可移植特性,因為存儲資源具有對環境的依賴性——例如AWS EBS或者GCE Persistent Disk。另外,手動綁定還需要根據不同供應商的存儲方案修改YAML文件。

在資源分配方面,靜態配置實際上也違背了Kubernetes的設計原則。後者的CPU與內存並非事先被分配好綁定在Pod或者容器上,而是以被動態形式進行分配。

通過簡單的說明,相信大家已經了解了原生Kubernetes對外部存儲資源的使用方式。當然,這里僅僅做出概括,實際使用場景中還有更多其它因素需要考量。

CSI——容器存儲介面

下面來看容器存儲介面(簡稱CSI)。CSI是由CNCF存儲工作組創建的統一標准,旨在定義一個標準的容器存儲介面,從而使存儲驅動程序能夠在任意容器架構下正常起效。

CSI規范目前已經在Kubernetes中得到普及,大量驅動插件被預先部署在Kubernetes集群內供開發人員使用。如此一來,我們就可以利用Kubernetes上的CSI卷來訪問與CSI兼容的開放存儲卷。

CSI的引入,意味著存儲資源能夠作為Kubernetes集群上的另一種工作負載實現容器化以及部署。

相關開源項目

目前,圍繞雲原生技術涌現出大量工具與項目。但作為生產場景中的一大突出問題,我們往往很難在雲原生架構中選擇最合適的開源項目。換言之,解決方案選項太多,反而令存儲需求變得更難解決。

我們再看一次CNCF列出的雲原生存儲的可選方案:

下面我會分享一下當下流行的存儲方案Ceph與Rook,還有Rancher開源的容器化分布式存儲Longhorn。

Ceph

Ceph是一種動態託管、橫向擴展的分布式存儲集群。Ceph面向存儲資源提供一種邏輯抽象機制,其設計理念包括無單點故障、自管理以及軟體定義等特性。Ceph可以面向同一套存儲集群分別提供塊存儲、對象存儲以及文件存儲的對應介面。

Ceph架構相當復雜的,其中使用到大量的底層技術,例如RADOS、librados、RADOSGW、RDB、CRUSH演算法,外加monitor、OSD以及MDS等功能性組件。這里我們先不談它的底層架構,關鍵在於Ceph屬於一種分布式存儲集群,這使得擴展更便利、能夠在不犧牲性能的前提下消除單點故障,且提供涵蓋對象存儲、塊存儲以及文件存儲的統一存儲體系。

Ceph架構圖

Rook

另一個有趣且頗具人氣的項目是Rook,這是一項旨在將Kubernetes與Ceph融合起來的技術方案。從本質上講,它將計算節點和存儲節點放進了同一個集群當中。

Rook是一種雲原生編排器,並對Kubernetes做出擴展。Rook允許用戶將Ceph放置在容器內,同時提供卷管理邏輯以立足Kubernetes之上實現Ceph的可靠運行。Rook還使本應由集群管理員操作的多種任務完成了自動化實現,其中包括部署、引導、配置、擴展以及負載均衡等等。

Rook自身不具備持久狀態,也不需要單獨管理。這,才是真正與Kubernetes設計原則相符的存儲資源管理方案。

Rook憑借著將Ceph與Kubernetes協同起來的強大能力而頗受歡迎,在GitHub上獲得近4000顆星,1600多萬次的下載,並吸引到100多名貢獻者,現已進入CNCF孵化階段。

Longhorn

Longhorn項目是Rancher Labs推出的開源的基於雲和容器部署的分布式塊存儲新方式。Longhorn遵循微服務的原則,利用容器將小型獨立組件構建為分布式塊存儲,並使用容器編排來協調這些組件,形成彈性分布式系統。

如今,基於雲和容器的部署規模日益擴大,分布式塊存儲系統也正變得越來越復雜,單個存儲控制器上的volume數量在不斷增加。2000年代初,存儲控制器上的volume數量只有幾十個,但現代雲環境卻需要數萬到數百萬的分布式塊存儲卷。存儲控制器變成了高度復雜的分布式系統。

Longhorn充分利用了近年來關於 如何編排大量的容器和虛擬機的核心技術 。例如,Longhorn並沒有構建一個可以擴展到100,000個volume的高度復雜的控制器,而是出於讓存儲控制器簡單輕便的考慮,創建了100,000個單獨的控制器。然後,我們可以利用像Kubernetes這樣的最先進的編排系統來調度這些獨立的控制器,共享一組磁碟中的資源,協同工作,形成一個彈性的分布式塊存儲系統。

Longhorn基於微服務的設計還有很多其他優勢。因為每個volume都有自己的控制器,在升級每個volume的控制器和replica容器時,是不會導致IO操作明顯的中斷的。Longhorn可以創建一個長期運行的工作來編排所有live volume的升級,同時確保不會中斷系統正在進行的操作。為確保升級不會導致意外的問題,Longhorn可以選擇升級一小部分volume,並在升級過程中出現問題時回滾到舊版本。這些做法在現代微服務應用中已得到廣泛應用,但在存儲系統中並不常見。希望Longhorn可以 助力於微服務在存儲領域的更多應用。

結 語

對於實際應用層面出現的任何問題,最重要的自然是判斷需求、設計系統或者選擇適當的工具。同樣的道理也適用於雲原生環境。雖然具體問題非常復雜,但也必然會出現大量工具方案嘗試解決。隨著雲原生世界的持續發展,我們可以肯定,新的解決方案將不斷涌現。未來,一切都會更加美好!

㈣ 常用的資料庫軟體各自有什麼特點

目前,商品化的資料庫管理系統以關系型資料庫為主導產品,技術比較成熟。面向對象的資料庫管理系統雖然技術先進,資料庫易於開發、維護,但尚未有成熟的產品。國際國內的主導關系型資料庫管理系統有Oracle、Sybase、INFORMIX和INGRES。這些產品都支持多平台,如 UNIX、VMS、Windows,但支持的程度不一樣。IBM的DB2也是成熟的關系型資料庫。但是,DB2是內嵌於IBM的AS/400系列機中,只支持OS/400操作系統。

1.MySQL

MySQL是最受歡迎的開源SQL資料庫管理系統,它由 MySQL AB開發、發布和支持。MySQL AB是一家基於MySQL開發人員的商業公司,它是一家使用了一種成功的商業模式來結合開源價值和方法論的第二代開源公司。MySQL是MySQL AB的注冊商標。

MySQL是一個快速的、多線程、多用戶和健壯的SQL資料庫伺服器。MySQL伺服器支持關鍵任務、重負載生產系統的使用,也可以將它嵌入到一個大配置(mass- deployed)的軟體中去。

與其他資料庫管理系統相比,MySQL具有以下優勢:

(1)MySQL是一個關系資料庫管理系統。

(2)MySQL是開源的。

(3)MySQL伺服器是一個快速的、可靠的和易於使用的資料庫伺服器。

(4)MySQL伺服器工作在客戶/伺服器或嵌入系統中。

(5)有大量的MySQL軟體可以使用。

2.SQL Server

SQL Server是由微軟開發的資料庫管理系統,是Web上最流行的用於存儲數據的資料庫,它已廣泛用於電子商務、銀行、保險、電力等與資料庫有關的行業。

目前最新版本是SQL Server 2005,它只能在Windows上運行,操作系統的系統穩定性對資料庫十分重要。並行實施和共存模型並不成熟,很難處理日益增多的用戶數和數據卷,伸縮性有限。

SQL Server 提供了眾多的Web和電子商務功能,如對XML和Internet標準的豐富支持,通過Web對數據進行輕松安全的訪問,具有強大的、靈活的、基於Web的和安全的應用程序管理等。而且,由於其易操作性及其友好的操作界面,深受廣大用戶的喜愛。

3.Oracle

提起資料庫,第一個想到的公司,一般都會是Oracle(甲骨文)。該公司成立於1977年,最初是一家專門開發資料庫的公司。Oracle在資料庫領域一直處於領先地位。 1984年,首先將關系資料庫轉到了桌面計算機上。然後,Oracle5率先推出了分布式資料庫、客戶/伺服器結構等嶄新的概念。Oracle 6首創行鎖定模式以及對稱多處理計算機的支持……最新的Oracle 8主要增加了對象技術,成為關系—對象資料庫系統。目前,Oracle產品覆蓋了大、中、小型機等幾十種機型,Oracle資料庫成為世界上使用最廣泛的關系數據系統之一。

Oracle資料庫產品具有以下優良特性。

(1)兼容性

Oracle產品採用標准SQL,並經過美國國家標准技術所(NIST)測試。與IBM SQL/DS、DB2、INGRES、IDMS/R等兼容。

(2)可移植性

Oracle的產品可運行於很寬范圍的硬體與操作系統平台上。可以安裝在70種以上不同的大、中、小型機上;可在VMS、DOS、UNIX、Windows等多種操作系統下工作。

(3)可聯結性

Oracle能與多種通訊網路相連,支持各種協議(TCP/IP、DECnet、LU6.2等)。

(4)高生產率

Oracle產品提供了多種開發工具,能極大地方便用戶進行進一步的開發。

(5)開放性

Oracle良好的兼容性、可移植性、可連接性和高生產率使Oracle RDBMS具有良好的開放性。

4.Sybase

1984年,Mark B. Hiffman和Robert Epstern創建了Sybase公司,並在1987年推出了Sybase資料庫產品。Sybase主要有三種版本:一是UNIX操作系統下運行的版本; 二是Novell Netware環境下運行的版本;三是Windows NT環境下運行的版本。對UNIX操作系統,目前應用最廣泛的是SYBASE 10及SYABSE 11 for SCO UNIX。

Sybase資料庫的特點:

(1)它是基於客戶/伺服器體系結構的資料庫。

(2)它是真正開放的資料庫。

(3)它是一種高性能的資料庫。

5.DB2

DB2是內嵌於IBM的AS/400系統上的資料庫管理系統,直接由硬體支持。它支持標準的SQL語言,具有與異種資料庫相連的GATEWAY。因此它具有速度快、可靠性好的優點。但是,只有硬體平台選擇了IBM的AS/400,才能選擇使用DB2資料庫管理系統。

DB2能在所有主流平台上運行(包括Windows),最適於海量數據。

DB2在企業級的應用最為廣泛,在全球的500家最大的企業中,幾乎85%以上都用DB2資料庫伺服器,而國內到1997年約佔5%。

除此之外,還有微軟的 Access資料庫、FoxPro資料庫等。既然現在有這么多的資料庫系統,那麼在游戲編程時應該選擇什麼樣的資料庫呢?首要的原則就是根據實際需要,另一方面還要考慮游戲開發預算。現在常用的資料庫有:SQL Server、My SQL、Oracle、FoxPro。其中MySQL是一個完全免費的資料庫系統,其功能也具備了標准資料庫的功能,因此,在獨立製作時,建議使用。 Oracle雖然功能強勁,但它畢竟是為商業用途而存在的,目前很少在游戲中使用到。

㈤ 嵌入式中的移植是什麼意思,移植系統呢

與其它操作系統相比,Linux最大的特點:它是一款遵循GPL的操作系統,我們可以自由
地使用、修改、和擴展它。正是由於這一特色,Linux受到越來越多人士的青睞。於是,
一個經常會被探討的問題出現了,即關於Linux系統的移植。對於操作系統而言,這種移
植通常是跨平台的、與硬體相關的,即硬體系統結構、甚至CPU不同。下面就讓我們來看
看在Linux系統移植方面,我們都需要做些什麼。
一、Linux系統移植的兩大部分
對於系統移植而言,Linux系統實際上由兩個比較獨立的部分組成,即內核部分和系
統部分。通常啟動一個Linux系統的過程是這樣的:一個不隸屬於任何操作系統的載入程
序將Linux部分內核調肢兄慧入內存,並將控制權交給內存中Linux內核的第一行代碼。載入程
序的工作就完了,此後Linux要將自己的剩餘部分全部載入到內存(如果有的話,視硬體
平台的不同而不同),初始化所有的設備,在內存中建立好所需的數據結構(有關進程
、設備、內存等)。到此為止Linux內核的工作告一段落,內核已經控制了所有硬體設備
。至於操作和使用這些硬體設備,則輪到系統部分上場了。內核載入根設備並啟動init
守護進程,init守護進程會根據配置文件載入文件系統、配置網路、服務進程、終端等
。一旦終端初始化完畢,我們就會看到系統的歡迎界面了。小結一下:
(1)內核部分初始化和控制所有硬體設備(嚴格說不是所有,而是絕大部分),為內存
管理、進程管理、設備讀寫等工作做好一切准備。
(2)系統部分載入必需的設備,配置各種環境以便用戶可以使用整個系統。
二、系統移植所必需的環境
在進一步敘述之前,我們有必要提一下做系統移植所必需的環境。
首先,需要一個新版本的gcc。對於一個准備系統移植的程序員而言,「新」到什麼
程度應該心裡有數。做跨平台編譯,gcc也許是最好的選擇。另外,Linux內核依賴許多
gcc特有的特性,非它不可。如果你已經會使用gcc並實地操練過多回,那你只需要再進
一步鞏固一下跨平台編譯的操作即可。兩種編譯環境是可用的:非目標平台上的Linux或
目標平台上的非Linux系統,除非你的開發平台過於特殊,否則你一定能夠找到你能用的
gcc。
其次,編譯鏈接庫是必需的,而且必須是目標平台的編譯鏈接庫。通常這歷答是一個枯
燥、繁瑣、又絲毫沒有成就感的過程。幸運的話,會有現成的鏈接庫可以用。否則,你
需要自己用gcc建立它。
最後,需要目標平台的所有文檔,越多越好。如果有一定的開發支持/模擬環境,L
oader(載入程序)則最好,這些可以幫助你減少移植過程中浪費在瑣事上的時間。
三、Linux系統移植
接下來我們從內核和系統兩個方面描述一下移植中的關鍵。
(1) 內存移植
Linux系統採用了相對來說並不是很靈活的單一內核機制,但這絲毫沒有影響Linux
系統的平台無關性和可擴展性。Linux使用了兩種途徑分別解決這些問題,很乾凈利落,
絲毫不拖泥帶水,而且十分清晰易懂。分離硬體相關代碼和硬體無關代碼,使上層代碼
永遠不必關心低層換用了什麼代碼,如何完成了操作。不論對x86上還是在Alpha平台上
分配一塊內存,對上層代碼而言沒什麼不同。硬體相關部分的代碼不多,占總代碼量的
很少一部分。所以對更換硬體平台來說,沒有什麼真正的負擔。另一方面,Linux使用內
核機制很好地解決了擴展的問題,一堆代碼可以在需要的時候輕松地載入或卸下,象隨
身聽,需要的時候帶上,不需要時則鎖在抽屜里。
Linux內核可以視為由五個功能部分組成:進程管理(包括調度和通信)、內存管理
、設備管理、虛擬文件系統、網路。它們之間有著復雜的調用關系,但幸運的是,在移
植中不會觸及到太多,因為Linux內核良好的分層結構將硬體相關的代碼獨立出來。何謂
硬體相關,何謂無關?以進程管理為例,對進程的時間片輪轉調度演算法在所有平台的Li
nux中都是一樣的,它是與平台無關的;而用來在進程中切換的實現在不同的CPU上是不
同的,因此需要針對該平台編寫代碼,這就是平台相關的。上面所講的五個部分的順序
不是隨便排的,從前到後分別代表著它們與硬體設備的相關程度。越靠前越高,後面的
兩個虛擬文件系統和網路則幾乎與平台無關,它們由設備管理中所支持塵森的驅動程序提供
底層支持。因此,在做系統移植的時候,需要改動的就是進程管理、內存管理和設備管
理中被獨立出來的那部分即硬體相關部分的代碼。在Linux代碼樹下,這部分代碼全部在
arch目錄下。
如果你的目標平台已經被Linux核心所支持的話,那麼你是幸運的,因為已經沒有太
多的工作讓你去做。只要你的交叉編譯環境是正確的,你只需要簡單的配置、編譯就可
以得到目標代碼。否則,需要你去編寫,或修改一些代碼。只需修改平台相關部分的代
碼即可。但需要對目標平台,主要是對CPU的透徹理解。在Linux的代碼樹下,可以看到
,這部分的典型代碼量為:2萬行左右C代碼和2千行左右的匯編(C代碼中通常包含許多
偽匯編指令,因此實際上純C代碼要少很多),這部分工作量是不可小看的。它包含了對
絕大多數硬體的底層操作,涉及IRQ、內存頁表、快表、浮點處理、時鍾、多處理器同步
等問題,頻繁的埠編程意味著需要你將目標平台的文檔用C語言重寫一遍。這就是為什
么說目標平台的文檔極其重要。
代碼量最大的部分是被核心直接調用的底層支持部分,這部分代碼在arch/xxx/ker
nel下(xxx是平台名稱)。這些代碼重寫了內核所需調用的所有函數。因為介面函數是固
定的,所以這里更象是為硬體平台編寫API。不同的系統平台,主要有以下幾方面的不同

進程管理底層代碼:從硬體系統的角度來看,進程管理就是CPU的管理。在不同的硬
件平台上,這有很大的不同。CPU中用的寄存器結構不同,上下文切換的方式、現場的保
存和恢復、棧的處理都不同,這些內容主要由CPU開發手冊所描述。通常來說,CPU的所
有功能和狀態對於Linux不一定有意義。實現時,需要在最小的開發代價和最好的系統性
能之間加以權衡。
* BIOS介面代碼:這一名稱似乎並不太准確,因為它沿用了PC一貫的叫法。但在不致引
起混淆的情況下我們還是這么叫它。在通用平台上,通常有基本輸入輸出系統供操作系
統使用,在PC上是BIOS,在SPARC上是PROM,在很多非通用系統上甚至並沒有這樣的東西
。多數情況下,Linux不依賴基本輸入輸出系統,但在某些系統里,Linux需要通過基本
輸入輸出系統中得到重要的設備參數。移植中,這部分代碼通常需要完全改寫。
* 時鍾、中斷等板上設備支持代碼:即使在同一種CPU的平台上,也會存在不同的板上外
設,異種CPU平台上更是如此。不同的系統組態需要不同的初始化代碼。很典型的例子就
是MIPS平台,看看arc/mips/的代碼,與其它系統比較一下就知道。因為MIPS平台被OEM
得最廣,在嵌入式領域應用最多(相對其它幾種CPU而言)。甚至同一種MIPS晶元被不同
廠家封裝再配上不同的晶元組。因此要為這些不同的MIPS平台分別編寫不同的代碼。
* 特殊結構代碼:如多處理器支持等。其實每一種CPU都是十分特殊的,熟悉x86平台的
人都知道x86系列CPU著名的實模式與虛模式的區別,而在SPARC平台上根本就沒有這個概
念。這就導致了很大的不同:PC機上的Linux在獲得控制權後不久就開始切換到虛模式,
SPARC機器上則沒有這段代碼。又如電源管理的支持更是多種多樣,不同的CPU有著不同
的實現方式(特殊的電源管理方式甚至被廠商標榜)。在這種情況下,除非放棄對電源
管理的支持,否則必須重寫代碼。
還有一部分代碼量不多,但不能忽視的部分是在arch/xxx/mm/下的內存管理部分。
所有與平台相關的內存管理代碼全部在這里。這部分代碼完成內存的初始化和各種與內
存管理相關的數據結構的建立。Linux使用了基於頁式管理的虛擬存儲技術,而CPU發展
的趨勢是:為了提高性能,實現內存管理的功能單元統統被集成到CPU中。因此內存管理
成為一個與CPU十分相關的工作。同時內存管理的效率也是最影響系統性能的因素之一。
內存可以說是計算機系統中最頻繁訪問的設備,如果每次內存訪問時多佔用一個時鍾周
期,那就有可能將系統性能降低到不可忍受。在Linux系統里,不同平台上的內存管理代
碼的差異程度是令人吃驚的,可以說是差異最大的。不同的CPU有不同的內存管理方式,
同一種CPU還會有不同的內存管理模式。Linux是從32位硬體平台上發展起來的操作系統
,但是現在已經有數種64位平台出現。在64位平台上,可用內存范圍增大到原來的232倍
,其間差異可略窺一斑了。鑒於這部分代碼的重要性和復雜性,移植工作在這里變得相
當謹慎。有些平台上甚至只是用最保守的內存管理模式。如在SPARC平台上的頁面大小可
以是多種尺寸,為了簡單和可靠起見,SPARC版的Linux只是用了8K頁面這一種模式。這
一狀況直到2.4版才得以改善。
除了上面所講的之外,還有一些代碼需要考慮,但相對來說次要一些。如浮點運算
的支持。較完美的做法是對FPU編程,由硬體完成浮點運算。但在某些時候,浮點並不重
要,甚至CPU根本就不支持浮點。這時候就可以根據需求來取捨。
對於內核移植的討論到此為止。實際上,還有一些移植工作需要同時考慮,但很難
說這是屬於內核范疇還是屬於驅動程序范疇,比如說顯示設備的支持,和內核十分相關
,但在邏輯上又不屬於內核,並且在移植上也更像是驅動程序的開發。因此不在這里討
論。
(2)系統移植
當內核移植完畢後,可以說所有的移植工作就已經完成大半了。就是說,當內核在
交叉編譯成功後,載入到目標平台上正常啟動,並出現類似VFS: Can抰 mount root fi
le system的提示時,則表示可以開始系統移植方面的工作了。系統移植實際上是一個最
小系統的重建過程。許多Linux愛好者有過建立Linux系統應急盤的經驗,與其不同的是
,你需要使用目標平台上的二進制代碼生成這個最小系統。包括:init、libc庫、驅動
模塊、必需的應用程序和系統配置腳本。一旦這些工作完成,移植工作就進入聯調階段
了。
一個比較容易的系統部分移植辦法是:先著手建立開發平台上的最小系統,保證這
套最小系統在開發平台上正確運行。這樣可以避免由於最小系統本身的邏輯錯誤而帶來
的麻煩。由於最小系統中是多個應用程序相互配合工作,有時出現的問題不在代碼本身
而在系統的邏輯結構上。
Linux系統移植工作至少要包括上述的內容,除此之外,有一些看不見的開發工作也
是不可忽視的,如某個特殊設備的驅動程序,為調試內核而做的遠程調試工作等。另外
,同樣的一次移植工作,顯然符合最小功能集的移植和完美移植是不一樣的;向16位移
植和向64位移植也是不一樣的。
在移植中通常會遇見的問題是試運行時鎖死或崩潰,在系統部分移植時要好辦些,
因為可以容易地定位錯誤根源,而在核心移植時確實很讓人頭疼。雖然可以通過串口對
運行著的內核進行調試,但是在多任務情況下,有很多現象是不可重現的。又如,在初
始化的開始,很多設備還沒法確定狀態,甚至串口還沒有初始化。對於這種情況沒有什
么很好的解決辦法,好的開發/模擬平台很重要,另外要多增加反映系統運行狀態的調試
代碼;再者要吃透硬體平台的文檔。硬體平台廠商的專業支持也是很重要的。
還有一點很重要:Linux本身是基於GPL的操作系統,移植時,可以充分發揮GPL的優
勢,讓更多的愛好者參與進來,向共同的目標前進。

㈥ 程序執行的四個特性 操作系統

嵌入式系統是以應用為中心,軟硬體可裁減的,適用於對功能、可靠性、成本、體積、功耗等綜合性嚴格要求的專用計算機系統。具有軟體代碼小、高度自動化、響應速度快等特點,特別適合於要求實時和多任務的體系。嵌入式系統主要由嵌入式處理器、相關支撐硬體、嵌入式操作系統及應用軟體系統等組成,它是可獨立工作的「器件」。
一、嵌入式操作系統的發展

作為嵌入式系統(包括硬、軟體系統)極為重要的組成部分的嵌入式操作系統,通常包括與硬體相關的底層驅動軟體、系統內核、設備驅動介面、通信協議、圖形界面、標准化瀏覽器等。嵌入式操作系統具有通用操作系統的基本特點,如能夠有效管理越來越復雜的系統資源;能夠把硬體虛擬化,使得開發人員從繁忙的驅動程序移植和維護中解脫出來;能夠提供庫函數、驅動程序、工具集以及應用程序。與通用操作系統相比較,嵌入式操作系統在系統實時高效性、硬體的相關依賴性、軟體固態化以及應用的專用性等方面具有較為突出的特點。

嵌入式操作系統伴隨著嵌入式系統的發展經歷了四個比較明顯的階段:

第一階段:無操作系統的嵌入演算法階段,以單晶元為核心的可編程式控制制器形式的系統,具有與監測、伺服、指示設備相配合的功能。應用於一些專業性極強的工業控制系統中,通過匯編語言編程對系統進行直接控制,運行結束後清除內存。系統結構和功能都相對單一,處理效率較低,存儲容量較小,幾乎沒有用戶介面。

第二階段:以嵌人式CPU為基礎、簡單操作系統為核心的嵌入式系統。CPU種類繁多,通用性比較差;系統開銷小,效率高;一般配備系統模擬器,操作系統具有一定的兼容性和擴展性;應用軟體較專業,用戶界面不夠友好;系統主要用來控制系統負載以及監控應用程序運行。

第三階段:通用的嵌人式實時操作系統階段,以嵌入式操作系統為核心的嵌入式系統。能運行於各種類型的微處理器上,兼容性好;內核精小、效率高,具有高度的模塊化和擴展性;具備文件和目錄管理、設備支持、多任務、網路支持、圖形窗口以及用戶界面等功能;具有大量的應用程序介面(APl);嵌入式應用軟體豐富。

第四階段:以基於Intemet為標志的嵌入式系統。這是一個正在迅速發展的階段。目前大多數嵌入式系統還孤立於lnlemet之外,但隨著Intemet的發展以及Intemet技術與信息家電、工業控制技術等結合日益密切,嵌入式設備與Intemet的結合將代表著嵌入式技術的真正未來。

二、使用實時操作系統的必要性

嵌入式實時操作系統在目前的嵌入式應用中用得越來越廣泛,尤其在功能復雜、系統龐大的應用中顯得愈來愈重要。

1.嵌人式實時操作系統提高了系統的可靠性。在控制系統中,出於安全方面的考慮,要求系統起碼不能崩潰,而且還要有自愈能力。不僅要求在硬體設計方面提高系統的可靠性和抗干擾性,而且也應在軟體設計方面提高系統的抗干擾性,盡可能地減少安全漏洞和不可靠的隱患。長期以來的前後台系統軟體設計在遇到強干擾時,使得運行的程序產生異常、出錯、跑飛,甚至死循環,造成了系統的崩潰。而實時操作系統管理的系統,這種干擾可能只是引起若干進程中的一個被破壞,可以通過系統運行的系統監控進程對其進行修復。通常情況下,這個系統監視進程用來監視各進程運行狀況,遇到異常情況時採取一些利於系統穩定可靠的措施,如把有問題的任務清除掉。

2.提高了開發效率,縮短了開發周期。在嵌入式實時操作系統環境下,開發一個復雜的應用程序,通常可以按照軟體工程中的解耦原則將整個程序分解為多個任務模塊。每個任務模塊的調試、修改幾乎不影響其他模塊。商業軟體一般都提供了良好的多任務調試環境。

3.嵌入式實時操作系統充分發揮了32位CPU的多任務潛力。32位CPU比8、16位CPU快,另外它本來是為運行多用戶、多任務操作系統而設計的,特別適於運行多任務實時系統。32位CPU採用利於提高系統可靠性和穩定性的設計,使其更容易做到不崩潰。例如,CPU運行狀態分為系統態和用戶態。將系統堆棧和用戶堆棧分開,以及實時地給出CPU的運行狀態等,允許用戶在系統設計中從硬體和軟體兩方面對實時內核的運行實施保護。如果還是採用以前的前後台方式,則無法發揮32位CPU的優勢。從某種意義上說,沒有操作系統的計算機(裸機)是沒有用的。在嵌入式應用中,只有把CPU嵌入到系統中,同時又把操作系統嵌入進去,才是真正的計算機嵌入式應用。

三、嵌入式操作系統選型

當我們在設計信息電器、數字醫療設備等嵌入式產品時,嵌入式操作系統的選擇至關重要。一般而言,在選擇嵌入式操作系統時,可以遵循以下原則。總的來說,就是「做加法還是做減法」的問題。

(一)市場進入時間

制定產品時間表與選擇操作系統有關系,實際產品和一般演示是不同的。目前是Windows程序員可能是人力資源最豐富的。現成資源最多的也就可能是WinCE。使用WinCE能夠很快進入市場。因為WinCE+X86做產品實際上是在做減法,去掉你不要的功能,能很快出產品,但伴隨的可能是成本高,核心競爭力差。而某些高效的操作系統可能由於編程人員缺乏,或由於這方面的技術積累不夠,影響開發進度。

(二)可移植性

操作系統相關性。當進行嵌入式軟體開發時,可移植性是要重點考慮的問題。良好的軟體移植性應該比較好,可以在不同平台、不同系統上運行,跟操作系統無關。軟體的通用性和軟體的性能通常是矛盾的。即通用以損失某些特定情況下的優化性能為代價。很難設想開發一個嵌入式瀏覽器而僅能在某一特定環境下應用。反過來說,當產品與平台和操作系統緊密結合時,往往你的產品的特色就蘊含其中。

(三)可利用資源

產品開發不同於學術課題研究,它是以快速、低成本、高質量的推出適合用戶需求的產品為目的的。集中精力研發出產品的特色,其他功能盡量由操作系統附加或採用第三方產品,因此操作系統的可利用資源對於選型是一個重要參考條件。Linux和WinCE都有大量的資源可以利用,這是他們被看好的重要原因。其他有些實時操作系統由於比較封閉,開發時可以利用的資源比較少,因此多數功能需要自己獨立開發。從而影響開發進度。近來的市場需求顯示,越來越多的嵌入式系統,均要求提供全功能的Web瀏覽器。而這要求有一個高性能、高可靠的GUI的支持。

(四)系統定製能力

信息產品不同於傳統PC的Wintel結構的單純性,用戶的需求是千差萬別的,硬體平台也都不一樣,所以對系統的定製能力提出了要求。要分析產品是否對系統底層有改動的需求,這種改動是否伴隨著產品特色?Linux由於其源代碼開放的天生魅力,在定製能力方面具有優勢。隨著WinCE3.0原碼的開放,以及微軟在嵌入式領域力度的加強,其定製能力會有所提升。

(五)成本

成本是所有產品不得不考慮的問題。操作系統的選擇會對成本有什麼影響呢?Linux免費,WinCE等商業系統需要支付許可證使用費,但這都不是問題的答案。成本是需要綜合權衡以後進行考慮的——選擇某一系統可能會對其他一系列的因素產生影響,如對硬體設備的選型、人員投入、以及公司管理和與其他合作夥伴的共同開發之間的溝通等許多方面的影響。

(六)中文內核支持

國內產品需要對中文的支持。由於操作系統多數是採用西文方式,是否支持雙位元組編碼方式,是否遵循GBK,GBl8030等各種國家標准,是否支持中文輸入與處理,是否提供第三方中文輸入介面是針對國內用戶的嵌入式產品的必需考慮的重要因素。

上面提到用WinCE+x86出產品是減法,這實際上就是所謂PC家電化;另外一種做法是加法,利用家電行業的硬體解決方案(絕大部分是非x86的)加以改進,加上嵌入式操作系統,再加上應用軟體。這是所謂家電PC化的做法,這種加法的優勢是成本低,特色突出,缺點是產品研發周期長,難度大(需要深入了解硬體和操作系統)。如果選擇這種做法,Linux是一個好選擇,它讓你能夠深入到系統底層,如果你願意並且有能力。

四、幾種代表性嵌入式操作系統比較

(一)VxWorks

VxWorks操作系統是美國WindRiver公司於1983年設計開發的一種嵌入式實時操作系統(RTOS),是Tornado嵌入式開發環境的關鍵組成部分。良好的持續發展能力、高性能的內核以及友好的用戶開發環境,在嵌人式實時操作系統領域逐漸占據一席之地。

VxWorks具有可裁剪微內核結構;高效的任務管理;靈活的任務間通訊;微秒級的中斷處理;支持POSIX 1003.1b實時擴展標准;支持多種物理介質及標準的、完整的TCP/IP網路協議等。

然而其價格昂貴。由於操作系統本身以及開發環境都是專有的,價格一般都比較高,通常需花費10萬元人民幣以上才能建起一個可用的開發環境,對每一個應用一般還要另外收取版稅。一般不通供源代碼,只提供二進制代碼。由於它們都是專用操作系統,需要專門的技術人員掌握開發技術和維護,所以軟體的開發和維護成本都非常高。支持的硬體數量有限。

(二)Windows CE

Windows CE與Windows系列有較好的兼容性,無疑是Windows CE推廣的一大優勢。其中WinCE3.0是一種針對小容量、移動式、智能化、32位、了解設備的模塊化實時嵌人式操作系統。為建立針對掌上設備、無線設備的動態應用程序和服務提供了一種功能豐富的操作系統平台,它能在多種處理器體系結構上運行,並且通常適用於那些對內存佔用空間具有一定限制的設備。它是從整體上為有限資源的平台設計的多線程、完整優先權、多任務的操作系統。它的模塊化設計允許它對從掌上電腦到專用的工業控制器的用戶電子設備進行定製。操作系統的基本內核需要至少200KB的ROM。由於嵌入式產品的體積、成本等方面有較嚴格的要求,所以處理器部分佔用空間應盡可能的小。系統的可用內存和外存數量也要受限制,而嵌入式操作系統就運行在有限的內存(一般在ROM或快閃記憶體)中,因此就對操作系統的規模、效率等提出了較高的要求。從技術角度上講,Windows CE作為嵌入式操作系統有很多的缺陷:沒有開放源代碼,使應用開發人員很難實現產品的定製;在效率、功耗方面的表現並不出色,而且和Windows一樣佔用過的系統內存,運用程序龐大;版權許可費也是廠商不得不考慮的因素。

(三)嵌入式Linux

這是嵌入式操作系統的一個新成員,其最大的特點是源代碼公開並且遵循GPL協議,在近一年多以來成為研究熱點,據IDG預測嵌入式Linux將占未來兩年的嵌入式操作系統份額的50%。

由於其源代碼公開,人們可以任意修改,以滿足自己的應用,並且查錯也很容易。遵從GPL,無須為每例應用交納許可證費。有大量的應用軟體可用。其中大部分都遵從GPL,是開放源代碼和免費的。可以稍加修改後應用於用戶自己的系統。 有大量的免費的優秀的開發工具,且都遵從GPL,是開放源代碼的。有龐大的開發人員群體。無需專門的人才,只要懂Unix/Linux和C語言即可。隨著Linux在中國的普及,這類人才越來越多。所以軟體的開發和維護成本很低。優秀的網路功能,這在Internet時代尤其重要。穩定——這是Linux本身具備的一個很大優點。內核精悍,運行所需資源少,十分適合嵌入式應用。

支持的硬體數量龐大。嵌入式Linux和普通Linux並無本質區別,PC上用到的硬體嵌入式Linux幾乎都支持。而且各種硬體的驅動程序源代碼都可以得到,為用戶編寫自己專有硬體的驅動程序帶來很大方便。

在嵌入式系統上運行Linux的一個缺點是Linux體系提供實時性能需要添加實時軟體模塊。而這些模塊運行的內核空間正是操作系統實現調度策略、硬體中斷異常和執行程序的部分。由於這些實時軟體模塊是在內核空間運行的,因此代碼錯誤可能會破壞操作系統從而影響整個系統的可靠性,這對於實時應用將是一個非常嚴重的弱點。

(四)µC/OS一Ⅱ

µC/OS一Ⅱ是著名的源代碼公開的實時內核,是專為嵌入式應用設計的,可用於8位,16位和32位單片機或數字信號處理器(DSP)。它是在原版本µC/OS的基礎上做了重大改進與升級,並有了近十年的使用實踐,有許多成功應用該實時內核的實例。它的主要特點如下:

1.公開源代碼,容易就能把操作系統移植到各個不同的硬體平台上。

2.可移植性,絕大部分源代碼是用C語言寫的,便於移植到其他微處理器上。

3.可固化。

4.可裁剪性,有選擇的使用需要的系統服務,以減少斗所需的存儲空間。

5.佔先式,完全是佔先式的實時內核,即總是運行就緒條件下優先順序最高的任務。

6.多任務,可管理64個任務,任務的優先順序必須是不同的,不支持時間片輪轉調度法。

7.可確定性,函數調用與服務的執行時間具有其可確定性,不依賴於任務的多少。

8.實用性和可靠性,成功應用該實時內核的實例,是其實用性和可靠性的最好證據。

由於µC/OS一Ⅱ僅是一個實時內核,這就意味著它不像其他實時存在系統那樣提供給用戶的只是一些API函數介面,還有很多工作需要用戶自己去完成。

五、結束語

在嵌入式應用中,使用實時操作系統(RTOS)是當前嵌入式應用的一個特點,一種趨勢,也是單片機應用從低水平向高水平的一個進步。在實際的應用中,根據不同的要求和條件選擇合適的操作系統,使開發工作更容易,設計出更完美的嵌入式系統。