【基于c語言的小型PC操作系統(tǒng)的設計與實現18000字(論文)】_第1頁
【基于c語言的小型PC操作系統(tǒng)的設計與實現18000字(論文)】_第2頁
【基于c語言的小型PC操作系統(tǒng)的設計與實現18000字(論文)】_第3頁
【基于c語言的小型PC操作系統(tǒng)的設計與實現18000字(論文)】_第4頁
【基于c語言的小型PC操作系統(tǒng)的設計與實現18000字(論文)】_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

基于c語言的小型PC操作系統(tǒng)的設計與實現摘要現代社會,計算機的重要性越發(fā)凸顯出來,計算機操作系統(tǒng)作為不可缺少的一部分,也得到飛速發(fā)展。而市面上的操作系統(tǒng)基本都是國外開發(fā),國內的操作系統(tǒng)還處于萌芽階段,為了計算機和用戶信息安全,國產操作系統(tǒng)的開發(fā)非常必要。主要是介紹了操作系統(tǒng)的基本特征以及主要功能,操作系統(tǒng)的硬件和軟件相結合,著重研究在80386英特爾CPU上整個系統(tǒng)的工作情況,本次以同樣的方式來設計與開發(fā)操作系統(tǒng)的各項功能和各個模塊,通過Makefile工具來管理工程中的源文件,實現工程的編譯、連接等規(guī)則。通過QEMU模擬器來進行系統(tǒng)的測試和運行。本次設計的的系統(tǒng)雖然簡單但仍具備了內存管理、多任務管理、輸入輸出管理等基本功能。并在32位保護模式下運行,設計了API接口并在此基礎上設計實現了多種應用程序。通過本次從零開發(fā)一個簡易操作系統(tǒng),作為一個大型系統(tǒng)的雛形,開發(fā)者可以更為透徹學習操作系統(tǒng),積累代碼開發(fā)經驗,加深對C語言,計算機組成原理,數據結構等知識的理解,從長遠看,為將來可能的國產操作系統(tǒng)的開發(fā)打下基礎。關鍵詞PC/操作系統(tǒng)/C語言

