摘要:本文在對(duì)比了多種操作系統(tǒng)實(shí)踐教程的基礎(chǔ)上,結(jié)合操作系統(tǒng)原理,根據(jù)教學(xué)內(nèi)容構(gòu)建了操作系統(tǒng)實(shí)踐體系,并開(kāi)發(fā)了具體的實(shí)踐教學(xué)模塊,為從根本上解決操作系統(tǒng)理論教學(xué)和實(shí)踐教學(xué)脫離的現(xiàn)狀提供了一個(gè)切實(shí)可行的參考方案。
關(guān)鍵詞:實(shí)踐教學(xué);操作系統(tǒng)實(shí)踐;MOS微型操作系統(tǒng)
中圖分類號(hào):G642
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1672-5913(2008)06-0022-03
1操作系統(tǒng)實(shí)踐教學(xué)現(xiàn)狀
目前,幾乎所有高校的計(jì)算機(jī)專業(yè)都把操作系統(tǒng)作為專業(yè)基礎(chǔ)必修課程,市場(chǎng)上有關(guān)操作系統(tǒng)的書目多達(dá)360余種,其中教材有130余本。筆者對(duì)這些教材進(jìn)行了詳細(xì)的對(duì)比與分析,發(fā)現(xiàn)這些教程大都是在現(xiàn)有的操作系統(tǒng)之上講解系統(tǒng)資源的調(diào)度和管理,側(cè)重于操作系統(tǒng)原理,即使是實(shí)踐性強(qiáng)的教材也只是針對(duì)系統(tǒng)的處理機(jī)與進(jìn)程管理、存儲(chǔ)管理、設(shè)備管理、文件系統(tǒng)以及中斷管理等方面的算法和某一個(gè)具體的程序進(jìn)行講解,缺乏系統(tǒng)性和完整性。另外現(xiàn)有操作系統(tǒng)都非常龐大,例如內(nèi)核相對(duì)精煉的Linux系統(tǒng)的源代碼有幾十萬(wàn)甚至幾百萬(wàn)行,而Minix系統(tǒng)源代碼也超過(guò)了2萬(wàn)行,這些對(duì)于計(jì)算機(jī)專業(yè)特別是高職院校的本專科生來(lái)說(shuō)無(wú)疑是天文數(shù)字。同時(shí)這些系統(tǒng)已實(shí)現(xiàn)了操作系統(tǒng)的全部功能,學(xué)生只能利用這些操作系統(tǒng)提供的系統(tǒng)調(diào)用或API函數(shù)實(shí)現(xiàn)進(jìn)程的創(chuàng)建和撤消、進(jìn)程之間的同步與互斥、內(nèi)存的分配和回收以及文件管理等操作,只能以一個(gè)觀察者的身份去感受系統(tǒng)的功能,無(wú)法親身體驗(yàn),非常不利于操作系統(tǒng)的實(shí)踐教學(xué),其效果也就可想而知了。
鑒于此,操作系統(tǒng)實(shí)踐教學(xué)改革已迫在眉睫,本文以培養(yǎng)應(yīng)用型本??迫瞬艦槟繕?biāo),為適應(yīng)高等職業(yè)院校計(jì)算機(jī)操作系統(tǒng)教學(xué)需求,對(duì)實(shí)踐教學(xué)進(jìn)行探索,構(gòu)建了讓學(xué)生自己動(dòng)手設(shè)計(jì)、編寫多任務(wù)微型操作系統(tǒng)MOS(Mini Operating System)的實(shí)踐教學(xué)體系,讓學(xué)生在具體的實(shí)踐中掌握操作系統(tǒng)的工作原理和系統(tǒng)的開(kāi)發(fā)過(guò)程。
2構(gòu)建實(shí)踐教學(xué)體系
2.1確立課程體系
在進(jìn)行操作系統(tǒng)實(shí)踐之前,先開(kāi)設(shè)80x86匯編語(yǔ)言、C程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)等課程,使學(xué)生對(duì)基本的編程方法、思路以及算法有系統(tǒng)的了解。在此基礎(chǔ)上,再開(kāi)設(shè)計(jì)算機(jī)組成原理、微機(jī)原理、操作系統(tǒng)等課程,使學(xué)生掌握計(jì)算機(jī)硬件體系結(jié)構(gòu)、以Intel 80x86 CPU為核心的微機(jī)原理以及操作系統(tǒng)原理。在具備了以上基礎(chǔ)學(xué)科知識(shí)后,才有能力自己動(dòng)手編寫一個(gè)基于Intel 80x86 CPU實(shí)模式的MOS多任務(wù)微型操作系統(tǒng)。
2.2建立實(shí)踐環(huán)境
良好的開(kāi)發(fā)環(huán)境是實(shí)踐活動(dòng)得以順利開(kāi)展的前提,經(jīng)過(guò)優(yōu)化和系統(tǒng)對(duì)比,筆者建立了如下的開(kāi)發(fā)環(huán)境:
(1) 軟件環(huán)境:開(kāi)發(fā)平臺(tái)采用支持16位實(shí)模式的編譯器Borland C++ 4.5;虛擬機(jī)軟件Bochs V2.1,由它來(lái)模擬計(jì)算機(jī)啟動(dòng)、運(yùn)行;磁盤映像文件制作工具WinImage;將引導(dǎo)程序?qū)懙杰洷P的引導(dǎo)扇區(qū)或映像文件引導(dǎo)扇區(qū)的WriteBoot工具;匯編語(yǔ)言編譯器NASM,由它將引導(dǎo)程序匯編生成二進(jìn)制代碼程序Boot.bin;操作系統(tǒng)Windows 98以上即可。
(2) 硬件環(huán)境:能夠運(yùn)行Windows 98以上操作系統(tǒng)的PC機(jī)即可。
3設(shè)計(jì)實(shí)踐項(xiàng)目
為了使整個(gè)實(shí)踐教學(xué)體系有章可依,筆者根據(jù)教學(xué)內(nèi)容建立了MOS操作系統(tǒng)的層次框架,為教師和學(xué)生提供開(kāi)發(fā)指導(dǎo)。
3.1確立MOS系統(tǒng)結(jié)構(gòu)及內(nèi)存布局
本實(shí)踐MOS系統(tǒng)開(kāi)發(fā)采用層次式模塊化結(jié)構(gòu),如圖1,其中MOS-IOS(MOS Input/ Output System)層依賴于PC機(jī)的ROM-BIOS,它提供了基本的輸入/輸出功能,比如:讀/寫磁盤,讀/寫文件分配表FAT,查找文件的簇號(hào)等功能(代碼在引導(dǎo)程序中)。在MOS-IOS之上是MOS各種管理模塊,包括進(jìn)程控制、信號(hào)量管理、時(shí)鐘管理、內(nèi)存管理、文件系統(tǒng)和I/O管理等功能。這些功能通過(guò)MOS提供的系統(tǒng)調(diào)用接口為用戶程序服務(wù)。MOS命令處理程序向用戶提供操作計(jì)算機(jī)的接口。
圖1 MOS操作系統(tǒng)層次結(jié)構(gòu)
在Intel 80x86實(shí)模式下可訪問(wèn)的內(nèi)存空間大小為1MB,整個(gè)內(nèi)存空間分為三部分,第一部分是系統(tǒng)空間,從0x00000至0x31fff共200KB;第二部分是用戶空間,從0x32000至0x9ffff共440KB;第三部分是PC機(jī)保留的空間,從0xA0000至0xFFFFF共384KB。
3.2實(shí)現(xiàn)進(jìn)程管理
進(jìn)程管理是操作系統(tǒng)的核心,是實(shí)踐的關(guān)鍵部分,也是傳統(tǒng)教學(xué)中最難以掌握的內(nèi)容之一。學(xué)生通過(guò)親自開(kāi)發(fā)系統(tǒng),根據(jù)實(shí)際需要在自己開(kāi)發(fā)的MOS系統(tǒng)中去創(chuàng)建、管理和撤銷進(jìn)程,這樣不但激發(fā)了學(xué)生的學(xué)習(xí)興趣,還避免了教學(xué)的晦澀難懂,有效地提高了學(xué)生的動(dòng)手能力,使其對(duì)操作系統(tǒng)的進(jìn)程管理過(guò)程有實(shí)質(zhì)性的體驗(yàn),具體實(shí)踐內(nèi)容如下。
(1) 進(jìn)程控制
在MOS系統(tǒng)中采用可剝奪調(diào)度方式,以優(yōu)先級(jí)高者優(yōu)先的調(diào)度算法分配處理機(jī)。進(jìn)程可在就緒、運(yùn)行和阻塞三個(gè)狀態(tài)之間變遷,其狀態(tài)轉(zhuǎn)換圖如圖2所示。獲得處理機(jī)的進(jìn)程處于運(yùn)行狀態(tài),在就緒鏈表中等待處理機(jī)的進(jìn)程為就緒狀態(tài),運(yùn)行中的進(jìn)程因等待事件的發(fā)生進(jìn)入阻塞狀態(tài)。在MOS系統(tǒng)中是通過(guò)三個(gè)系統(tǒng)調(diào)用來(lái)實(shí)現(xiàn)進(jìn)程的控制:
① 創(chuàng)建進(jìn)程SysCreateProc:創(chuàng)建進(jìn)程的主要工作是為新創(chuàng)建的進(jìn)程申請(qǐng)一個(gè)堆棧、一個(gè)空閑的進(jìn)程控制塊PCB,并初始化堆棧和填寫PCB信息,然后以優(yōu)先級(jí)大小將新創(chuàng)建的進(jìn)程插入到就緒鏈表中,等待進(jìn)程調(diào)度程序選擇運(yùn)行。
② 刪除進(jìn)程SysDelProc:處于運(yùn)行狀態(tài)的進(jìn)程將自己刪除。
③ 進(jìn)程延遲SysTimeDly:執(zhí)行該系統(tǒng)調(diào)用使處于運(yùn)行狀態(tài)的進(jìn)程睡眠若干個(gè)時(shí)鐘。當(dāng)某一進(jìn)程睡眠時(shí)間到,會(huì)由時(shí)鐘中斷處理程序?qū)⑵鋯拘选T贛OS系統(tǒng)中,除時(shí)鐘中斷可作為喚醒者外,V操作同樣也可以將處于阻塞狀態(tài)的進(jìn)程喚醒。
圖2 MOS系統(tǒng)中進(jìn)程三狀態(tài)轉(zhuǎn)換圖
(2) 進(jìn)程上下文切換
由于MOS系統(tǒng)采用優(yōu)先級(jí)高者優(yōu)先調(diào)度算法,因此就緒鏈表中的進(jìn)程要按優(yōu)先級(jí)大小進(jìn)行排列,其鏈?zhǔn)走M(jìn)程就是當(dāng)前正在運(yùn)行的進(jìn)程。在MOS系統(tǒng)中可以設(shè)置兩個(gè)全局變量,一個(gè)是MOSPCBCur,代表當(dāng)前正在處理機(jī)上運(yùn)行的進(jìn)程;一個(gè)是MOSRDLPCB,代表就緒鏈表的首進(jìn)程。通常情況下這兩個(gè)變量的值應(yīng)該相等,若不相等,說(shuō)明當(dāng)前就緒鏈表發(fā)生了變化,或者來(lái)了一個(gè)更高優(yōu)先級(jí)的進(jìn)程,或者當(dāng)前運(yùn)行進(jìn)程由于阻塞而離開(kāi)就緒鏈表,此時(shí)就需要進(jìn)程調(diào)度選擇就緒鏈表中的首進(jìn)程來(lái)運(yùn)行。上下文切換的實(shí)現(xiàn)步驟如下:
① 將當(dāng)前運(yùn)行進(jìn)程的運(yùn)行環(huán)境保存在它的堆棧中;
② 將堆棧信息(堆棧的段地址和棧頂指針)保存在它的進(jìn)程控制塊PCB中;
③ 將MOSRDLPCB的值賦給變量MOSPCBCur,使就緒鏈表的隊(duì)首進(jìn)程成為當(dāng)前運(yùn)行進(jìn)程;
④ 從MOSPCBCur所指進(jìn)程的進(jìn)程控制塊PCB中恢復(fù)該進(jìn)程的堆??臻g;
⑤ 從堆棧中恢復(fù)MOSPCBCur所指進(jìn)程的運(yùn)行環(huán)境;
⑥ 實(shí)現(xiàn)進(jìn)程的上下文切換。
(3) 信號(hào)量管理
利用信號(hào)量可實(shí)現(xiàn)進(jìn)程的同步與互斥,以保證系統(tǒng)資源調(diào)度的正確性。在MOS系統(tǒng)設(shè)計(jì)中提供了四個(gè)與信號(hào)量相關(guān)的系統(tǒng)調(diào)用:
① 創(chuàng)建信號(hào)量SysCreateSem;
② 刪除信號(hào)量SysDelSem;
③ P操作P;
④ V操作V。
(4) 建立MOS命令處理程序
命令處理程序主要是接受用戶的鍵盤輸入命令,讓學(xué)生編寫命令處理程序,可進(jìn)一步理解操作系統(tǒng)對(duì)命令的處理過(guò)程和系統(tǒng)程序執(zhí)行的流程。
在系統(tǒng)啟動(dòng)時(shí),MOS命令處理程序創(chuàng)建一個(gè)IDLE的系統(tǒng)進(jìn)程,其優(yōu)先級(jí)最低,由它負(fù)責(zé)接收用戶鍵盤輸入并執(zhí)行相應(yīng)的命令。命令分為內(nèi)部命令和外部命令,內(nèi)部命令只有一個(gè)顯示磁盤目錄的DIR命令,外部命令是以文件的形式存儲(chǔ)在磁盤中,文件采用.EXE可執(zhí)行文件格式。當(dāng)IDLE接收到外部命令時(shí),在磁盤中查找外部命令,并將其裝入內(nèi)存為其創(chuàng)建新的進(jìn)程,然后讓它運(yùn)行。當(dāng)系統(tǒng)中有用戶進(jìn)程時(shí),IDLE一直處于循環(huán)等待用戶進(jìn)程的結(jié)束,一旦系統(tǒng)中沒(méi)有用戶進(jìn)程,IDLE又重新接收鍵盤命令。
3.3內(nèi)存管理
存儲(chǔ)器是計(jì)算機(jī)系統(tǒng)中最重要的資源之一,如何有效地進(jìn)行存儲(chǔ)管理是提高系統(tǒng)效能的關(guān)鍵,本實(shí)踐將地址從0x22000開(kāi)始的64KB大小的空間作為內(nèi)存堆供應(yīng)用程序使用,并根據(jù)需求采用分區(qū)分配方法設(shè)計(jì)兩個(gè)系統(tǒng)統(tǒng)調(diào)用(SysMemAllocate調(diào)用和SysMemFree調(diào)用)實(shí)現(xiàn)內(nèi)存的分配和回收,同時(shí)設(shè)計(jì)MemMag實(shí)例,實(shí)現(xiàn)輸入字符串到內(nèi)存塊sp1中,并將其進(jìn)行格式轉(zhuǎn)換復(fù)制到另一內(nèi)存塊sp2中,讓學(xué)生體會(huì)內(nèi)存管理的原理與過(guò)程,理解可變式分區(qū)管理方法。
3.4建立文件管理系統(tǒng)
文件系統(tǒng)是實(shí)現(xiàn)存儲(chǔ)、管理數(shù)據(jù)以及對(duì)文件進(jìn)行查找和訪問(wèn)的組織方法,是協(xié)助操作系統(tǒng)更好的進(jìn)行資源調(diào)度和管理不可缺少的組成部分。在MOS系統(tǒng)中對(duì)文件控制塊結(jié)構(gòu)、磁盤緩沖區(qū)以及管理文件控制塊變量等文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行了定義,并設(shè)計(jì)了文件系統(tǒng)的創(chuàng)建、打開(kāi)、讀寫以及關(guān)閉等系統(tǒng)功能調(diào)用。在本實(shí)驗(yàn)中,學(xué)生可以根據(jù)自己建立的文件管理系統(tǒng),進(jìn)行文件的創(chuàng)建、打開(kāi)、讀寫以及關(guān)閉等操作,深刻體會(huì)MOS系統(tǒng)的文件管理過(guò)程。
3.5I/O管理實(shí)踐
設(shè)備管理涉及到眾多的外部設(shè)備,對(duì)它們的管理比較復(fù)雜。本實(shí)踐以串行通信為例設(shè)計(jì)了MOS的I/O管理系統(tǒng),提供了4個(gè)用于串行通信設(shè)備管理的系統(tǒng)調(diào)用,分別是:
① 打開(kāi)串行通信設(shè)備SysOpenIO:該系統(tǒng)調(diào)用的主要功能是對(duì)串口COM1和COM2進(jìn)行初始化,并允許8259A可響應(yīng)它們發(fā)來(lái)的中斷。初始化時(shí)設(shè)置傳輸位8位,停止位1位,無(wú)校驗(yàn)碼,波特率為19200bps。
② 寫串行通信設(shè)備SysWriteIO:首先將要寫的信息放到輸出緩沖區(qū)中,然后允許串口產(chǎn)生發(fā)送中斷信號(hào)請(qǐng)求。
③ 讀串行通信設(shè)備SysReadIO:該系統(tǒng)調(diào)用完成的功能是從輸入緩沖區(qū)中讀一個(gè)字符返回,若輸入緩沖區(qū)為空,則返回0xff。因串行通信中斷處理程序處理接收中斷時(shí),已將數(shù)據(jù)放入輸入緩沖區(qū)中,故該系統(tǒng)調(diào)用,只需到輸入緩沖區(qū)中取數(shù)據(jù)即可。
④ 關(guān)閉串行通信設(shè)備SysCloseIO:該系統(tǒng)調(diào)用完成的功能十分簡(jiǎn)單,將屏蔽串口中斷即可,具體操作使8259A禁止IRQ3和IRQ4的中斷請(qǐng)求。
在該部分還提供了利用異步串行通信芯片INS 8250通過(guò)COM口實(shí)現(xiàn)了兩臺(tái)PC機(jī)之間的串行通信的實(shí)例,讓學(xué)生從系統(tǒng)底層掌握操作系統(tǒng)的I/O管理過(guò)程。
3.6用戶接口管理
為了簡(jiǎn)化MOS系統(tǒng),實(shí)踐中只提供了18個(gè)系統(tǒng)調(diào)用,全部通過(guò)中斷向量碼0x80實(shí)現(xiàn),只要將功能號(hào)和各輸入?yún)?shù)放到指定的寄存器中,執(zhí)行INT 0x80軟中斷指令即可實(shí)現(xiàn)系統(tǒng)調(diào)用。為了進(jìn)一步方便學(xué)生的實(shí)踐設(shè)計(jì),系統(tǒng)還以函數(shù)的形式提供了系統(tǒng)功能調(diào)用,比如創(chuàng)建進(jìn)程系統(tǒng)調(diào)用SysCreateProc函數(shù),所使用的函數(shù)原型是:unsigned MOSCreateProc(unsigned segV,unsigned offV,char prio),其中前兩個(gè)形參分別是被創(chuàng)建進(jìn)程代碼的段地址和偏移j量,第三個(gè)形參是被創(chuàng)建進(jìn)程的優(yōu)先級(jí),該函數(shù)返回值為被創(chuàng)建進(jìn)程的進(jìn)程標(biāo)識(shí),這樣就極大地簡(jiǎn)化了學(xué)生實(shí)踐程序的設(shè)計(jì)過(guò)程。
4結(jié)束語(yǔ)
對(duì)于計(jì)算機(jī)操作系統(tǒng)的教學(xué),只有讓學(xué)生在具體的實(shí)踐中進(jìn)行程序設(shè)計(jì),才能使其從根本上掌握系統(tǒng)的調(diào)度和管理過(guò)程。本實(shí)踐系統(tǒng)從課程體系以及實(shí)踐內(nèi)容兩個(gè)核心部分入手,對(duì)操作系統(tǒng)的各關(guān)鍵模塊教學(xué)內(nèi)容進(jìn)行了系統(tǒng)的安排,并提供了MOS系統(tǒng)的源代碼和相關(guān)實(shí)驗(yàn)。通過(guò)三年來(lái)的教學(xué)實(shí)踐證明,該實(shí)踐體系極大地提高了教學(xué)效果,為操作系統(tǒng)課程的實(shí)踐教學(xué)提供了參考模型。
參考文獻(xiàn)
[1] 鞠榮祥. 談高職教育實(shí)踐教學(xué)體系的構(gòu)建[J]. 職業(yè)與教育,2006,(24):133.
[2] 黃廷輝. 一個(gè)實(shí)用教學(xué)操作系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 桂林電子工業(yè)學(xué)院學(xué)報(bào),2004,4(4):39-42.
[3] 于淵. 自己動(dòng)手寫操作系統(tǒng)[M]. 北京:電子工業(yè)出版社,2006.
Construction of the Practical Teaching System on Operating System
LI Hong-wei,YIN Chang-hong
(School of Computer Science and Engineering, Jiangsu Teachers University of Technology,Changzhou 213001, China)
Abstract: This paper constructs the practical teaching system of the computer operating system and designs the concrete teaching modules according to the teaching content through comparing lots of operating system practical textbooks from the perspective of teaching practice, at last the author provides a practical reference for solution the difficult problem of theory departing from practice.
Key words: Practice Teaching; Operating System Practice; Mini Operating System