池邦強 王麗麗
【摘要】 從實現現代化計算機教學管理的角度出發,在程序評測機制,多核測評技術,負載均衡,源代碼抄襲檢測,教學管理,Cache緩存、異步響應等方面搭建并優化了在線測評系統,使得在線評測程序更加容易應用于計算機教學管理。后討論了基于在線測評系統實現智能教學管理的統一測試平臺的方式和問題。
【關鍵字】 在線測評 緩存 抄襲檢測
一、在線測評系統的架構
程序在線測評系統(Online Judge System,以下簡稱OJ),起于ACM/ICPC競賽,是一個基于web的應用程序。該系統在Linux環境下開發,站點采用LAMP結構(Mysql版本>= 5.1,PHP版本>=5.3.28),其作用是與用戶交互,存儲業務數據。judge_client進程為實際判題程序,由judged觸發,負責準備運行環境、數據,運行并監控目標程序的系統調用,采集運行指標,判斷運行結果。前后端的耦合處是數據庫。同時歸咎于LAMP的結構,該系統前端的移植性較好。但如果想要做到在Windows下判題,需要重寫部分判題程序的代碼。
二、在線測評系統的前端/站點結構
Controller層和Model層均使用class來編程。Controller層負責從View層讀取數據,控制用戶輸入,并向Model層發送/取出數據。Model層負責在數據庫中存取數據。View層不能直接與Model層通信,所有的數據都通過Controller層獲得。這樣就允許更改視圖層代碼而不用重新編譯模型和控制器代碼,View層可以根據不同要求快速改造頁面。利用CSS3的@media screen特性,可以控制不同尺寸設備的顯示效果。UJSOJ利用這種特性快速編寫了移動端。
三、在線測評系統的后端判題服務
后端判題服務與前端站點的耦合點是數據庫。通信方式是對Mysql輪詢。當用戶提交新的代碼至數據庫中,judged程序將開啟一個judged_client進程,將代碼交由judged_ client處理。這里也是系統開銷最大的地方。為了實現judged_client流暢運行,其運用了以下一些技術。
3.1 沙箱機制
由于用戶提交的是需要運行的代碼,安全性是最大的問題。沙箱機制被用來保證程序不影響服務器環境,它主要從以下幾個方面進行限制:
a時間,資源方面:針對不同的題型有不同的內存限制,運行時間限制。
b敏感詞過濾:設立黑名單數組,通過正則搜尋,不允許代碼中出現類似以下的詞組:system(“shutdown …”)。
c管道技術:一般適用于linux系統,在系統執行用戶提交的代碼前,系統首先把輸入流定向到標準輸入文件,然后使用chroot改變用戶程序的執行目錄,讓其只能在一個臨時目錄下面做操作。
d權限與訪問控制方面,不允許代碼讀取規定目錄和用戶相關目錄以外的任何文件。
3.2 任務隊列與負載均衡
根據教學實際情況,學生提交程序一般集中在一個時間段。在這個時間段內系統會接收到大量的運算任務。任務隊列模型用于排序提交的任務。負載均衡的前提是使用了多個判題機,目的是減少單機負荷,提高判題效率。任務隊列模型中,用戶提交的任務成隊列排序,先進先出。當用戶提交新的答案后,Web程序就將判題任務加入數據庫的任務隊列,隨后判題服務程序Judged 則自動鎖定任務并完成,可以防止同一任務被多次判斷而浪費系統資源。同時,系統可以設置多個判題機以增大負荷能力,采用對數據庫輪詢策略實現負載均衡。這里的負載均衡并非是以“判題機在該時刻CPU或者內存占比的大小“為參數的均衡,而是以“任務數量”作為參數。因此在分配任務時,任務分配到哪一臺判題機上是以“任務ID”對模”任務總數“取余決定的。這樣的設計不但能夠適應日常教學的小范圍使用,而且可以從多個層面擴大服務器集群的規模,高效應對大規模的并發服務。
3.3 防抄襲機制
當用戶代碼的通過測試后,judge_client將產生所提交代碼的MD5碼(信息-摘要算法5)記錄于數據庫中。這意味著想要找到兩個不同的數據,使它們具有相同的MD5值時非常困難的。但這也應當注意到,防抄襲機制在這種情況下不是很有效,增加一個空格就會生成不同的MD5。所以只有用戶(這里主要指向學生)原封不動復制代碼應付作業,才會發生這種狀況。為了增強防抄襲機制的有效性,可以利用正則表達式,先對通過的代碼的去處多余的空格,換行符,制表符等,類似一種簡單的壓縮,再生成其MD5碼,這將增強防抄襲機制的有效性,但是其冗余的步驟對系統的開銷需要系統管理員納入考慮范圍。
四、總結
該系統的實現,很快地運用到現實的學習生活中去,有效的考核學生的真實水平,促使學生更好的學習計算機知識,強化學生的實踐能力,減輕了老師在教學管理上的負擔;還使學生將來能更好地適應快速發展的信息化時代,進一步發揮出計算機網絡對當今教育領域甚至其他行業的突出貢獻。
參 考 文 獻
[1] 管賦勝.基于集群技術的源代碼自動評測系統研究[J].硅谷, 2009(16):48—49.
[2] 游春暉.基于語義情感傾向的文本相似度計算[D].西安:電子 科技大學,2008.