目錄TOC\o"1-3"\h\u21989摘要 I1緒論1.1研究背景從1946年,世界上第一臺現代電子數字計算機埃尼阿克(ENIAC)誕生以來,計算機科學領域就開始不斷的進步與發(fā)展,呈現出快速不可逆的發(fā)展勢頭。尤其是步入21世紀的現代社會,計算機已經覆蓋人類社會生活的方方面面,為整個人類發(fā)展史做出了不可替代的作用。在可預見的未來,計算機科學將持續(xù)的高速發(fā)展并做出巨大貢獻。與此同時,時代和科技不斷發(fā)展,硬件方面也如此,操作系統(tǒng)這一區(qū)別于硬件的軟件也在一步步形成與完善,操作系統(tǒng)在計算機中有很高地位。操作系統(tǒng)的誕生大大降低了計算機的使用難度,簡化了其繁瑣的操作,其特有的圖形化操作界面使得任何人都可以以極低的時間成本學會計算機的使用方法,可謂是計算機的傳播與發(fā)展過程中不可忽視的力量。操作系統(tǒng)作為管理計算機軟件和硬件的計算機程序,自然擁有強大功能的同時伴隨著較大的復雜性,往往包含大量有關CPU和內存的指令。這些代碼之間往往相互聯系,想要理解頗有難度,需要開發(fā)者動手去實際開發(fā)一個小型的操作系統(tǒng),一步一步從最簡單的基本功能開始構筑,直到積累成一個具備多種功能的操作系統(tǒng)。本文通過對一個“簡而精”的操作系統(tǒng)的開發(fā),加深對操作系統(tǒng)的理解以及提升自身的C語言編程技能,復習并總結了如操作系統(tǒng)、計算機組成原理、微機技術等許多科目,在畢設與論文撰寫的過程中,對這些內容有了更高的理解,使得之前所學的知識可以集合起來,通過設計和實現一個簡單的操作系統(tǒng)來使其得到實際的應用和落實,同時培訓了自己對系統(tǒng)操作系統(tǒng)的代碼分析和編寫能力。1.2國內外研究現狀操作系統(tǒng)的出現遠遠晚于計算機硬件的的誕生,人們?yōu)榱颂岣哂嬎銠C性能,獲得更高的利用率,從而誕生了操作系統(tǒng),并跟隨計算機硬件技術的發(fā)展的腳步,逐漸成型并完善。操作系統(tǒng)的發(fā)展歷經手工操作、批處理操作、多道程序操作、分時系統(tǒng)操作、實時系統(tǒng)、通用操作系統(tǒng)幾個階段,現在,操作系統(tǒng)的概念已經變成了把各式功能,各種類的包以及多種不同應用程序的合集,集合與一個操作系統(tǒng)之中。而在計算機不斷發(fā)展和完善的過程中,計算機逐步實現了小型化,便捷化。人們在使用計算機的過程中越來越追求高效和直觀體驗使得人們開始開發(fā)具備圖形交互界面的操作系統(tǒng)?,F如今的各式各樣的操作系統(tǒng)已經具備了圖形界面,在便捷、直觀和美觀度上不斷提高。另一方面,操作系統(tǒng)的發(fā)展與計算機硬件技術的發(fā)展相互影響,從計算機的發(fā)展視角來看,計算機已經從大型機逐漸小型化、便捷化,從軍用轉變?yōu)槊裼?,小型機已經逐步取代大型機。PARC影響了小型機時代下的新興操作系統(tǒng)如UNIX的XWindow系統(tǒng),微軟Windows系統(tǒng),蘋果MacOS系統(tǒng)。至此,計算機操作系統(tǒng)走上了圖形化,便捷化,多功能的發(fā)展之路。1.2.1國外操作系統(tǒng)Windows操作系統(tǒng)是微軟公司研發(fā)的一套操作系統(tǒng),通過最初的MS-DOS環(huán)境模擬,不斷進行迭代和升級[7]。Windows從16位架構到32位,再到64位,Windows操作系統(tǒng)通過自身優(yōu)異的人機操作性,大量的應用軟件支持,良好的硬件支持性,已經成為了應用最廣泛的操作系統(tǒng),并擁有了龐大的用戶群。毫無疑問Windows在操作系統(tǒng)領域取得了技術和商業(yè)上的巨大成功。MacOS是蘋果公司開發(fā)的第一個在商用領域取得成功的圖形用戶界面操作系統(tǒng),突出表現人與機器的交互性。MacOS是基于XNU混合內核的圖形化操作系統(tǒng),與Windows的架構截然不同,很少受到電腦病毒的攻擊,具有極高的安全性,但同時也使得系統(tǒng)的封閉性大大提升,在這種情況下,蘋果公司建立了一套完整的生態(tài)環(huán)境,培養(yǎng)了一批忠誠用戶,從而使其在市場上達到了9.68%的占有率。Liunx是一個完全開源的操作系統(tǒng),有著沒有版權,技術社區(qū)用戶數量龐大的特點。其系統(tǒng)繼承Unix以網絡為核心的設計思想,成功打造出了一個性能優(yōu)異穩(wěn)定的的多用戶網絡操作系統(tǒng)。對開發(fā)者而言,Liunx功能強大,具有高度靈活性,成本低,高安全性,同時擁有用戶社區(qū)供開發(fā)者進行技術交流,使Liunx成為技術開發(fā)的理想平臺,同時保證了用戶間的交流和活躍度。1.2.2國內操作系統(tǒng)國產操作系統(tǒng)主要是以Linux內核進行二次開發(fā),以Linux為內核的國產操作系統(tǒng)的研發(fā)和應用呈現出快速發(fā)展的態(tài)勢,國產Liunx操作系統(tǒng)和windowsXP系統(tǒng)的操作與布局上相似,對用戶而言實用性相差不大,且大多都為不用單獨為其付費,在價格上更占優(yōu)勢。從安全方面考慮,國產系統(tǒng)能最大程度上保證用戶的個人信息和重要數據不會流向國外?,F如今市面上也涌現出諸多不同方向的操作系統(tǒng)如中標麒麟Liunx,一銘操作系統(tǒng),紅旗Liunx,起點操作系統(tǒng)等。其中不乏優(yōu)秀的設計和理念,有支持同時適用于桌面電腦和移動終端的操作系統(tǒng),也有基于服務器開發(fā)的專有操作系統(tǒng)[6]。1.2.3國內外操作系統(tǒng)差異Liunx,微軟等操作系統(tǒng)具有起步早,發(fā)展時間長的特點,已經具備了非常完整的用戶生態(tài),具有十分先進的技術,并且處于不斷的迭代之中,處于該領域的頂端位置。而國產操作系統(tǒng)多為以Liunx為內核進行二次開發(fā)。國內沒有自主內核不是因為技術問題,而是環(huán)境生態(tài)問題,想要有先進的自主的內核,就需要有一套完整的行業(yè)硬件產業(yè)鏈的支持,沒有生態(tài)自然也就沒有用戶,形成了一個惡性循環(huán)。國產操作系統(tǒng)要想突破重圍,需要從開源來,回開源中去,大力投入建設生態(tài),培養(yǎng)上下游各廠商,積極提升技術,擺脫技術受制于人的局面。同時遵守開源協議,加速自身發(fā)展,才能實現突破,使中國擁有自主內核的操作系統(tǒng),在該領域取得一席之地。1.3研究內容(1)實現能在裸機上運行的簡易操作系統(tǒng)。該系統(tǒng)是在32位保護模式下運作,具備多任務調度和通信功能。(2)系統(tǒng)能夠對內存進行管理操作,查看和修改內存的使用情況。(3)系統(tǒng)自身具有硬盤功能,并能實現系統(tǒng)調度文件的基本讀寫操作。(4)實現系統(tǒng)的圖形化界面,通過輸入輸出功能,將鍵盤、鼠標和顯示器作為系統(tǒng)的交互設備。(5)以命令行作為用戶界面,實現系統(tǒng)的操作行為。(6)進行系統(tǒng)測試,在運行環(huán)境中對系統(tǒng)各項功能和程序進行測試,確保其能達實際效果。1.4章節(jié)結構本人在實現了基于c語言的小型PC操作系統(tǒng)后,論文根據系統(tǒng)從研究內容,計算機原理,硬件組成和系統(tǒng)實現與設計等四個方面,總體上分為七章,論文的具體章節(jié)結構如下:第一章:緒論。緒論部分主要是對論文的研究背景、國內外現狀和國內外在該領域存在的差異進行論述。第二章:操作系統(tǒng)硬件組成及功能。主要對系統(tǒng)的硬件組成部分進行介紹,分析操作系統(tǒng)應該具備的基礎功能。第三章:32位模式分析。對兩種不同的32位模式的優(yōu)點和缺點進行分析,選擇其中合適的進行使用,同時介紹模式中的多種機制的作用。第四章:系統(tǒng)設計。主要是系統(tǒng)的整體設計,對涉及運行原理的內容和內核設計的詳細部分進行介紹。第五章:系統(tǒng)實現。對操作系統(tǒng)的詳細程序功能進行展示,通過圖片和解釋的方法進行系統(tǒng)功能展示。第六章:系統(tǒng)測試。對系統(tǒng)所具備的功能進行測試,測試其是否能達到預想中的功能。第七章:總結與展望。對系統(tǒng)和全文進行總結,分析系統(tǒng)開發(fā)過程中出現的不足和缺點,提出改進方法,在此基礎上展望發(fā)展。1.5本章小結此部分對該領域在國內外的相關發(fā)展和研究進行探討,分析國內外操作系統(tǒng)的差距,提出本文的主要研究內容和文章的結構。

