文章編號:1672-5913(2008)10-0036-03
摘要:本文結合校園網以及“操作系統”課程實驗環節的特點,提出了構建基于校園網和Linux平臺的開放式操作系統課程實驗系統,并對該系統的功能、設計及實現進行了詳細的說明。實際應用證明該系統使用方便,對學生理解和掌握操作系統原理有一定幫助。
關鍵詞:校園網;實驗環境;操作系統;Linux;服務器
中圖分類號:G642
文獻標識碼:B
1 引言
操作系統是信息技術相關專業的必修課,其重要性不言而喻。該課程的主要內容是講述操作系統的工作原理以及相關算法,由于其抽象,難以理解,學生學習起來十分吃力。開發操作系統實驗教學系統是提高操作系統教學水平有效和必要的手段。
國內外操作系統實驗課程早期多以TANENBAUM的Minix為例。由于Minix系統僅僅是一個教學用的操作系統,不是一個通用操作系統,功能不完善,安裝復雜。而Windows由于是一個“黑匣子”,本身不適于做操作系統課程的實驗環境。
Linux操作系統由于其開放源代碼,結構簡單清晰,而且是一個完整的通用操作系統,因此越來越多地用于操作系統實驗環境建設,目前已經多本此類實驗教材出版。但由于目前大多數學校機房中安裝的是Windows操作系統,同時安裝兩個系統將給機房的管理造成困難,對機房的管理人員也提出了更高的要求;而僅僅安裝Linux操作系統又會造成計算機資源浪費。因此基于Linux的操作系統實驗在建設上也有一定困難。
本文的目的就是在不改變用戶計算機大多采用Windows系統的前提下,通過提供一個Linux服務器,構建一個基校園網的、開放的操作系統教學實驗環境。
2 建設基于Linux的操作系統課程網絡實驗環境的可行性
傳統的實驗課程要求學生在同一時間、同一地點(機房)完成上機實驗。即使開放實驗,也要求學生在指定機房完成實驗。而隨著計算機的普及以及校園網深入到學生宿舍,構建基于Linux的操作系統網絡實驗環境成為可能:
(1) 計算機相關專業的學生大多都有自己的計算機,而且都接入校園網。
(2) 各高校的校園網大多都是千兆骨干,百兆到桌面。而目前校園網上的應用相對較少,主要用于學校的各項管理工作,如辦公系統,教務管理等。
(3) 建設基于校園網的“虛擬實驗室”,使校園網盡可能為教學服務,可在一定程度減少網絡對學生學習造成的負面影響。
(4) 基于校園網的實驗環境建設及其管理應該是今后高校實驗室建設的一個重要方向。通過校園網,利用學生自己的計算機,可以形成一個覆蓋整個校園的“虛擬實驗室”。
(5) Linux具有完善的網絡服務,默認集成完善的C/C++編程環境。
可以看出,建設基于Linux的操作系統網絡實驗環境是切實可行的。這種實驗環境造價低廉,學生使用方便,同時也可為其他課程的基于網絡的實驗環境建設提供方法和經驗。
3 系統功能設計
本系統的主要任務是構建一個Linux教學管理服務器;它不僅要向用戶提供Web登錄賬號,而且要開放Telnet賬號,要有完善的教學管理功能,以方便老師的實驗教學管理。參考目前現有的其他課程教學管理系統的功能,同時結合操作系統課程實驗的特點,本教學管理系統主要分為教師端,學生端和管理員端三部分。
3.1教師端功能
教師端程序相對復雜,主要具備如下功能:
① 教學班創建與刪除
根據目前各學校學生選課流程,學生首先要在教務管理系統上選課。本系統首先要實現與教務選課系統方便有效地結合,將教務系統的選課名單導入本教學管理系統。
由于教務系統保存了學校全部學生的成績檔案,安全性要求較高,通常不會向網絡用戶提供編程接口(如Web Service接口)。較簡單的辦法就是通過復制方式將選課名單粘貼成一個文本數據庫文件,每個學生占一行,各屬性字段用空格分開。再用編程方式將文本數據庫文件導入本實驗教學管理系統。在導入過程中,系統自動給每個用戶創建Web賬號。Telnet賬號可以班為單位單獨添加和刪除,也可和Web賬號一同創建。
在學期教學完成后,教師可以刪除該教學班。
② 賬號管理
主要完成個別學生的Web賬號及telnet賬號的創建,恢復與刪除。在選課過程中,經常會出現學生補選該課程或刪除該課程,以及部分學生忘記自己的密碼等問題。
③ 作業管理
此功能主要包括教師通過Web方式布置作業,管理學生上傳的作業以及對學生通過telnet登錄完成的作業進行統計。其中教師在布置作業時可以指明該作業是否要求學生通過網絡上傳結果。若可以上傳,老師還可以對學生上傳的作業進行評分。Telnet作業統計功能可以對學生通過Telnet登錄完成的作業數量及其屬性進行統計。
④ 公告發布功能和教學答疑功能
3.2學生端功能
學生端的功能比較簡單,主要包括Web賬號密碼修改,查看本系統中自己的教學班,作業下載與上傳,教案下載,Telnet連接以及使用答疑系統。
3.3管理員端功能
管理員主要完成教師賬號管理,公告信息管理,數據庫管理以及其他如IP地址、信息過濾等管理。
4 數據庫設計
本系統基于Linux平臺,采用Apache+PHP+Mysql作為開發環境。
根據系統要求的功能,所設計的數據庫OSnet中共有12個表,分別為:管理員數據表、教師數據表、學生數據表、課程數據表、實驗項目數據表、選課數據表、上傳作業數據表、課程資料數據表、公告數據表、留言薄數據表、相關資料數據表和實驗時間安排表。
上述12個表中,部分表是為了擴充系統功能設計的,并非基于Linux的操作系統課程實驗系統所必須的。這里僅列出課程數據表結構(如表1):
表1 課程數據表結構

