亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一個(gè)教學(xué)用操作系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

        2007-12-31 00:00:00王紅玲褚亞銘強(qiáng)
        計(jì)算機(jī)教育 2007年8期

        摘要:本文首先指出了現(xiàn)有的教學(xué)用操作系統(tǒng)存在的不足,然后設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)運(yùn)行在虛擬機(jī)上的微內(nèi)核結(jié)構(gòu)的教學(xué)用操作系統(tǒng),描述了系統(tǒng)中進(jìn)程管理、進(jìn)程間通信、基本內(nèi)存管理、磁盤服務(wù)器以及文件服務(wù)器的設(shè)計(jì)和實(shí)現(xiàn)。本系統(tǒng)的實(shí)現(xiàn)將有利于學(xué)生從微觀上觀察操作系統(tǒng)的行為特征,并且?guī)椭麄兝碚撀?lián)系實(shí)際,具有較好的教學(xué)價(jià)值。

        關(guān)鍵詞:微內(nèi)核;操作系統(tǒng)

        中圖分類號(hào):G642文獻(xiàn)標(biāo)識(shí)碼:A

        文章編號(hào):1672-5913(2007)08-0063-03

        A Design and Implementation of an Operating System for Tutorial

        WANG HonglingZHU YamingLV Qiang

        (School of Computer Science and Technology, Soochow University, Suzhou, 215006, China)

        Abstract: This paper firstly points out the weaknesses of current popular operating systems for tutorial, then designs and implements a microkernel operating system for tutorial on Bochs. It describes the design and implementation of process management, IPC, basic memory management, file system server and disk server in detail. The system will do benefits to students in helping them learning operating system principles and offering them a platform to practices what they have learned in class.

        Keywords: microkernel;operating system

        0 引言

        操作系統(tǒng)(Operating System)是計(jì)算機(jī)系統(tǒng)中最重要的系統(tǒng)軟件,是硬件的第一層封裝與抽象,在計(jì)算機(jī)系統(tǒng)中占據(jù)著重要的地位。操作系統(tǒng)課程是計(jì)算機(jī)專業(yè)學(xué)生的必修重點(diǎn)課程,其目的在于使學(xué)生掌握操作系統(tǒng)的基本概念與原理并為今后的相關(guān)技術(shù)學(xué)習(xí)與研究打下良好的基礎(chǔ)。

        但是在多年的教學(xué)實(shí)踐中,始終存在著教師覺得不好教,學(xué)生覺得不好學(xué)的問題。造成這個(gè)問題的重要原因之一在于這門課程的課堂理論教學(xué)環(huán)節(jié)相對(duì)比較成熟,但是實(shí)踐教學(xué)環(huán)節(jié)卻相對(duì)滯后,或者說兩者之間的平衡把握的不好[1]。IEEE/ACM在2001年的本科生教學(xué)建議中再次強(qiáng)調(diào),操作系統(tǒng)的教學(xué)在進(jìn)行理論講授的同時(shí),必須結(jié)合相當(dāng)數(shù)量的動(dòng)手實(shí)踐[2]。只有通過閱讀操作系統(tǒng)的源代碼,并且親自動(dòng)手對(duì)其進(jìn)行修改與擴(kuò)展即強(qiáng)調(diào)實(shí)踐環(huán)節(jié)[3],學(xué)生才有可能對(duì)操作系統(tǒng)課本所講述的抽象原理有比較深刻的理解。因此一個(gè)合適的教學(xué)專用操作系統(tǒng)實(shí)驗(yàn)平臺(tái)對(duì)本科生操作系統(tǒng)課程的順利開展有著重要的意義。

        1 常用實(shí)驗(yàn)操作系統(tǒng)簡介

        目前國內(nèi)外大學(xué)在講授操作系統(tǒng)課程時(shí),主要使用的實(shí)驗(yàn)操作系統(tǒng)有Linux[4][5]、Minix[6]以及Nachos[7]。從純粹教學(xué)的角度來看,這幾個(gè)教學(xué)平臺(tái)各有特點(diǎn)又各自存在著某些方面的不足。歸納起來,現(xiàn)有的用于教學(xué)的操作系統(tǒng)平臺(tái)存在著以下三個(gè)問題:

        (1) 絕大多數(shù)系統(tǒng)安裝在裸機(jī)上。系統(tǒng)在承擔(dān)實(shí)驗(yàn)平臺(tái)這個(gè)角色的同時(shí)還要承擔(dān)起系統(tǒng)支撐環(huán)境的角色,這種角色上的重疊使得調(diào)試跟蹤以及修改擴(kuò)展都很不方便。

        (2) 過于實(shí)用,導(dǎo)致代碼量過于龐大。這些強(qiáng)調(diào)實(shí)用的操作系統(tǒng)將學(xué)生置身于一個(gè)技巧與實(shí)現(xiàn)細(xì)節(jié)的大森林,在這種情況下學(xué)生更多的是挫折感和失落感,同時(shí)很難把握住其中的關(guān)鍵點(diǎn)并且走出這個(gè)大森林。

        (3) 對(duì)體系結(jié)構(gòu)強(qiáng)調(diào)的不夠。前面提到的三款操作系統(tǒng)中除Minix以外都是傳統(tǒng)的單一內(nèi)核結(jié)構(gòu)的操作系統(tǒng)。

        這些問題的存在,影響了學(xué)生(特別是本科生)課程實(shí)驗(yàn)的順利開展。

        2 系統(tǒng)設(shè)計(jì)

        針對(duì)上述存在的問題,我們?cè)O(shè)計(jì)了一個(gè)針對(duì)大學(xué)操作系統(tǒng)課程的實(shí)驗(yàn)系統(tǒng)。系統(tǒng)的設(shè)計(jì)理念是“弱化實(shí)用功能,突出實(shí)現(xiàn)原理”,在力求說清楚操作系統(tǒng)原理中一些重點(diǎn)與難點(diǎn)的大前提下,適當(dāng)?shù)貙?duì)具體細(xì)節(jié)作簡化,盡可能控制系統(tǒng)的規(guī)模,以避免一些枝節(jié)的問題影響學(xué)生對(duì)重點(diǎn)的理解。

        2.1 總體設(shè)計(jì)

        系統(tǒng)的設(shè)計(jì)目標(biāo)是:完備性、可擴(kuò)展性和可操作性。

        所謂完備性是指系統(tǒng)應(yīng)包含操作系統(tǒng)中的基本概念與原理,主要包括進(jìn)程管理、內(nèi)存管理、文件系統(tǒng)管理和設(shè)備管理四大模塊。針對(duì)每個(gè)模塊的核心概念設(shè)計(jì)相應(yīng)代碼,在此基礎(chǔ)之上各個(gè)模塊又可以整合成一個(gè)完整的可運(yùn)行系統(tǒng),從而在體現(xiàn)各部分實(shí)現(xiàn)原理的同時(shí),向?qū)W生展示一個(gè)全貌,讓他們了解各部分是如何有機(jī)地組合到一起的。

        在達(dá)到內(nèi)容完備性的前提之下,系統(tǒng)還應(yīng)該力求便于學(xué)生的閱讀與擴(kuò)展。由于微內(nèi)核操作系統(tǒng)同單一內(nèi)核操作系統(tǒng)相比,具有結(jié)構(gòu)更加清晰、更容易擴(kuò)展等優(yōu)點(diǎn)[8][9],所以我們采用微內(nèi)核體系結(jié)構(gòu)作為系統(tǒng)的體系結(jié)構(gòu)。

        另外,為了保證系統(tǒng)的可操作性,系統(tǒng)采用了Bochs虛擬機(jī)[10]作為底層運(yùn)行平臺(tái)。理由是:Bochs完全模擬了i386,使得系統(tǒng)不失真實(shí)性。同時(shí)Bochs提供的強(qiáng)大的配套調(diào)試工具便于學(xué)生跟蹤了解系統(tǒng)運(yùn)行的具體狀態(tài)與精確時(shí)序。由于使用了虛擬機(jī),避免了學(xué)生在硬件故障排除這個(gè)比較棘手的問題上花費(fèi)大量不必要的時(shí)間,并且大大節(jié)省了編輯、編譯、下載、調(diào)試的時(shí)間周期,系統(tǒng)也不需要頻繁地重啟。

        整個(gè)實(shí)驗(yàn)平臺(tái)的邏輯結(jié)構(gòu)圖如圖1所示。其中微內(nèi)核直接運(yùn)行于Bochs虛擬機(jī)之上,它在完成了對(duì)硬件的封裝與抽象之后,向應(yīng)用層提供了一個(gè)支撐環(huán)境,而各個(gè)系統(tǒng)服務(wù)器與用戶進(jìn)程則運(yùn)行于此支撐環(huán)境之上。

        2.2 系統(tǒng)結(jié)構(gòu)與模塊劃分

        在構(gòu)建整個(gè)實(shí)驗(yàn)平臺(tái)時(shí),系統(tǒng)根據(jù)功能被劃分為微內(nèi)核與核外服務(wù)器這兩大部分。各個(gè)服務(wù)器與用戶進(jìn)程通過微內(nèi)核這一消息總線進(jìn)行消息傳遞,如圖2所示。

        2.2.1 微內(nèi)核部分

        系統(tǒng)的微內(nèi)核僅僅實(shí)現(xiàn)一些最為基本的服務(wù),它為整個(gè)系統(tǒng)的正常運(yùn)作提供基礎(chǔ)保障。它被實(shí)現(xiàn)在核心級(jí),可以執(zhí)行特權(quán)指令,這是因?yàn)檫@部分實(shí)現(xiàn)高度依賴底層的硬件。微內(nèi)核直接與底層硬件打交道,并且通過少量的應(yīng)用程序編程接口向上層提供一個(gè)內(nèi)核的抽象。這部分包括進(jìn)程管理、進(jìn)程間通信、基本內(nèi)存管理以及中斷的響應(yīng)框架,具體功能包括:

        (1) 進(jìn)程管理。負(fù)責(zé)實(shí)現(xiàn)進(jìn)程的創(chuàng)建、進(jìn)程的撤銷以及最為核心的進(jìn)程調(diào)度。

        (2) 進(jìn)程間通信。負(fù)責(zé)提供一種或多種進(jìn)程間直接或間接通信的方式。

        (3) 基本內(nèi)存管理。負(fù)責(zé)對(duì)物理內(nèi)存進(jìn)行分配與回收,以及對(duì)進(jìn)程虛擬地址空間的管理。

        (4) 陷入處理。負(fù)責(zé)整個(gè)系統(tǒng)的系統(tǒng)調(diào)用、異常與中斷響應(yīng)框架的處理,這是系統(tǒng)其余部分正常工作的基礎(chǔ)。

        2.2.2 服務(wù)器部分

        這部分實(shí)現(xiàn)的是高層服務(wù)的提供者,它們以服務(wù)器的形式存在于用戶空間中,并且采用客戶機(jī)/服務(wù)器的方式與普通用戶進(jìn)程進(jìn)行通信。服務(wù)器通過消息中指定的操作符與參數(shù)調(diào)用執(zhí)行本模塊實(shí)現(xiàn)的系統(tǒng)服務(wù)。采用這種設(shè)計(jì)方案可以避免一個(gè)服務(wù)器的行為干擾同一系統(tǒng)中的其他模塊,每個(gè)服務(wù)器僅僅公開必須要讓外界知道的接口即訪問方式而將具體的實(shí)現(xiàn)細(xì)節(jié)隱藏了起來。

        2.3 開發(fā)平臺(tái)

        系統(tǒng)開發(fā)采用了Linux平臺(tái),這是因?yàn)橐环矫鍸inux環(huán)境下有著比較齊全的系統(tǒng)開發(fā)工具,比較適合做系統(tǒng)層開發(fā)平臺(tái);另一方面Bochs虛擬機(jī)也有相應(yīng)的運(yùn)行在Linux平臺(tái)上的版本。

        3 系統(tǒng)實(shí)現(xiàn)

        3.1 微內(nèi)核關(guān)鍵機(jī)制的實(shí)現(xiàn)

        本系統(tǒng)微內(nèi)核主要實(shí)現(xiàn)了五個(gè)功能模塊,除了2.2.1所述的四個(gè)功能模塊外,還實(shí)現(xiàn)了內(nèi)核代理服務(wù)器。它也是一個(gè)進(jìn)程,與其他普通進(jìn)程的區(qū)別僅在于:它沒有用戶空間堆棧并且始終運(yùn)行在內(nèi)核空間中。主要作用是代表內(nèi)核與核外各服務(wù)器以及普通用戶進(jìn)程通信。

        對(duì)于內(nèi)核中其他功能模塊,我們都是從便于學(xué)生理解和擴(kuò)展出發(fā),實(shí)現(xiàn)操作系統(tǒng)原理所述的基本概念。在進(jìn)程管理模塊中,重點(diǎn)設(shè)計(jì)和實(shí)現(xiàn)進(jìn)程控制塊,進(jìn)程調(diào)度采用了基于優(yōu)先級(jí)的FIFO調(diào)度算法。系統(tǒng)設(shè)計(jì)并實(shí)現(xiàn)了兩種具有代表性的進(jìn)程間通信機(jī)制:消息傳遞和共享內(nèi)存,其中消息傳遞的接收是阻塞式的,發(fā)送是同步的。系統(tǒng)以Bochs模擬的i386處理器的分頁存儲(chǔ)管理為基礎(chǔ)實(shí)現(xiàn)一個(gè)兩層的頁式管理模型,向?qū)W生展示典型的分級(jí)頁式存儲(chǔ)管理。內(nèi)核為每個(gè)進(jìn)程分配的邏輯地址空間大小為64MB。系統(tǒng)在內(nèi)核中分別實(shí)現(xiàn)了中斷、異常與系統(tǒng)調(diào)用。這三類事件的處理過程基本相似:內(nèi)核在接收到中斷信號(hào)后,在完成底層處理后立即向相應(yīng)服務(wù)器發(fā)送消息,然后系統(tǒng)再切回到用戶空間。

        3.2 典型服務(wù)器的實(shí)現(xiàn)

        基于客戶機(jī)/服務(wù)器體系結(jié)構(gòu)的微內(nèi)核操作系統(tǒng)中,各個(gè)服務(wù)器與微內(nèi)核被分別編譯成獨(dú)立的二進(jìn)制文件,服務(wù)器與內(nèi)核之間是松耦合的關(guān)系。從微內(nèi)核的角度來看,它們與普通的用戶進(jìn)程沒有任何的區(qū)別。

        所有服務(wù)器的基本流程都是一樣的。系統(tǒng)初始化時(shí),每一個(gè)服務(wù)器都將被啟動(dòng)并執(zhí)行各自的初始化操作,然后阻塞地等待客戶消息的到來。當(dāng)消息到達(dá)后服務(wù)器調(diào)用適當(dāng)?shù)淖幽K執(zhí)行對(duì)應(yīng)操作,完成后向客戶發(fā)送一條應(yīng)答消息然后再次阻塞地等待消息,如此不斷地循環(huán)下去。

        目前我們實(shí)現(xiàn)了以下兩個(gè)服務(wù)器:

        (1) 文件系統(tǒng)服務(wù)器。將接收到的對(duì)于邏輯文件的處理轉(zhuǎn)化成對(duì)存儲(chǔ)于物理介質(zhì)上的物理文件的處理,為用戶進(jìn)程提供一個(gè)有效的文件訪問方式。為了方便教學(xué),我們實(shí)現(xiàn)了一種相對(duì)比較簡單但同時(shí)又能解釋清楚其工作原理的文件系統(tǒng)。在此基礎(chǔ)上我們很容易設(shè)計(jì)相應(yīng)的習(xí)題,要求學(xué)生對(duì)現(xiàn)有文件系統(tǒng)作功能上與性能上的增強(qiáng)。

        (2) 磁盤服務(wù)器。將接收到的磁盤讀寫消息轉(zhuǎn)換成對(duì)磁盤控制器發(fā)送命令的操作,磁盤服務(wù)器通過隱藏底層硬件的具體操作向用戶進(jìn)程提供一種有效的磁盤訪問方式。

        4 系統(tǒng)配置與使用演示

        系統(tǒng)目前共實(shí)現(xiàn)了6個(gè)核心模塊,涉及文件25個(gè),共2900行C代碼。

        4.1系統(tǒng)配置

        由于系統(tǒng)運(yùn)行在Bochs虛擬機(jī)上,因此首先需要配置系統(tǒng),包括內(nèi)核、服務(wù)器和應(yīng)用程序。下列腳本將微內(nèi)核各模塊連接成可執(zhí)行二進(jìn)制代碼,再將bootloader與編譯以后的微內(nèi)核可執(zhí)行代碼合并成一個(gè)可執(zhí)行文件os.bin作為啟動(dòng)盤使用:

        ld -Ttext 0x9000 -e main ${INITOBJ}\\${OBJ} -o kernel.img -Map os.map

        objcopy -R .note -R .comment -S -O binary kernel.img init/kernel.bin

        cp boot/boot.bin os.bin

        cat init/kernel.bin >> os.bin

        在bochs配置文件bochs.txt中加入以下這兩行:

        floppya: 1_44=os.bin, status=inserted

        boot: a

        配置完內(nèi)核以后,接下來還需要對(duì)服務(wù)器、用戶程序按類似步驟進(jìn)行處理。所有的服務(wù)器將被合并到server這個(gè)磁盤映像文件中,其他用戶程序則被合并到driverc.img這個(gè)磁盤映像文件中。然后在bochs.txt中設(shè)置:

        floppyb: 1_44=server, status=inserted

        diskc: file=driverc.img, cyl=20, heads=16, spt=63

        最后是對(duì)配置文件中一些其他屬性的設(shè)置。

        4.2 使用演示

        正如前文所強(qiáng)調(diào)的,本系統(tǒng)較之現(xiàn)有教學(xué)工具更為有效之處在于可以方便地、全面地對(duì)系統(tǒng)進(jìn)行調(diào)試。以下是以進(jìn)程切換這一教學(xué)難點(diǎn)為例,用bochsdbg觀察地址空間與系統(tǒng)堆棧的切換過程。

        我們?cè)谡{(diào)度器的入口以及進(jìn)程切換函數(shù)的入口分別設(shè)置斷點(diǎn),調(diào)度器被執(zhí)行時(shí)如圖3所示,使用dump_cpu觀察到當(dāng)前cr3寄存器中的值為0x406000。當(dāng)執(zhí)行完

        _asm_volatile(\"movl %0, %%cr3\"::\"r\"(global_current->pageTable));

        以后,再次使用dump_cpu命令時(shí)可以清楚地看到此時(shí)cr3中的值已經(jīng)被換成了0x40d000,如圖4所示。

        系統(tǒng)堆棧的切換發(fā)生在SWITCH_TO中,執(zhí)行前與執(zhí)行后用infor觀察到的結(jié)果分別如圖5和圖6所示。

        5 總結(jié)

        本課題設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于Bochs虛擬機(jī)的微

        內(nèi)核結(jié)構(gòu)的教學(xué)用操作系統(tǒng)。該系統(tǒng)在保持簡化性的前提下,展現(xiàn)了一個(gè)真實(shí)操作系統(tǒng)的工作原理與機(jī)制,并且保持了一定的可擴(kuò)展性,從而為學(xué)生提供了一個(gè)良好的實(shí)驗(yàn)平臺(tái),在一定程度上彌補(bǔ)了現(xiàn)有操作系統(tǒng)教學(xué)工具的缺陷。實(shí)現(xiàn)的系統(tǒng)包括兩部分:微內(nèi)核和核外服務(wù)器。希望通過這一平臺(tái)來降低操作系統(tǒng)的學(xué)習(xí)門檻,幫助學(xué)生由淺入深,由表及里,循序漸進(jìn)地了解和掌握操作系統(tǒng)的原理,從而克服操作系統(tǒng)教學(xué)中實(shí)踐滯后于理論的弊端。

        參考文獻(xiàn):

        [1]Alfredo Perez Davila. O.S. bridge between academia and reality[EB]. ACM SIGCSE Bulletin,1995.

        [2] Gary Nutt. Linux操作系統(tǒng)內(nèi)核實(shí)習(xí)[M]. 機(jī)械工業(yè)出版社,2004.

        [3] Steven Robbins, Kay A. Robbins.Empirical exploration in undergraduate operating systems[EB]. The proceedings of the 13th ACM SIGCSE Bulletin.1999-3.

        [4] 毛德操,胡希明. Linux內(nèi)核源代碼情景分析(上冊(cè))[M]. 浙江大學(xué)出版社,2001.

        [5] 趙炯. Linux內(nèi)核完全注釋[M]. 機(jī)械工業(yè)出版社,2004.

        [6] Andrew S. TanenbaumAlbert S. Woodhull Operating system design and implementation[M]. 清華大學(xué)出版社,1997.

        [7]Nachos官方網(wǎng)站 http://www.cs.washington.edu/homes/tom/nachos/

        [8] 付長冬,孟慶余,潘清. 基于微內(nèi)核的操作系統(tǒng)綜述[J]. 計(jì)算機(jī)工程與科學(xué), 1997(8).

        [9] 潘清,張曉清. 操作系統(tǒng)微內(nèi)核技術(shù)研究[J]. 軟件學(xué)報(bào),1998(8).

        [10] Bochs官方網(wǎng)站 http://sourceforge.bochs.com

        收稿日期:2006-09-18

        作者簡介:王紅玲(1975-),女,蘇州人,蘇州大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,碩士,講師,主要研究方向:操作系統(tǒng)、中文信息處理。

        通信地址:蘇州市十梓街1號(hào) 蘇州大學(xué)158信箱

        郵編:215006

        E-mail:redleaf@suda.edu.cn

        電話:0512-67165762-204

        黄色影院不卡一区二区| 久久精品无码专区免费青青| 九月婷婷人人澡人人添人人爽| 成在人线av无码免费| 国产亚洲精品看片在线观看| 一区二区韩国福利网站| 蜜桃av多人一区二区三区| 国产白浆大屁股精品视频拍| 日本久久精品福利视频| 少妇精品亚洲一区二区成人| 高清偷自拍亚洲精品三区| 无码av免费一区二区三区| 国产喷水福利在线视频| 亚洲色图综合免费视频| 日韩av中文字幕亚洲天| 加勒比av在线一区二区| 日韩一区二区三区熟女| 久久天天躁狠狠躁夜夜av浪潮 | 精品久久无码中文字幕| 国产亚洲精品日韩综合网| 亚洲人av毛片一区二区| 中文字幕人妻互换激情| 国产日本精品视频一区二区| 国产激情无码一区二区三区| 欧美亚洲日本国产综合在线| 久久亚洲黄色| 中文乱码字幕在线中文乱码| 色婷婷久久综合中文蜜桃| 日本高清一道本一区二区| 亚洲精品国产精品国自产| 亚洲国产成人久久一区www| 伊人网在线视频观看| 亚洲在线一区二区三区四区| 精品不卡视频在线网址| 国产av激情舒服刺激| 97人人模人人爽人人少妇| 国产丰满老熟女重口对白| 五月天无码| 久久老熟女一区二区三区福利| 一区二区三区内射美女毛片| 国产麻豆md传媒视频|