2操作系統(tǒng)硬件組成及功能2.1計算機硬件組成部分計算機系統(tǒng)硬件是一個復雜結構,要想理解不同設備之間的關系我們需要一個簡單的模型。計算機系統(tǒng)硬件組成如圖2-1所示。圖2-1計算機系統(tǒng)硬件組成2.1.1總線計算機各部件之間的連接靠的是一條公共通信干線,被稱作“總線”??偩€按照固定路線,來回傳輸不停運作的比特(bit)??偩€可以傳送定長字節(jié)塊,總線寬度越大,傳輸性能就越強,外部設備通過對應的接口接入電路中,然后再與總線進行連接,共同形成了計算機硬件系統(tǒng)。在各個系統(tǒng)中,機器字長并不一定相同。2.1.2主存主存是暫時存放cpu運算數據的設備,與硬盤等外部存儲器進行數據的交換,為外部存儲器交換信息提供緩沖作用。從物理角度來看,主存是由動態(tài)隨機存取存儲器芯片所構成的,在邏輯方面,主存是線性數組,其中的每個字節(jié)都有其相對于且唯一的地址。組成程序的機器指令的字節(jié)數往往數量不一樣,C語言編寫的程序變量其中的數據項跟隨其類型而呈現出不同的大小。2.1.3I/O設備I/O設備主要功能是管理操作系統(tǒng)的所有輸入和輸出設備,是計算機系統(tǒng)與外部溝通的橋梁[1]。如圖2-1,鍵盤和鼠標對系統(tǒng)進行輸入,顯示器把系統(tǒng)信息輸出傳達給用戶,而磁盤同時進行兩個功能,提供信息的傳遞交換。如圖2-1所示,所有I/O設備都需要一個“控制器”或“適配器”,通過這兩個設備來連接I/O總線。根據其封裝方式的不同,區(qū)分為“控制器”以及“適配器”。前者主要是集成與計算機硬件系統(tǒng)的主板的芯片組里,后者屬于一個獨立設備,通過插槽連接到硬件主板上,這兩者共同構成了I/O設備系統(tǒng)中重要的一環(huán),共同負責對I/O設備進行信息傳遞和翻譯。2.1.4處理器處理器(CPU)是計算機的核心組成部分,由多種寄存器共同組成,為計算機操作系統(tǒng)提供信息處理、程序運行的功能。從系統(tǒng)啟動,處理器就不斷的執(zhí)行和解釋主存中的指令,處理器是按照指令來執(zhí)行模型對系統(tǒng)進行操作,指令集的結構共同構成了模型的類型狀態(tài)。CPU具備解釋與轉換功能,主要針對機器語言,內存中保存的數據通過CPU就可以得到運算。幾乎所有馮諾依曼結構的計算機的CPU,其指令的執(zhí)行過程都大致可以分為五個步驟:(1)取指令:處理器從內存中取出需要使用的對應指令,放入CPU的寄存器中。(2)指令譯碼:對從內存中得到數據然后對其區(qū)分,確定指令的用途。(3)執(zhí)行指令:執(zhí)行寄存器中指令的相應功能。(4)訪問取數:內存中不僅存放著指令也存放著數據,在上幾步取出算術符之后,還需要在內存中取出算術數據,如a+b取出相加指令之后,還要從內存中取出a和b放入寄存器中。(5)結果寫回:經過取指令和數據進行算術運算之后,將結果保存到CPU內部中。2.2操作系統(tǒng)的基本功能2.2.1存儲器管理存儲器管理為操作系統(tǒng)的多道程序的運行提供環(huán)境,存儲器管理的主要目的是方便用戶,為用戶提供安全、高效和大容量的存儲器。存儲器管理的功能主要有:存儲器空間的分配和回收;地址變換:又稱為地址映射或者重定位(relocation)。有兩種形態(tài),分為靜態(tài)和動態(tài)。前者無需硬件的支持,運作執(zhí)行過程中地址是不能發(fā)生變化的,運行中需要不間斷的存儲空間,共享難度大;后者需要來自硬件方面的支持,但空間是可以有間斷的,能夠實現虛擬存儲。存儲保護:防止程序意外出現損壞導致系統(tǒng)受到破壞,影響用戶,同時防止各個程序間相互干擾的情況。通過對各個進程設置一個上界寄存器和一個下界寄存器。在程序運行過程中,每個地址在訪問內存時,都需要與上下界寄存器中內容比較,若是超出了兩者的范圍,則產生越界中斷。存儲擴充:在邏輯上分配空間,可以獲得一個比實際內存更大的存儲空間,方便用戶使用。在單一連續(xù)分配中分為系統(tǒng)區(qū)和用戶區(qū),分別提供給操作系統(tǒng)和用戶來使用。單一連續(xù)分配運行方式如圖2-2所示。

圖2-2單一連續(xù)分配運行方式圖分區(qū)存儲管理:對內存進行劃分操作,像一個個房間一樣相互隔開,操作系統(tǒng)會獨自占用一個房間,其他房間可以互聯起來來實現共享。固定分區(qū)任務完成后,固定內存釋放,分區(qū)中的數據會清除出去以便后來的數據使用。但這種方法降低了內存效率,使用過后內存產生影響系統(tǒng)工作的碎片。分區(qū)說明表如表2-1所示。表2-1固定分區(qū)分區(qū)說明表分區(qū)號大小起始地址狀態(tài)1234510KB32KB32KB120KB300KB20KB30KB62KB94KB214KB已分配已分配未分配未分配已分配使用固定分區(qū)會將內存劃分并指定不同區(qū)域承擔不同職責,被用于操作系統(tǒng)使用或者用戶使用,固定分區(qū)內存布局如如圖2-3所示。圖2-3固定分區(qū)內存布局圖動態(tài)分區(qū)又稱為可變分區(qū)存儲管理系統(tǒng),可以根據程序的需要動態(tài)的為其分配分區(qū),使其分區(qū)大小剛好能適應作業(yè)需要,在此系統(tǒng)中分區(qū)中的大小和數目都是可以有動態(tài)變化的。動態(tài)分區(qū)布局如圖2-4所示。

