文章編號:1672-5913(2008)10-0036-03
摘要:本文結(jié)合校園網(wǎng)以及“操作系統(tǒng)”課程實驗環(huán)節(jié)的特點,提出了構(gòu)建基于校園網(wǎng)和Linux平臺的開放式操作系統(tǒng)課程實驗系統(tǒng),并對該系統(tǒng)的功能、設(shè)計及實現(xiàn)進行了詳細的說明。實際應(yīng)用證明該系統(tǒng)使用方便,對學(xué)生理解和掌握操作系統(tǒng)原理有一定幫助。
關(guān)鍵詞:校園網(wǎng);實驗環(huán)境;操作系統(tǒng);Linux;服務(wù)器
中圖分類號:G642
文獻標識碼:B
1 引言
操作系統(tǒng)是信息技術(shù)相關(guān)專業(yè)的必修課,其重要性不言而喻。該課程的主要內(nèi)容是講述操作系統(tǒng)的工作原理以及相關(guān)算法,由于其抽象,難以理解,學(xué)生學(xué)習起來十分吃力。開發(fā)操作系統(tǒng)實驗教學(xué)系統(tǒng)是提高操作系統(tǒng)教學(xué)水平有效和必要的手段。
國內(nèi)外操作系統(tǒng)實驗課程早期多以TANENBAUM的Minix為例。由于Minix系統(tǒng)僅僅是一個教學(xué)用的操作系統(tǒng),不是一個通用操作系統(tǒng),功能不完善,安裝復(fù)雜。而Windows由于是一個“黑匣子”,本身不適于做操作系統(tǒng)課程的實驗環(huán)境。
Linux操作系統(tǒng)由于其開放源代碼,結(jié)構(gòu)簡單清晰,而且是一個完整的通用操作系統(tǒng),因此越來越多地用于操作系統(tǒng)實驗環(huán)境建設(shè),目前已經(jīng)多本此類實驗教材出版。但由于目前大多數(shù)學(xué)校機房中安裝的是Windows操作系統(tǒng),同時安裝兩個系統(tǒng)將給機房的管理造成困難,對機房的管理人員也提出了更高的要求;而僅僅安裝Linux操作系統(tǒng)又會造成計算機資源浪費。因此基于Linux的操作系統(tǒng)實驗在建設(shè)上也有一定困難。
本文的目的就是在不改變用戶計算機大多采用Windows系統(tǒng)的前提下,通過提供一個Linux服務(wù)器,構(gòu)建一個基校園網(wǎng)的、開放的操作系統(tǒng)教學(xué)實驗環(huán)境。
2 建設(shè)基于Linux的操作系統(tǒng)課程網(wǎng)絡(luò)實驗環(huán)境的可行性
傳統(tǒng)的實驗課程要求學(xué)生在同一時間、同一地點(機房)完成上機實驗。即使開放實驗,也要求學(xué)生在指定機房完成實驗。而隨著計算機的普及以及校園網(wǎng)深入到學(xué)生宿舍,構(gòu)建基于Linux的操作系統(tǒng)網(wǎng)絡(luò)實驗環(huán)境成為可能:
(1) 計算機相關(guān)專業(yè)的學(xué)生大多都有自己的計算機,而且都接入校園網(wǎng)。
(2) 各高校的校園網(wǎng)大多都是千兆骨干,百兆到桌面。而目前校園網(wǎng)上的應(yīng)用相對較少,主要用于學(xué)校的各項管理工作,如辦公系統(tǒng),教務(wù)管理等。
(3) 建設(shè)基于校園網(wǎng)的“虛擬實驗室”,使校園網(wǎng)盡可能為教學(xué)服務(wù),可在一定程度減少網(wǎng)絡(luò)對學(xué)生學(xué)習造成的負面影響。
(4) 基于校園網(wǎng)的實驗環(huán)境建設(shè)及其管理應(yīng)該是今后高校實驗室建設(shè)的一個重要方向。通過校園網(wǎng),利用學(xué)生自己的計算機,可以形成一個覆蓋整個校園的“虛擬實驗室”。
(5) Linux具有完善的網(wǎng)絡(luò)服務(wù),默認集成完善的C/C++編程環(huán)境。
可以看出,建設(shè)基于Linux的操作系統(tǒng)網(wǎng)絡(luò)實驗環(huán)境是切實可行的。這種實驗環(huán)境造價低廉,學(xué)生使用方便,同時也可為其他課程的基于網(wǎng)絡(luò)的實驗環(huán)境建設(shè)提供方法和經(jīng)驗。
3 系統(tǒng)功能設(shè)計
本系統(tǒng)的主要任務(wù)是構(gòu)建一個Linux教學(xué)管理服務(wù)器;它不僅要向用戶提供Web登錄賬號,而且要開放Telnet賬號,要有完善的教學(xué)管理功能,以方便老師的實驗教學(xué)管理。參考目前現(xiàn)有的其他課程教學(xué)管理系統(tǒng)的功能,同時結(jié)合操作系統(tǒng)課程實驗的特點,本教學(xué)管理系統(tǒng)主要分為教師端,學(xué)生端和管理員端三部分。
3.1教師端功能
教師端程序相對復(fù)雜,主要具備如下功能:
① 教學(xué)班創(chuàng)建與刪除
根據(jù)目前各學(xué)校學(xué)生選課流程,學(xué)生首先要在教務(wù)管理系統(tǒng)上選課。本系統(tǒng)首先要實現(xiàn)與教務(wù)選課系統(tǒng)方便有效地結(jié)合,將教務(wù)系統(tǒng)的選課名單導(dǎo)入本教學(xué)管理系統(tǒng)。
由于教務(wù)系統(tǒng)保存了學(xué)校全部學(xué)生的成績檔案,安全性要求較高,通常不會向網(wǎng)絡(luò)用戶提供編程接口(如Web Service接口)。較簡單的辦法就是通過復(fù)制方式將選課名單粘貼成一個文本數(shù)據(jù)庫文件,每個學(xué)生占一行,各屬性字段用空格分開。再用編程方式將文本數(shù)據(jù)庫文件導(dǎo)入本實驗教學(xué)管理系統(tǒng)。在導(dǎo)入過程中,系統(tǒng)自動給每個用戶創(chuàng)建Web賬號。Telnet賬號可以班為單位單獨添加和刪除,也可和Web賬號一同創(chuàng)建。
在學(xué)期教學(xué)完成后,教師可以刪除該教學(xué)班。
② 賬號管理
主要完成個別學(xué)生的Web賬號及telnet賬號的創(chuàng)建,恢復(fù)與刪除。在選課過程中,經(jīng)常會出現(xiàn)學(xué)生補選該課程或刪除該課程,以及部分學(xué)生忘記自己的密碼等問題。
③ 作業(yè)管理
此功能主要包括教師通過Web方式布置作業(yè),管理學(xué)生上傳的作業(yè)以及對學(xué)生通過telnet登錄完成的作業(yè)進行統(tǒng)計。其中教師在布置作業(yè)時可以指明該作業(yè)是否要求學(xué)生通過網(wǎng)絡(luò)上傳結(jié)果。若可以上傳,老師還可以對學(xué)生上傳的作業(yè)進行評分。Telnet作業(yè)統(tǒng)計功能可以對學(xué)生通過Telnet登錄完成的作業(yè)數(shù)量及其屬性進行統(tǒng)計。
④ 公告發(fā)布功能和教學(xué)答疑功能
3.2學(xué)生端功能
學(xué)生端的功能比較簡單,主要包括Web賬號密碼修改,查看本系統(tǒng)中自己的教學(xué)班,作業(yè)下載與上傳,教案下載,Telnet連接以及使用答疑系統(tǒng)。
3.3管理員端功能
管理員主要完成教師賬號管理,公告信息管理,數(shù)據(jù)庫管理以及其他如IP地址、信息過濾等管理。
4 數(shù)據(jù)庫設(shè)計
本系統(tǒng)基于Linux平臺,采用Apache+PHP+Mysql作為開發(fā)環(huán)境。
根據(jù)系統(tǒng)要求的功能,所設(shè)計的數(shù)據(jù)庫OSnet中共有12個表,分別為:管理員數(shù)據(jù)表、教師數(shù)據(jù)表、學(xué)生數(shù)據(jù)表、課程數(shù)據(jù)表、實驗項目數(shù)據(jù)表、選課數(shù)據(jù)表、上傳作業(yè)數(shù)據(jù)表、課程資料數(shù)據(jù)表、公告數(shù)據(jù)表、留言薄數(shù)據(jù)表、相關(guān)資料數(shù)據(jù)表和實驗時間安排表。
上述12個表中,部分表是為了擴充系統(tǒng)功能設(shè)計的,并非基于Linux的操作系統(tǒng)課程實驗系統(tǒng)所必須的。這里僅列出課程數(shù)據(jù)表結(jié)構(gòu)(如表1):
表1 課程數(shù)據(jù)表結(jié)構(gòu)
5 系統(tǒng)主要功能實現(xiàn)
用戶通過系統(tǒng)的登錄頁面輸入用戶信息后,依據(jù)用戶類型的不同在不同的數(shù)據(jù)表里驗證后,調(diào)用相應(yīng)用戶類型的模塊。其程序流程如圖1所示。
圖1 用戶登錄流程
5.1教學(xué)班管理模塊(教師端)
教學(xué)班管理模塊的要完成的功能如圖2所示:
圖2 教學(xué)班管理模塊
在學(xué)期開始,教師需要創(chuàng)建自己的教學(xué)班,同時添加學(xué)生名單。創(chuàng)建教學(xué)班時通過添加表單,將所需要的信息傳遞給后臺PHP程序。后臺程序在收到這些信息后,首先查詢數(shù)據(jù)庫,檢查課程與課程簡稱是否有重復(fù),如果存在重名,則彈出警告窗口;否則在數(shù)據(jù)庫里進行操作,添加相應(yīng)的數(shù)據(jù)項,同時根據(jù)學(xué)生名單創(chuàng)建學(xué)生登錄賬號。如有必要,則同時創(chuàng)建Telnet賬號。
學(xué)期結(jié)束后,教師需要刪除教學(xué)班。老師首先選擇要刪除的班級,然后系統(tǒng)從數(shù)據(jù)庫中得到這個班的學(xué)生名單,并從選課數(shù)據(jù)表中刪除。如果這個課程是此賬號在系統(tǒng)中的最后一門課,那么其WEB賬號一并刪除;如果該教學(xué)班有Telnet賬號,則先刪除此賬號,然后刪除與這門課有關(guān)的教案、作業(yè)與學(xué)生上傳的作業(yè),最后從課程數(shù)據(jù)表中刪除這門課程。
5.2賬號管理模塊(教師端)
該功能利用PHP對數(shù)據(jù)庫進行操作,當需要添加學(xué)生賬號的時候,先將賬號插入到選課數(shù)據(jù)表中。如果這是該賬號的第一門課,會將其插入到賬號數(shù)據(jù)表中。如果所添加的學(xué)生所在的班級有Telnet賬號,那么還需要為其添加Telnet賬號。
教師賬號的添加與學(xué)生賬號添加相似,不同在于教師賬號僅僅是插入到教師賬號數(shù)據(jù)表中。
添加賬號的難點在于Telnet賬號的添加,原因是Linux系統(tǒng)中僅有管理員賬號才有添加賬號的權(quán)限,如果直接使用system()命令來調(diào)用Linux中的useradd指令,會遇到權(quán)限不足的問題。解決方法是:首先創(chuàng)建一個用戶供www服務(wù)器使用,這樣PHP就是以這個用戶的身份執(zhí)行外部命令,然后修改Linux的sudoer文件,利用Linux的sudo命令使其暫時獲得相應(yīng)的權(quán)限,在PHP中使用system()調(diào)用此命令時就不會出現(xiàn)權(quán)限問題。但需要注意所創(chuàng)建用戶的安全問題,以防止非法用戶利用這個賬號進行破壞活動。方法之一是修改其登錄的shell為nologin,使這個用戶不能被登錄。
實現(xiàn)添加Telnet用戶的部分關(guān)鍵代碼如下:
$command=\"sudo /usr/sbin/useradd -d
/var/www/html/teacher/telnet/\".$classid.\"/\".$_POST[\"stu_number\"].\" -g \".$classid.\" \".$username;
//添加用戶的Linux命令
system($command);//使用system命令執(zhí)行這條指令
$command=\"echo \".$_POST[\"stu_number\"].\"|sudo /usr/
bin/passwd \".$username.\" --stdin\";//修改新增用戶的密碼,使用了管道
exec($command);
5.3學(xué)生提交作業(yè)模塊(學(xué)生端)
學(xué)生發(fā)出提交作業(yè)請求給系統(tǒng)時,系統(tǒng)會首先檢查學(xué)生提交的作業(yè)文件名是否符合要求(文件名要求為學(xué)號.rar),然后檢查作業(yè)是否是已經(jīng)被教師所評閱,是否超期等。在經(jīng)過這一系列的檢查后,通過檢查的作業(yè)數(shù)據(jù)將寫入數(shù)據(jù)表并最終完成提交作業(yè)操作,其流程如圖3所示。
5.4Telnet作業(yè)統(tǒng)計(教師端)
該功能會自動對當前班級的Telnet目錄每個學(xué)生的文件進行統(tǒng)計,具體實現(xiàn)方法是使用Linux下面的ls命令與管道功能,同樣由于權(quán)限問題,要用到sudo命令以提升服務(wù)器用戶的權(quán)限。關(guān)鍵部分的源代碼如下:
$path=\"/var/www/html/teacher/telnet/\".$classid.\"/\".$row[0];
//文件夾路徑
$command=\"sudo /bin/ls \".$path.\" -l|awk '/^d/'|wc -l\";
//目錄數(shù)
system($command);
$command=\"sudo /bin/ls \".$path.\" -l|awk '/^-/'|wc -l\";
//文件數(shù)目
system($command);
$command=\"sudo /bin/ls \".$path.\"|grep \\\"\\\\.c\\\"$|wc -l\";
//C文件數(shù)目
system($command);
$command=\"sudo /bin/ls \".$path.\"|grep -E \\\"\\\\.C|\\.cpp\\\"$|wc -l\";
//C++文件數(shù)目
system($command);
$command=\"sudo /bin/ls \".$path.\" -l|awk '/^-rwx/'|wc -l\";
//可執(zhí)行文件數(shù)目
system($command);
圖3 提交作業(yè)檢查流程圖
6 結(jié)束語
該系統(tǒng)經(jīng)過一段時間的運行及改進,目前功能已經(jīng)比較完善,性能穩(wěn)定。實踐證明該系統(tǒng)使用方便,對增強學(xué)生對操作系統(tǒng)原理的理解有一定的幫助。為方便學(xué)生使用,我們已經(jīng)編寫了基于該系統(tǒng)的操作系統(tǒng)實驗指導(dǎo)書。
在使用過程中,該系統(tǒng)仍有如下問題需要解決:要盡量從技術(shù)上減少學(xué)生抄襲現(xiàn)象;定時清除學(xué)生遺留下來的不良進程;關(guān)于操作系統(tǒng)內(nèi)核修改的實驗不能實現(xiàn)。上述問題目前正在解決中。
參考文獻
[1] 趙永儉等. 建設(shè)以實驗中心為主體的教學(xué)基地,培養(yǎng)高素質(zhì)人才[J]. 實驗技術(shù)與管理,2001,(1).
[2] 古梅. 校園網(wǎng)環(huán)境下實現(xiàn)網(wǎng)絡(luò)化教學(xué)的探索與實踐[J]. 計算機教育,2005,(增刊).
[3] Steve Shah著. 楊濤等譯. Linux管理員指南[M]. 北京:機械工業(yè)出版社,2001.