5 系統主要功能實現
用戶通過系統的登錄頁面輸入用戶信息后,依據用戶類型的不同在不同的數據表里驗證后,調用相應用戶類型的模塊。其程序流程如圖1所示。

圖1 用戶登錄流程
5.1教學班管理模塊(教師端)
教學班管理模塊的要完成的功能如圖2所示:

圖2 教學班管理模塊
在學期開始,教師需要創建自己的教學班,同時添加學生名單。創建教學班時通過添加表單,將所需要的信息傳遞給后臺PHP程序。后臺程序在收到這些信息后,首先查詢數據庫,檢查課程與課程簡稱是否有重復,如果存在重名,則彈出警告窗口;否則在數據庫里進行操作,添加相應的數據項,同時根據學生名單創建學生登錄賬號。如有必要,則同時創建Telnet賬號。
學期結束后,教師需要刪除教學班。老師首先選擇要刪除的班級,然后系統從數據庫中得到這個班的學生名單,并從選課數據表中刪除。如果這個課程是此賬號在系統中的最后一門課,那么其WEB賬號一并刪除;如果該教學班有Telnet賬號,則先刪除此賬號,然后刪除與這門課有關的教案、作業與學生上傳的作業,最后從課程數據表中刪除這門課程。
5.2賬號管理模塊(教師端)
該功能利用PHP對數據庫進行操作,當需要添加學生賬號的時候,先將賬號插入到選課數據表中。如果這是該賬號的第一門課,會將其插入到賬號數據表中。如果所添加的學生所在的班級有Telnet賬號,那么還需要為其添加Telnet賬號。
教師賬號的添加與學生賬號添加相似,不同在于教師賬號僅僅是插入到教師賬號數據表中。
添加賬號的難點在于Telnet賬號的添加,原因是Linux系統中僅有管理員賬號才有添加賬號的權限,如果直接使用system()命令來調用Linux中的useradd指令,會遇到權限不足的問題。解決方法是:首先創建一個用戶供www服務器使用,這樣PHP就是以這個用戶的身份執行外部命令,然后修改Linux的sudoer文件,利用Linux的sudo命令使其暫時獲得相應的權限,在PHP中使用system()調用此命令時就不會出現權限問題。但需要注意所創建用戶的安全問題,以防止非法用戶利用這個賬號進行破壞活動。方法之一是修改其登錄的shell為nologin,使這個用戶不能被登錄。
實現添加Telnet用戶的部分關鍵代碼如下:
$command=\"sudo /usr/sbin/useradd -d
/var/www/html/teacher/telnet/\".$classid.\"/\".$_POST[\"stu_number\"].\" -g \".$classid.\" \".$username;
//添加用戶的Linux命令
system($command);//使用system命令執行這條指令
$command=\"echo \".$_POST[\"stu_number\"].\"|sudo /usr/
bin/passwd \".$username.\" --stdin\";//修改新增用戶的密碼,使用了管道
exec($command);
5.3學生提交作業模塊(學生端)
學生發出提交作業請求給系統時,系統會首先檢查學生提交的作業文件名是否符合要求(文件名要求為學號.rar),然后檢查作業是否是已經被教師所評閱,是否超期等。在經過這一系列的檢查后,通過檢查的作業數據將寫入數據表并最終完成提交作業操作,其流程如圖3所示。
5.4Telnet作業統計(教師端)
該功能會自動對當前班級的Telnet目錄每個學生的文件進行統計,具體實現方法是使用Linux下面的ls命令與管道功能,同樣由于權限問題,要用到sudo命令以提升服務器用戶的權限。關鍵部分的源代碼如下:
$path=\"/var/www/html/teacher/telnet/\".$classid.\"/\".$row[0];
//文件夾路徑
$command=\"sudo /bin/ls \".$path.\" -l|awk '/^d/'|wc -l\";
//目錄數
system($command);
$command=\"sudo /bin/ls \".$path.\" -l|awk '/^-/'|wc -l\";
//文件數目
system($command);
$command=\"sudo /bin/ls \".$path.\"|grep \\\"\\\\.c\\\"$|wc -l\";
//C文件數目
system($command);
$command=\"sudo /bin/ls \".$path.\"|grep -E \\\"\\\\.C|\\.cpp\\\"$|wc -l\";
//C++文件數目
system($command);
$command=\"sudo /bin/ls \".$path.\" -l|awk '/^-rwx/'|wc -l\";
//可執行文件數目
system($command);

圖3 提交作業檢查流程圖
6 結束語
該系統經過一段時間的運行及改進,目前功能已經比較完善,性能穩定。實踐證明該系統使用方便,對增強學生對操作系統原理的理解有一定的幫助。為方便學生使用,我們已經編寫了基于該系統的操作系統實驗指導書。
在使用過程中,該系統仍有如下問題需要解決:要盡量從技術上減少學生抄襲現象;定時清除學生遺留下來的不良進程;關于操作系統內核修改的實驗不能實現。上述問題目前正在解決中。
參考文獻
[1] 趙永儉等. 建設以實驗中心為主體的教學基地,培養高素質人才[J]. 實驗技術與管理,2001,(1).
[2] 古梅. 校園網環境下實現網絡化教學的探索與實踐[J]. 計算機教育,2005,(增刊).
[3] Steve Shah著. 楊濤等譯. Linux管理員指南[M]. 北京:機械工業出版社,2001.