圖2-4動態(tài)分區(qū)分區(qū)布局2.2.2文件管理在系統(tǒng)運行狀態(tài)下,進程是計算機的基本單位,將資源進行統(tǒng)籌管理,用戶的輸入、輸出行為則以文件為基本單位[2]。大多數應用程序的輸入和輸出都是通過文件來實現的,以文件為基本單位可以使信息長期保存以便于以后用戶的訪問。文件是文件管理系統(tǒng)的直接管理對象,同時還有目錄,是為了方便用戶對文件進行存取和檢索。高組織度的目錄往往有著強大的管理能力。這樣的組織結構能發(fā)揮出高效的處理數據能力。文件管理的基本操作有:(1)創(chuàng)建文件,當創(chuàng)建新文件時,系統(tǒng)會給新文件分配所需的外存空間,在目錄中創(chuàng)建一個目錄項,新文件的文件名和文件在外存中的地址等信息會記錄在目錄項中。(2)刪除文件,某文件需要被刪除時,系統(tǒng)從目錄之中尋找到被刪除文件的目錄項,先把目錄項變?yōu)榭枕?,然后把文件之前所使用的空間部分收回。(3)讀文件,給出文件的文件名和讀寫的內存目標地址。系統(tǒng)首先查找目錄,找到外存中存在該文件相對應的位置。用指針來完成對文件的讀寫操作。(4)寫文件,須在系統(tǒng)中找到文件的文件名和內存源地址,與讀文件過程相似,通過利用目錄中的寫指針對文件進行寫入操作。(5)截斷文件,當一個文件的內容需要大量更新時,一般采用將該文件刪除,再創(chuàng)建一個新文件來寫入內容。若文件名和屬性沒有改變,可以使用截斷文件,將源文件的長度設為零,同時放棄原本文件的內容。(6)設置文件讀寫,通過對文件指針位置的控制,在文件進行讀寫操作的時候,無需從起始位置開始操作,可以從設置的位置用指針進行讀寫操作,存取方式為隨機存取。2.2.3處理機管理進程與處理機后者對其進行操作,處理機的運行過程都是以進程為單位。進程由程序、數據和進程控制塊(PCB)組成。PCB是進程最重要的數據結構,是進程的唯一標識。處理機對進程的管理主要有進程控制、進程同步、進程通信、進程調度。進程同步機制是處理機管理的主要任務,其用途是對多個相關進程在執(zhí)行過程中進行協調。使不同的并發(fā)執(zhí)行程序能按規(guī)則(也即時序)來共同使用系統(tǒng)的資源,并形成良好的相互合作。進程同步中包括進程之間的制約,分為兩種,直接制約也即進程同步,是指程序間通力協作互相支援,按之前所制定的某一個規(guī)則,在操作系統(tǒng)中存在機制對其執(zhí)行調試。除此之外還分為間接制約,即進程互斥,當臨界資源被進程訪問時,會采用互斥方式。2.2.4用戶接口用戶接口(UserInterface)是操作系統(tǒng)和用戶之間交互和交流的橋梁,是計算機操作系統(tǒng)為用戶提供的接口之一,提供給用戶的接口。其實現信息的內部形式與人類可以理解形式的轉換。用戶接口通常分為三種,即程序接口、命令接口和圖形接口。程序接口:程序接口是操作系統(tǒng)給開發(fā)者預留的接口,由一組系統(tǒng)的調用命令組成。用戶在程序中使用系統(tǒng)調用命令向系統(tǒng)發(fā)出指令,請求系統(tǒng)提供相應的服務。命令接口:操作系統(tǒng)為用戶提供命令接口,便于用戶控制自己的計算機進行作業(yè)。命令是在命令提示符界面上進行輸入,系統(tǒng)會在后臺執(zhí)行指令,之后會將結果反映到前臺界面或者文件內。圖形接口:圖形化的操作界面包括窗口、圖標和對話框等元素,使用高識別度的圖標來指明操作系統(tǒng)的各項應用的功能,各種應用程序和文件都能直觀,清晰的表達出來。圖形接口的操作主要為菜單操作、對話框操作等。2.2.5程序接口程序接口是計算機操作系統(tǒng)為用戶提供的另一接口,為用戶在使用過程中程序執(zhí)行訪問系統(tǒng)資源的操作而創(chuàng)建的。采用面向過程語言,基本單元是過程和函數。程序接口就是系統(tǒng)指令調用,調度用來完成特定功能的子程序來完成操作系統(tǒng)需要完成的作業(yè),接口的存在使得用戶可以與外部溝通,同樣的也決定了外部可以提供什么服務給用戶。早期的系統(tǒng)調用大多使用匯編語言,但在高級語言的出現為系統(tǒng)調用提供了一個庫函數,應用程序調用庫函數來實現系統(tǒng)調用。隨著計算機操作系統(tǒng)的發(fā)展,如今的系統(tǒng)調用采用c語言編寫,通過函數提供給系統(tǒng),所以使用c語言所編寫的應用程序可以被系統(tǒng)直接調用,省去了匯編語言所帶來的麻煩。2.3本章小結本章對計算機系統(tǒng)的硬件部分及其基本功能進行了詳細介紹,通過對系統(tǒng)工作進行分析,掌握了計算機系統(tǒng)的運行原理和功能,為接下來的開發(fā)打下了理論基礎。

3系統(tǒng)模式分析自從80386處理器出現,PC機的系統(tǒng)從16位進入到了32位,32位系統(tǒng)具備更強大的運算能力,逐步替代了16位操作系統(tǒng),本系統(tǒng)就基于80386處理器,使用32位模式來作為操作系統(tǒng)。3.132位模式特點3.1.132位實模式實模式,又稱為實地址模式,CPU是完全按照80386的實際尋址方法來進行地址訪問。從00000h-FFFFFh(即1MB大?。┑牡刂贩秶M行訪問。尋址公式為:物理地址=左移4位的段地址+偏移地址。物理地址是由16位的段地址和16位的段內偏移地址組成的。但是在這種模式下,CPU只能進行單任務運行。3.1.232位保護模式保護模式,也即內存保護模式,在此模式下80386處理器的32個地址線都會運行工作。即尋址采用32位段和偏移量,最大尋址4GB的空間。在32位保護模式下,系統(tǒng)運行支持多任務模式,增加段頁式尋址機制的內存管理。在該機制的作用下,應用程序和操作系統(tǒng)的核心部分和代碼部分得到保護,提高了系統(tǒng)的整體安全性。保護模式支持80386存儲器,具備虛擬執(zhí)行80386程序的方式。同時具備快速的資源共享功能,使得32位保護模式的高效性得到極大提升。綜上32位保護模式的實用性、安全性和高效性上要優(yōu)于32位實模式,本文將在32位保護模式的基礎上進行研究。3.2分段機制3.2.1段定義及虛擬地址到線性地址的映射在32位保護模式下,需要實現虛擬地址的轉換,段就是前者轉換到線性地址這一機制的基礎[10]。段是由三個基本參數定義的:段基地址(BaseAddress),它相當于一個起點位置,處于80386保護模式下,段基地址32位長?;烽L度等同于尋址長度,段基地址中任意段都可以從32位線性地址空間中任意地址位置開始。段界限(Limit),規(guī)定了一個段的上下界大小,保護模式下,段界限為20位。段界限以字節(jié)為單位,在其屬性中定義該位的被稱為粒度位,記為G。同時存在公式:LIMIT=limit*4K+0FFFH=(LimitSHL12)+0FFFH。已知段界限為20位,其范圍為4K字節(jié)至4G字節(jié),增量為4K,可以通過公式將Limit計算出來。段屬性(Attributes),規(guī)定一個段的主要特征,上文段界限中提到的段粒度G就是也屬于段屬性中。當需要對一個段進行訪問操作時,操作系統(tǒng)將會依據段屬性來判斷此次的訪問操作是否合法。地址映射如圖3-1所示。圖3-1虛擬地址到線性地址的映射3.2.2分段的作用分頁是一個邏輯上的概念,因為在實際上程序和內存在物理上沒有存在于不同的位置。而分段是一個邏輯實體,它可以是一個變量、源代碼或者堆棧。正常情況下,每個段中只會包含同一個類型的內容。分段主要有以下作用:編譯問題:分段管理機制可以解決編譯時的地址覆蓋問題,達到簡化程序復雜性和編譯難度的問題。內存共享:分頁機制會將數據代碼集合在一起,難以共享,而分段管理機制會便于將其中代碼和數據分享給其他程序使用。安全性:分段機制將內存分段后,其中每一段的內容和類型不相同,它們能進行的操作也不一樣。某些代碼的內容一旦經過加載就無法再進行寫入操作。分頁系統(tǒng)中因為代碼以及數據被整合在一起,難以進行安全上的操作和控制。動態(tài)鏈接:當作業(yè)在運行前,各個目標程序處于分散狀態(tài)。作業(yè)得到操作指令需要進行運行時,會將過程中需要的目標子程序放入內存中,在運行過程中需要其他分散的數據段或代碼段時,會將目標程序的段加入內存再鏈接起來。3.3分段管理機制寄存器3.3.1控制寄存器分段管理機制主要是由80386控制寄存器和系統(tǒng)地址寄存器來進行控制的??刂萍拇嫫髦写嬖谒膫€不同控制器,控制寄存器結構如圖3-2所示。圖3-2控制寄存器結構圖在80386中存在四個控制寄存器,即CR0、CR1、CR2以及CR3。通常情況下工作的系統(tǒng)中,CR1一般是不發(fā)揮作用的,在80386中,如果使用CR1會導致指令輸入無效,使系統(tǒng)操作異常。但CR1在后來開發(fā)出來的處理器中仍有著重要作用。CR0:在控制寄存器中的CR0中的位0使用PE標記,位31用PG標記,前者用來控制分段管理機制,后者用來控制分頁管理機制。我們把它稱為保護控制位。PG與PE處理器工作模式如表3-1所示。表3-1PG與PE處理器工作模式PGPE處理器工作方式00110100實模式保護模式,禁用分頁機制非法保護模式,啟用分頁機制CR2和CR3被分配給分頁管理機制,CR2用于頁產生異常時進行工作,產生異常時,并生成錯誤報告。CPU把生成的錯誤信息的線性地址保存在CR2中。CR3的功能是保存頁目錄表的初始物理地址,當任務進行切換的時候,CR3也會相應的改變。如果新任務的CR3的值與之前任務的相同,那么CPU將不會刷新分頁系統(tǒng)的高速緩存,這樣會使任務執(zhí)行速度加快。3.3.2系統(tǒng)地址寄存器系統(tǒng)地址寄存器是一類特殊寄存器,用于快速定位一些特殊數據段。其中有全局描述符表GDT、局部描述符表LDT、中斷描述符表IDT。(1)全局描述符表寄存器(GDTR)GDT在整個系統(tǒng)中只有一個,可以存放在內存的任何位置,CPU需要知道GDT的入口,即GDT所在位置的基地址,而GDTR就存放著GDT入口地址的信息,CPU就根據其中的內容來尋找GDT的入口。GDTR中32位為基地址,16位為界限。在段選擇子中只有13位使描述符索引,每個描述符長度為8個,所以GDTR中界限的16位使足夠的。一般情況下,對含N個描述符的的段界限設為8*N-1?;刂泛徒缦奕鐖D3-3所示。32位基地址16位界限GDTRGDT低地址高地址圖3-3GDTR中的基地址和界限(2)局部描述符表寄存器(LDTR)局部描述符寄存器規(guī)定了當前任務的局部所使用的LDT。寄存器中包含LDT選擇子,同時LDTR選擇子會選定GDT中的類型為LDT的系統(tǒng),同時處理器裝入部分可見選擇子,從GDT中得到描述符,把基地址、界限和屬性存入到LDTR的高速緩沖寄存器中。(3)中斷描述符表寄存器(IDTR)中斷描述符寄存器與IDT相鏈接,IDTR的數據段為48位,基地址即為IDT的基地址,長度為32位。IDT規(guī)定的段界限為16位。在80386處理器中,IDT表的最大長度為2k,原因為其最多支持256個中斷/異常。3.4控制轉移控制轉移對于同一任務來說,他們的特權級有兩種,分為任務內和任務間的。同任務的轉移進一步劃分:段間轉移、特權級不變的段間轉移、特權級變換的段間轉移。實模式與上述相似,上文中提到的16位實模式不會有特權級和任務的轉換。3.4.1向目標代碼段間轉移的步驟(1)判別目標地址的指針中顯示的描述符為空與否??彰枋龇煌谄渌?,代碼段的描述符是絕不為空的。(2)全局或者局部描述表讀取代碼和數據段,其中選擇子的TI位,將決定使用局部或者全局描述表。(3)根據作業(yè)運作中的實際情況,檢測描述符類型正確與否,是否合乎規(guī)則,同時調整TPL。(4)CS寄存器在控制轉移中十分重要,特點是高速緩沖,相關程序數據會存到其中。(5)對指針正確性進行判斷,確保在正確的范圍之中。3.4.2任務內無特權級轉移的轉換任務內無特權級轉移的轉換:轉移到新代碼段,CPL保持不變,通過JMP來執(zhí)行段間轉移指令、段間調用指令CALL、段間返回指令RET來實現任務內無特權轉移的轉換。同樣的,使用INT和IRET也可以實現,無特權級轉移的轉換可以不更改CPL,部分時候RPL=CPL[3]。3.4.3任務內不同特權級的轉換任務內往往會出現不同程序的不同特權級的轉換情況。當一個外層應用需要讀寫內部操作系統(tǒng)時,就需要獲得如內存分配、修改管理等操作系統(tǒng)的指令,這種情況出現時就需要進行不同特權級的轉換,當這一過程完成后,會從內部返回到外層應用程序。特權級在同一任務下,內層需要到外層時,段間調用指令會通過調用門進行特權級的轉移。外層需要到內層時,段間返回指令就會發(fā)揮作用。在實現不同特權級轉移時往往使用的是段間調用指令CALL和段間返回指令RET,不能夠使用JMP指令來進行轉移。3.5本章小結本章介紹了32位系統(tǒng)的實模式和保護模式的優(yōu)缺點,對其中的分段機制進行了介紹。同時,控制轉移機制也能為系統(tǒng)運行的優(yōu)先級進行劃分,負責系統(tǒng)中不同任務之間執(zhí)行順序的切換。

4系統(tǒng)設計4.1系統(tǒng)開發(fā)流程環(huán)境本文將對作者自行開發(fā)的簡易PC操作系統(tǒng)進行簡述,方便期間下文中將對SimpleOS簡稱為OS。在OS的整個開發(fā)研究過程中主要使用兩種語言,一個為匯編語言,一個是C語言??紤]到C語言更簡潔,具有更高的普及度,所以在OS的整個編寫過程減少對匯編語言的使用,主要使用C語言編寫,保證了系統(tǒng)的簡潔性和穩(wěn)定性,減少了維護和調試過程中的難度。由于在32位保護模式下是不能使用BIOS的,BIOS中所有代碼段都是16位,無法使用,在這個情況下,匯編語言主要負責前期整個系統(tǒng)從16位實模式到32位保護模式跳轉的過程。在跳轉之前,通過匯編語言可以從16位實模式中得到BIOS中的有關于計算機硬件的信息,并將其進行保存在內存的某個地址中。當系統(tǒng)變?yōu)?2位保護模式時,仍然可以調用到這些信息。整個OS的開發(fā)流程主要有這幾個流程組成。(1)整個OS的程序源代碼是在Windows平臺上進行編寫的,使用c語言和匯編語言。(2)使用二進制編輯器進行編程,生成需要的機器語言文件。(3)需要將映像文件寫入磁盤中,通過對機器語言進行鏈接,然后制作成系統(tǒng)的啟動區(qū)。(4)虛擬映像文件。映像文件是把原本的光盤、硬盤或者磁盤上的數據和程序一一對應的一種文件,它的存儲內容和格式與原本的實體文件完全一致,即虛擬映像文件可以反映出存儲介質保存的的實際內容。虛擬映像文件可以通過系統(tǒng)程序的虛擬機QEMU進行加載,以啟動盤分區(qū)的方法讀取其中內容,可以得到與讀取實體存儲介質完全一樣的結果。以這種方式來進行開發(fā),降低開發(fā)難度,提高了開發(fā)的效率。(5)Makefile工具,Windows系統(tǒng)的IDE往往代替了Makefile的功能,導致很多使用Windows的程序員對其不了解。在OS的開發(fā)過程中用到了必須大量軟件,如c語言和匯編語言編譯器、虛擬映像寫入讀取文件以及鏈接器等。這些軟件都是通過代碼來使用的,每次使用一個軟件的功能都需要輸入一次指令,效率低下。而如果使用批處理文件,會導致在OS開發(fā)后期存在大量文件之間的依賴,進行改動時批處理文件需要運行多次才能完成。而Makefile文件可以管理整個工程的的編譯規(guī)則,定義那些文件需要先編譯,哪些后編譯或者重新編譯。Makefile最大的好處就是“自動化編譯”,完成后,只要一個指令就可以讓工程自動編譯,加快了整個工程的開發(fā)效率。(6)在OS開發(fā)過程中,匯編語言的編寫使用的是Notepad++,c語言的編譯使用的是vscode。4.2運行原理4.2.1引導扇區(qū)計算機啟動時,操作系統(tǒng)會對計算機各個重要參數進行自檢,硬盤的主引導扇區(qū),分區(qū)引導扇區(qū)和分區(qū)表。如果啟動時任何參數出現錯誤,都會使系統(tǒng)無法啟動或者數據的丟失。系統(tǒng)啟動時會將系統(tǒng)權利移交給啟動扇區(qū),啟動扇區(qū)會引導OS的內核,也即是說引導扇區(qū)之后操作系統(tǒng)才能正常工作起來。從上文中可以知道由于16位實模式的的弊端,但在BIOS之中都為16位數據段,32位保護模式無法運行。這時候引導扇區(qū)就可以在BIOS中讀出計算機的信息。確保了OS在32位保護模式的情況下仍然能通過BIOS得到機器信息。4.2.2內核的加載和執(zhí)行當操作系統(tǒng)在引導扇區(qū)后,存在一個Loader,這個模塊用來加載內核,同時管理模式之間的轉換[14]。在加載內核時,BIOS中的讀取磁盤中斷程序,將磁盤內容復制到內存中,同時把定位到處理器的EIP寄存器的當前位置,系統(tǒng)才能夠運行。地址空間是一個固定結構,對于每個應用程序來說,也同樣有著相同的虛擬地址空間,可以保證各個應用進程都能夠調用操作系統(tǒng)內核來執(zhí)行和完成自己的工作。在保護模式下,依然可以從內存中得到引導扇區(qū)過程中保存的計算機信息,可以在32位保護模式下使用。系統(tǒng)內存分布如圖4-1所示。圖4-1系統(tǒng)內存分布情況圖4.3內核設計4.3.1內存管理機制總的來說,操作系統(tǒng)內存管理分為兩個,物理和虛擬內存。物理內存管理有程序裝入、交換技術、連續(xù)分配管理方式和非連續(xù)分配管理方式[13]。虛擬內存管理中又有分頁管理方式,工作集和抖動燈功能。OS內存管理主要為系統(tǒng)提供內存的檢查、分配和釋放,也管理容量,減少磁盤運作過程中產生的碎片。4.3.2定時器定時器(Timer)在整個操作系統(tǒng)中占有重要地位,它的作用是每經過一段時間向處理器發(fā)送一個中斷信號,有了定時器,處理器就可以提升效率,不用承擔計時功能。定時器的存在可以讓系統(tǒng)使用HLT指令,讓一個指令的時鐘周期定位一個固定值,HLT指令執(zhí)行時,程序可以準確知道時間。同時避免了時間的浪費,也避免了電能浪費。想要使用定時器,就需要用8254芯片,也稱為PIT,即可編程的間隔型定時器。PIT是獨立芯片,安裝在硬件主板上?,F在已經與PIC一同集成在同一芯片上了。PIT連接著IRQ0,PIT通過對IRQ設定中斷時間就可以進行整體控制。IRQO的中斷周期變更:AL=0x34:OUT(0x43,AL);AL=中斷周期的低八位;OUT(0x40,AL);AL=中斷周期的低八位;OUT(0x40,AL);在上文中的32位保護模式中,我們詳細提到過IDT。在使用定時器時我們需要設置中斷頻率,并將這個中斷頻率注冊到處理器的中斷控制器IRQ中,其中IRQ的0號引腳用來控制中斷頻率。4.3.3FIFO緩沖區(qū)FIFO緩沖區(qū)是一個用于數據緩沖的地址區(qū)域,通常情況下在讀取大數據的時候,主控沒辦法及時進行處理,就會先把這個大數據存入到FIFO緩沖區(qū)中儲存起來。FIFO緩沖區(qū)是一個先進先出的隊列容器,在數據告訴傳輸過程中用于輸出和輸入難以同步的場合。緩沖區(qū)運行方式如圖4-2所示。圖4-2FIFO緩沖區(qū)的運行方式如果next不是0,說明至少存在一個數據,將初始數據放在data[0]中,將數據放入i中,這樣數就減少了,相應的next-1。如圖4-3所示,將內部存放的數據全都向前移動一位,如果數據不前移的話,data[0]的空間就會被占用,無法讀入數據。4.3.4輸入控制鼠標作為計算機操作的關鍵設備,早期是不會產生中斷信號的,即數據從鼠標發(fā)出,向處理器傳達的過程中,CPU對此次數據傳輸不進行接收。所以鼠標控制系統(tǒng)需要用到上文中的FIFO緩沖區(qū)來接收中斷信號。不同之處是只有PIC能收到通知。首先會通知IRQ中的IRQ-12,接下來才會通知主PIC。PIC無法靠自身來完成數據上的協調,程序需要告知PIC如何執(zhí)行,否則PIC就會忽略掉接下來的中斷請求。而鍵盤的處理運作方式和鼠標基本相同,甚至代碼部分也可以共用,也即鼠標控制的過程與鍵盤一致。鼠標相較于鍵盤,會更快更密集的輸出巨量的信息,所以FIFO緩沖區(qū)的大小必須足夠,否則就會發(fā)生溢出的情況,于是將FIFO緩沖區(qū)的大小設置為128字節(jié)。為了確保利用率,FIFO緩沖區(qū)一般情況下都是滿的,如果出現了FIFO緩沖區(qū)變空的情況,系統(tǒng)將執(zhí)行HLT,因為鼠標和鍵盤都會使用這個緩沖區(qū),在執(zhí)行時,會先檢測keyinfo,有數據就會將其顯示,反之就會去檢測mouseinfo,同樣也會顯示出來。這樣就能使數據顯示出來。鼠標鍵盤控制運行如圖4-3所示。圖4-3鼠標鍵盤控制運行情況4.3.5多任務管理多任務就是能讓計算機系統(tǒng)操作系統(tǒng)同時執(zhí)行多個任務的機制,一個計算機硬件系統(tǒng)中只有一個CPU,通過對CPU進行設置讓其每間隔一段極短的時間就切換到不同程序運行,使其看上去是在同時執(zhí)行多個任務。當CPU執(zhí)行任務切換的指令,CPU會將寄存器中的值加載到內存中,這樣一來,下次切換回到該程序的時候就能從中斷處準確恢復運行。下一個程序運行前,CPU會把寄存器中的數據從內存中取出。這一個對內存進行讀寫的操作過程就是任務切換所需要花費的時間[8]。(1)多任務自動化任務管理自動化能提高OS的運行效率,它是通過一個計時器來完成這個操作的。計時器是全局變量,將其定義成externstructTIMER*task_timer。計時器每經0.01s就會切換任務,每個任務占用處理器時,會把自身的優(yōu)先級priority賦給task_timer用來計時。這樣一來,通過該計時器,就能實現多任務自動化。(2)任務休眠當經過一段時間隊列中沒有需要執(zhí)行的程序,比如鍵盤或者鼠標沒有進行輸入操作,那么接收程序就不需要運行,否則會浪費CPU性能,此時就需要任務進入休眠狀態(tài)。任務休眠不是將任務刪掉,是將TASK移除隊列,是將指針移除,并非移出實體。(3)任務優(yōu)先級OS中所設置的的優(yōu)先級,參考了其他系統(tǒng)的方式,整個系統(tǒng)按照1000個任務到100個等級再到10個任務。在數據結構上由level屬性控制。優(yōu)先級priority是控制一次任務運行時間的屬性。(4)閑置任務上文中提到,當隊列中沒有任務時,CPU會進行休眠,實際上在休眠之前我們需要一個指令來管理這個機制,通過使用匯編語言中的HIL指令來讓CPU完成休眠操作。函數io_hit()中就存在著HIL指令。我們設計了特殊任務,任務的優(yōu)先級排為最低,這樣就可以系統(tǒng)沒有運行其他任務時,就會運行這個特殊任務,它負責讓CPU進入休眠狀態(tài)。當有其他任務輸入,如鼠標或鍵盤數據輸入,就會重新喚醒CPU。這一機制十分有利于整個系統(tǒng)的高效性和穩(wěn)定性,從長遠看降低了CPU的損耗,延長了計算機硬件的壽命。4.3.6API在C語言中,文件的運行過程對與用戶來說其實是一種黑箱狀態(tài),我們看不到其中的運作模式,大致流程是對硬盤數據進行讀取最后呈現給用戶。對于整個過程,OS把所有復雜過程和操作數據裝進一個盒子里,可以把盒子稱為組成動態(tài)鏈接庫組件。當需要使用時直接把盒子拿出即可使用。盒子的本質就是API。API具有三個特點:(1)API接口具有定義明確的特點,能夠為其他軟件提供指定類型服務。(2)API的容量可大可小,可以只有一個單獨函數,也可以包含大量的類、方法、常量和數據類型等。(3)API可以私有也可以開源。在OS系統(tǒng)中,編程接口API通過模擬windows的DOS中的中斷指令來實現系統(tǒng)代碼的調用,使OS可以使用API,過程在IDT中進行函數的注冊和執(zhí)行,同時設置對應中斷信號,用戶能通過中斷指令INT調用系統(tǒng),且它的參數分散在不同寄存器里。中斷描述符表IDT最多有256個函數,在0x30—0xFF這個范圍都是空的,中斷信號作用于這個范圍內。編程接口在OS中占有很高地位,設計整個系統(tǒng),數量十分龐大,如果一個中斷信號只對應一個調用指令,顯然不夠。我們可以通過上文中提到的DOS,在其中放入功能號,使單個INT中斷信號就能調用大量API函數。在實際代碼編寫中,我們用調用函數asm_hrb_api,CPU會跳轉到該函數,它的主要功能是存入寄存器,其中有寄存器原本的值,通過堆棧為hrb_api傳遞參數。hrb_api主要對EDX進行判別,在不同的分支中使用不同參數做處理。API的調用過程如圖4-4所示圖4-4系統(tǒng)API調用過程

4.4本章小結本章對系統(tǒng)的底層功能進行了原理上的分析和實際操作,保證了最基本的系統(tǒng)能成功穩(wěn)定的啟動。通過對操作系統(tǒng)的底層構建,才能在這之上為系統(tǒng)添加各式功能,尤其是加入了API接口功能,豐富了系統(tǒng)的內容,提高實用性,使得在操作系統(tǒng)上添加各種小程序成為了可能。

5系統(tǒng)實現5.1鍵鼠控制鍵盤和鼠標的功能對于圖形化操作系統(tǒng)必不可少,操作系統(tǒng)主要是以命令行窗口來使用各種功能,雖然由于QEMU模擬器的限制,小部分字符存在錯位的現象,但對于正常使用并不影響,主要使用場景為鍵盤的輸入功能以及鼠標的光標功能來拖動窗口。鍵鼠操作效果如圖5-1所示。圖5-1鍵鼠操作圖效果圖5.2多命令行窗口但命令行窗口會限制用戶在實際使用過程中的效率,通過對sht_cons[]函數進行賦值,由該函數將值傳遞給key_win函數,通過使用start命令開啟新的窗口[4]。這樣在足夠的內存空間內,可以無限量打開窗口。當執(zhí)行完后窗口需要關閉,可以在命令行內輸入exit命令來關閉對應的窗口。當界面上沒有窗口時,使用shift+F2喚起一個新窗口。(1)通過start命令來打開多個窗口,如圖5-2所示。圖5-2多窗口運行圖(2)通過exit命令關閉不需要的窗口,如圖5-3所示。圖5-3關閉窗口5.3命令行內容管理本系統(tǒng)的各種功能主要是通過在命令行窗口輸入指令來調用不同的功能,正確的指令會被系統(tǒng)執(zhí)行對應程序,當用戶輸入錯誤的指令,命令行窗口會給用戶相應的反饋提示用戶輸入的指令出現了錯誤。當窗口中的內容過多時,在不開啟新的窗口的情況下,用戶仍然可以通過指令來完成清屏操作。(1)當用戶輸入了錯誤的指令,窗口會反饋“Badcommand”錯誤提示信息告知用戶。命令行窗口錯誤信息如圖5-4所示。圖5-4命令行錯誤信息(2)長時間使用同一窗口導致信息過多時,用戶可以輸入cls指令來完成清屏操作。命令行窗口清屏如圖5-5所示。圖5-5命令行窗口清屏

5.4磁盤文件讀取管理操作系統(tǒng)的磁盤上所保存的內容,我們需要查看文件的文件名、擴展名和文件大小,通過在命令行中輸入dir命令來調用這一功能,讀取出來的信息會暫時保存在內存中。磁盤文件讀取結果如圖5-6所示。圖5-6磁盤文件內容圖5.5內存容量檢查在操作系統(tǒng)實際運行過程中,內存用量關系到系統(tǒng)運行速度,本操作系統(tǒng)是在QEMU模擬器上運行的,模擬器的運行設定內存為32MB,我們可以通過mem指令來查看剩余內存用量。內存容量檢查如圖5-7所示。圖5-7內存容量檢查5.6文字支持對于一個操作系統(tǒng),我們所使用的命令都是以英文形式呈現,為了系統(tǒng)更方便使用,加入了系統(tǒng)對中文字符的支持,同時為系統(tǒng)加入了文本閱覽器功能,因為機能限制主要查看以nas格式的系統(tǒng)文本文件,用來查詢系統(tǒng)的磁盤用量,分區(qū),扇面和內存等基本信息,通過tview指令打開nas文件。文字顯示效果如圖5-8所示。圖5-8文字支持效果圖5.7命令行計算器我們計算器在代碼中使用了strtol函數,可以將字符串形式的數值轉換為整數,字符串地址用s,base為進制,10就是十進制,而16代表十六進制[5]。在計算器中最重要的函數就是getnum,它將以字符串為形式的算式加以解釋,最終獲得一個數值,除此外還負責管理不同運算符之間的優(yōu)先級順應(比如乘除法的優(yōu)先級要高于加減法)。用于運算的算術符有+-*/%()^|,結果為十進制和十六進制,計算都是按整數計算。并且計算中可以出現負數。實際計算器運行狀態(tài)如圖5-9所示。圖5-9命令行計算器運行圖由于OS的命令行計算器使用了C語言的語法規(guī)則,在運算時^代表XOR異或運算,比如2^3即為2XOR3,2的二進制為10,3的二進制為11,異或運算后會得到1。和C語言一樣,我們也可以輸入十六進制運算,在數字前加上0X即可。5.8計時器本節(jié)中將制作一個定時器的API用作計時器作用,讓程序具備計時功能。我們的API主要分為四個方面:獲取計時器(alloc)EDX=16EAX=計時器句柄設置計時器的數據發(fā)送(init)EDX=17EBX=計時器句柄EAX=數據計時器時間設定(set)EDX=18EBX=計時器句柄EAX=時間釋放計時器(free)EDX=19EBX=計時器句柄在之前的OS中,對時間的顯示我們一直用秒來表示,在次計時器中,需要去顯示時、分、秒,這樣做會讓計時器更直觀,符合正常的使用邏輯。當計時器出現超時的情況時,會產生一個值128,當且只當用戶控制鍵盤時會產生這個值,那么在這個時候計時器的應用程序就會退出。通過noodle命令來執(zhí)行。計時器實際運行如圖5-10所示圖5-10計時器實際運行圖5.9圖片閱覽器通過系統(tǒng)的圖片閱覽器功能,可以查看保存在本地磁盤上的圖片文件。通過對程序源碼的的bmp.nasm和jpeg.c的使用,使得系統(tǒng)可以識別打開bmp和jpeg格式的圖片。在系統(tǒng)中通過命令行中輸入指令gview加上文件名和后綴的方式,用圖片閱覽器打開圖片。圖片閱覽器效果圖如圖5-11所示。圖5-11圖片閱覽器效果圖5.10娛樂功能在保證操作系統(tǒng)的基本應用程序功能后,提升系統(tǒng)的整體完成度和趣味性,加入了不同的休閑程序。(1)質數查詢可以讓用戶通過輸入sosu指令,命令行會輸出100以內的全部質數,通過輸入sosu2指令可以在命令行中顯示出1000以內的全部質數,sosu3會顯示出10000以內的全部質數。質數查詢效果如圖5-12所示。圖5-12質數查詢效果圖(2)加入射擊游戲,在游戲中玩家可以通過鍵盤方向鍵或者是小鍵盤的“4”和“6”鍵控制左右移動,使用空格鍵進行射擊。同時玩家的得分將會被記錄。消滅所有目標或當目標到達最下方一行時游戲結束,玩家可以通過回車鍵來開啟新一局游戲,也可以按Shitf+F1關閉窗口。游戲效果如圖5-13所示。圖5-13游戲效果圖5.11本章小結本章實現了PC簡易操作系統(tǒng)的應用程序開發(fā),首先實現了對影響后續(xù)的關鍵的鍵鼠控制和多命令行窗口模塊,對后續(xù)其他程序奠定基礎。隨后對系統(tǒng)的磁盤文件讀取和內存管理功能進行開發(fā),最后在此基礎上開發(fā)出計算器等豐富操作系統(tǒng)內容的程序,提高了操作系統(tǒng)完成度。

6系統(tǒng)測試6.1測試介紹系統(tǒng)測試通常為了提高系統(tǒng)的整體質量,對預想中系統(tǒng)的功能進行測試、審核和評估,以此來檢查系統(tǒng)的各個功能指標是否正常,是否存在漏洞和不足,以此來對系統(tǒng)進行修改和維護。主要測試操作系統(tǒng)是否可以正常的運行,圖形化界面和布局是否正常,命令行中的字符等是否顯示正常。其次測試各個應用程序中的代碼、數據結構、變量聲明是否正確,所對應的應用程序能否正常運行,能否達到應用程序的預想效果。在此過程中對測試對象進行記錄,遇到錯誤問題及時進行修復,避免對其他應用程序的影響。6.2功能測試本文主要采用的測試方法是黑盒測試。黑盒測試確定了系統(tǒng)中應該具有的功能,再對應的對每個具體的功能進行單獨測試,檢查其能否正常運行。它的好處是測試者只用按照對應的操作方法對系統(tǒng)中的每個功能進行測試,不需要對系統(tǒng)中的邏輯結構有所了解,本系統(tǒng)中的各個功能大部分是相對獨立的,因此黑盒測試非常適合本系統(tǒng)的系統(tǒng)測試。對操作系統(tǒng)的程序功能如表6-1所示。表6-1操作系統(tǒng)功能測試表測試對象測試方法預期結果實際結果系統(tǒng)啟動FIFO緩沖區(qū)定時器內存管理API接口鍵盤控制鼠標控制命令行窗口

多命令行窗口多任務管理

窗口關閉

命令行內容管理

文件讀取文字支持

命令行計算器計時器圖片閱覽器質數查詢

小游戲用makerun_full指令使用count函數計時設置一個時間間隔使用dir指令

運行應用程序

鍵盤輸入各類字符

移動鼠標

拖動輸入內容使用sta

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論