《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 一種基于ACM程序設計競賽在線評測系統解決方案
一種基于ACM程序設計競賽在線評測系統解決方案
車明洙1,紀洪波2
1. 延邊大學 信息化中心,吉林 延吉 133002 ;2. 通化師范學院 計算機科學系,吉林 通化
摘要: 分析了一種基于ACM程序設計競賽在線評測系統的基本原理及系統的構成,重點闡述了程序性能評判原理及實現方法。對通信安全、資源占用等關鍵問題給出了相應的解決方案,主要模塊給出了相應代碼。
Abstract:
Key words :

摘 要: 分析了一種基于ACM程序設計競賽在線評測系統的基本原理及系統的構成,重點闡述了程序性能評判原理及實現方法。對通信安全、資源占用等關鍵問題給出了相應的解決方案,主要模塊給出了相應代碼。
關鍵詞:評測系統;ACM;程序性能

    ACM國際大學生程序設計競賽 (ACM/ICPC或ICPC) 是由美國計算機協會 (ACM) 主辦、旨在展示大學生創新能力、團隊精神和在壓力下編寫程序、分析和解決問題能力的年度競賽。經過近 30 年的發展,ACM 國際大學生程序設計競賽已經發展成為最具影響力的大學生計算機競賽。競賽規模的迅速擴大對閱卷工作的自動化、高效性、合理性和公正性提出了更高的要求,建立一套準確、高效的程序評測系統成為非常迫切的需求?;谝陨显颍疚慕o出了一種網絡自動化的程序性能分析評價系統——ACM國際大學生程序設計競賽在線評測系統的實現方案。
1 評測系統簡介
    本系統提供了對C、C++、Java三種語言所編寫的程序進行處理的功能。用戶按照競賽題目的要求,通過對問題的分析并給出解決方案后,就可以向系統提交解決問題的源代碼程序。系統可以根據用戶提供的源代碼,采取相應的程序語言環境編譯、運行。在編譯與運行正常以后,系統按照題目要求來判斷該程序結果否正確,同時給出程序的運行時間、內存的開銷等情況,根據程序性能信息表[1-2]來判斷各個用戶的得分情況。
    系統運行于Linux操作系統,借助Linux操作系統所提供的多任務、多線程功能及其穩定的性能和免費開源的內核,從而大大減少程序員書寫系統代碼的工作量,也提高了系統的運行效率。代碼是用C語言編寫的,通過自己編寫函數或調用C語言內部函數來訪問系統所使用的資源。
2 評測系統的體系結構
    評測系統網絡體系結構采用先進的B/S模式的三層架構,如圖1所示,這種結構符合面向服務(SOA)的模塊設計,模塊耦合性低,使得業務邏輯的添加、修改較為容易,并且網絡通信安全性能方面也大為提高。用戶通過瀏覽器連接評測系統,表示層UI 是系統呈現給用戶的使用界面,用戶通過 UI 進行登錄、瀏覽、提交代碼等操作。業務邏輯層BL負責實現根據性能信息表數據評分等除測試部分以外的各模塊的功能。本系統將評測部分(主要是黑盒測試)從業務邏輯層中獨立了出來,成為一個專門的測試模塊,這種做法的優點是對測試模塊的修改、增刪都很容易進行。數據庫DB主要用來存儲用戶提交的程序性能信息表及用戶信息表等,程序性能信息表中主要包括程序的各種性能信息,例如是否通過編譯、是否超出最大時間、是否正常結束、語言類別、結果是否正確、代碼運行時間、內存開銷、CPU占用量、代碼長度等。測試模塊從數據庫取得未測試代碼,進行評測,將程序性能信息表中相關項的評測結果返回給數據庫,業務邏輯則從數據庫取得程序性能信息表,并根據表中各項數據評分,對于未通過編譯、超出最大時間、非正常結束、結果不正確的程序按不合格處理,對于上面各項都合格的則按程序性能信息表中其余項進行綜合評分。

3 評判原理
    對程序編譯與運行過程中出現的錯誤,系統會根據錯誤的不同給出相應的提示,例如是編譯錯誤或者是運行錯誤。如果編譯和運行都正確,系統將進一步通過相應的題目要求、對程序要求給出的輸入和程序輸出的結果,來判斷該程序是否正確。
    在進行程序評判時,先啟動服務器評測進程,在偵聽到有提交記錄時,系統立即對提交記錄的相關題目進行評判。每個問題均對應一組數據(輸入和輸出文件),系統設計時采用Linux管道(pipe(int filedes[3]))來處理,評判進程啟動一個子進程(fork())來編譯運行用戶提交的程序,讀入該題目的輸入數據,評判程序每次從管道讀入一個字符與標準輸出數據比較,如果兩個文件完全一樣,則表示程序正確;如發現只是相差空格、Tab、回車,則給出該程序為輸出格式錯誤信號(Presentation Error);如果發現其他字符的不匹配,則立即中止該程序,則給出該程序為結果錯誤的信號Wrong Answer。從程序運行時刻開始計時,在時間允許范圍之內,得到了正確答案,則此提交程序符合題目要求并通過系統時間和內存的限制,給出接受的信號(Accepted)。反之,如果答案錯、或者表達錯、運行錯等,則向該進程發出SIGKILL信號,強行中止該進程,對數據庫記錄進行相應的修改。運行流程如圖2所示。


4 程序核心內容分析
    為了能有效地解決和判斷用戶程序對系統資源的使用情況,系統定義了rusage結構體。該結構體具體信息為:
    struct rusage {
    struct timeval ru_utime;              /* user time used */
    struct timeval ru_stime;            /* system time used */
    long ru_minflt;                            /* page reclaims */
    long ru_majflt;                               /* page faults */
    };
    ru_utime和ru_stime成員變量包含了在用戶模式和系統模式中執行時間的總和。其結構都為timeval結構。
    ru_minflt成員指不需要I/O的頁缺失數。頁缺失發生在內核需要得到一個內存頁以供進程訪問。
    ru_majflt值指需要I/O的頁缺失數。頁缺失發生在內核需要得到一個內存頁以供進程訪問時。
    有時,一個進程會被調出內存,以提供空間給其他進程使用。ru_nswap指的就是一個進程被調出內存的次數。
    通過該結構體就可以統計出各用戶程序對資源的占用情況,通過調用函數int getrusage(int who, struct rusage *rusage)對用戶程序運行時間和內存占用情況進行分析統計。
    統計程序運行時間:
    passtime=usage.ru_utime.tv_sec+usage.ru_stime.tv_sec+(float)(usage.ru_stime.tv_usec+usage.ru_utime.tv_usec)/1000000;
    統計程序所占內存的開銷: 
    usedMemory = usage.ru_minflt*4
    通過統計該兩項,能計算出程序運行時間和內存使用情況的數據,為結果排序做準備。
5 系統安全處理
    用戶提交的程序在服務器上運行,為了保證系統安全運行、減少或杜絕故障的發生,在解決安全故障方面主要有以下幾個方面。
    (1) 文件操作
  為了讓用戶提交上來的程序不破壞本機的文件系統,本設計采用了管道技術,在執行用戶程序之前,先把輸入流定向到標準輸入文件,然后使用chroot命令改變用戶程序的執行目錄,讓其只能在一個臨時文件夾下面做操作。
    (2) 網絡操作
  為了不讓用戶程序影響評判系統的設置,保證評判系統的公正性,必須禁止用戶對網絡的訪問。系統通過對用戶實行權限限制機制,判斷系統在用戶程序運行之前,通過調用Linux系統中setuid(99) 和 setgid(99)兩個函數[4],讓用戶程序的擁有者權限降到最低,達到防止用戶對網絡使用的目的。
    (3) 資源管理
    資源管理的作用是對客戶進程所使用的資源進行管理,Linux系統提供的資源限制函數setrlimit(),可以避免用戶進程在運行的過程中過多地占用系統資源,以影響服務器系統的穩定性,最終有可能導致系統的崩潰。
    為了防止用戶進程占用過多的資源,影響服務器系統的穩定,對用戶進程在占用資源方面進行限制,主要考慮程序運行時間和內存占用兩個方面,在程序運行之前,通過調用系統函數setrlimit()來限制程序對系統資源的占用。函數setrlimit( RLIMIT_AS,&memlim)和setrlimit( RLIMIT_CPU,&timlim)分別用來限制用戶程序對CPU和內存的占用情況,如果某用戶的程序超過了系統對CPU和內存的最大設置值,該進程就會被自動中止,標志用戶的程序不滿足比賽要求。
    通過對基于ACM國際大學生程序設計競賽在線評測系統的分析研究,設計了相應的ACM測試軟件,習題的測試難度可由指導老師自己設計。該軟件也可以作為計算機專業學生算法測試工具,通過對該測試系統的使用,經過一定題量的練習,可以增強學生在算法方面設計的技能,為學生奠定雄厚的編程基礎。
參考文獻
[1] ESPINOSA A, MARGALEF T, LUQUE E. Automatic performance evaluation of parallel programs. The Sixth Euromicro Workshop on Parallel and Distribued Processing, 1998(21):43-49.
[2] ESPINOSA A, MARGALEF T, LUQUE E. Automatic detection of parallel program performance problems. Lecture Notes in Computer Science 1999(1573):365-377.
[3] STEVENS W R, RAGO S A著.UNIX環境高級編程(第2 版)[M] . 尤晉元,張來英,戚正偉,譯.北京:人民郵電出版社,2006.
[4] SARWAR S M, KORETSKY R, SARWAR S A著. Linux教程[M].李善平,施韋,林欣,譯.北京:清華大學出版社,2005.
 

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          欧美特黄a级高清免费大片a级| 1204国产成人精品视频| 欧美成黄导航| 免费观看久久久4p| 亚洲欧洲日韩综合二区| 一个人看的www久久| 国内精品一区二区| 在线播放一区| 99综合电影在线视频| 免费一级欧美片在线观看| 一区二区三区免费看| 国产精品一二| 欧美日韩一区二区三区四区在线观看| 久久国产精品一区二区三区四区| 亚洲激情婷婷| 欧美jizzhd精品欧美巨大免费| 亚洲小说春色综合另类电影| 欧美三级日韩三级国产三级| 免费一级欧美片在线播放| 国产欧美一区二区三区久久人妖| 亚洲第一中文字幕在线观看| 亚洲欧洲在线免费| 欧美三区视频| 一本色道久久综合亚洲二区三区| 欧美日韩综合网| 亚洲线精品一区二区三区八戒| 99视频精品免费观看| 午夜一级久久| 一色屋精品视频在线观看网站| 99精品欧美一区| 欧美啪啪一区| 亚洲一区二区三区免费观看| 亚洲综合日韩中文字幕v在线| 欧美日韩日日骚| 欧美午夜精品理论片a级大开眼界| 欧美人与性动交cc0o| 欧美激情中文字幕一区二区| 欧美激情按摩在线| 蜜桃久久精品一区二区| 欧美一区在线直播| 久久日韩粉嫩一区二区三区| 99在线精品视频在线观看| 亚洲高清一二三区| 久久久久久97三级| 国产精品进线69影院| 亚洲激情欧美| 欧美xxxx在线观看| 欧美~级网站不卡| 久久精品中文| 欧美日本精品在线| 久久久亚洲国产美女国产盗摄| 国产农村妇女毛片精品久久麻豆| 1204国产成人精品视频| 亚洲欧美一区在线| 亚洲日本va在线观看| 亚洲黄色性网站| 亚洲国产合集| 国产一区二区日韩精品欧美精品| 国产欧美日韩一区二区三区在线| 欧美电影免费观看大全| 欧美在线看片a免费观看| 亚洲精品视频二区| 伊大人香蕉综合8在线视| 欧美一区午夜视频在线观看| 亚洲高清一二三区| 国产亚洲欧洲997久久综合| 午夜欧美电影在线观看| 亚洲视频欧洲视频| 欧美日韩一区在线观看视频| 国产午夜精品久久久久久免费视| 国产精品爱久久久久久久| 欧美黄色aaaa| 国产精品久久999| 欧美人与性动交cc0o| 欧美v国产在线一区二区三区| 亚洲综合色网站| 最新69国产成人精品视频免费| 国产农村妇女精品| 欧美日韩精品国产| 久久综合亚州| 在线亚洲欧美视频| 久久激情五月婷婷| 在线亚洲欧美专区二区| 久久九九热re6这里有精品| 国精品一区二区三区| 国产精品swag| 欧美1级日本1级| 欧美激情一级片一区二区| 国产精品成人av性教育| 欧美另类亚洲| 一区二区三区久久网| 国产精品久久久久久福利一牛影视| 亚洲视频在线观看网站| 亚洲国产精品va在线看黑人动漫| 欧美视频不卡| 激情综合色综合久久| 亚洲一区二区在线视频| 亚洲综合色婷婷| 午夜亚洲视频| 欧美日韩国产影片| 激情婷婷久久| 亚洲影音一区| 亚洲午夜在线| 欧美极品在线观看| 一区二区三区日韩精品视频| 欧美日韩成人在线视频| 亚洲直播在线一区| 欧美精品成人一区二区在线观看| 中文日韩电影网站| 在线观看中文字幕不卡| 欧美激情久久久久| 免费观看成人网| 亚洲精品欧美日韩专区| 国产精品国色综合久久| 欧美丰满高潮xxxx喷水动漫| 麻豆亚洲精品| 国产欧美日韩激情| 亚洲特色特黄| 国产精品稀缺呦系列在线| 国产精品国色综合久久| 国产精品v欧美精品v日韩精品| 免费观看成人www动漫视频| 亚洲小说欧美另类婷婷| 亚洲免费黄色| 国产精品国产成人国产三级| 亚洲视频综合在线| 亚洲精品欧美在线| 国产综合欧美在线看| 午夜精品视频在线观看一区二区| 蜜臀久久99精品久久久画质超高清| 91久久夜色精品国产九色| 亚洲美女诱惑| 国产伦精品免费视频| 国产精品成人观看视频国产奇米| 99视频在线精品国自产拍免费观看| 免费在线欧美视频| 亚洲欧洲一区二区三区在线观看| 免费在线观看日韩欧美| 老色鬼久久亚洲一区二区| 欧美精品18| 国产精品综合视频| 欧美在线播放视频| 欧美一区二区三区视频| 国产一本一道久久香蕉| 国产精品一区二区黑丝| 亚洲一区二区在线免费观看| 亚洲一级特黄| 欧美精品日韩三级| 国产精品视频xxxx| 亚洲在线观看视频网站| 亚洲理论在线观看| 亚洲国产第一| 国产一区二区三区最好精华液| 欧美在线黄色| 国产片一区二区| 午夜视频一区| 久久亚洲精品中文字幕冲田杏梨| 亚洲欧美激情四射在线日| 欧美日韩国产影片| 美女999久久久精品视频| 美女视频一区免费观看| 尤物99国产成人精品视频| 亚洲视频网站在线观看| 欧美视频在线观看 亚洲欧| 国产一区二区无遮挡| 久久亚洲捆绑美女| 激情五月***国产精品| 亚洲激情视频在线播放| 一区二区三区成人精品| 欧美极品在线播放| 亚洲黄色有码视频| 黄色成人av网站| 久久精品视频播放| 亚洲天堂成人在线观看| 一片黄亚洲嫩模| 欧美性一二三区| 亚洲欧洲免费视频| 亚洲四色影视在线观看| 亚洲高清三级视频| 国产精品成人一区二区网站软件| 欧美日一区二区在线观看| 午夜在线播放视频欧美| 欧美精品精品一区| 亚洲专区一区| 亚洲一区二区三区777| 亚洲欧美日韩国产一区| 99这里有精品| 黄网站免费久久| 亚洲精品久久在线| 亚洲视频999| 性久久久久久久久| 亚洲综合99| 久久高清福利视频| 亚洲国产日韩欧美| 亚洲激情成人网| 国模一区二区三区| 另类人畜视频在线| 久久国产欧美精品| 好吊色欧美一区二区三区视频| 国产日韩一区二区三区在线播放| 国产色爱av资源综合区| 国产视频在线观看一区二区三区| 性欧美大战久久久久久久免费观看| 久久综合给合久久狠狠狠97色69| 国产精品户外野外| 在线视频欧美日韩精品| 亚洲欧洲一区二区天堂久久| 狠色狠色综合久久| 久久久久成人精品免费播放动漫| 国产精品综合av一区二区国产馆| 欧美一级淫片aaaaaaa视频| 亚洲风情亚aⅴ在线发布| 激情五月婷婷综合| 国产精品午夜视频| 亚洲人成在线观看一区二区| 日韩视频一区| 国产午夜精品一区二区三区欧美| 国产精品视频导航| 国产自产女人91一区在线观看| 国产一区二区中文字幕免费看| 韩国欧美国产1区| 亚洲欧美精品伊人久久| 欧美午夜a级限制福利片| 日韩视频中文字幕| 久久久久久亚洲精品杨幂换脸| 欧美一级大片在线观看| 校园激情久久| 亚洲精品影院在线观看| 欧美激情aⅴ一区二区三区| 国产视频在线观看一区二区| 亚洲激情综合| 欧美日韩成人网| 欧美一区二区日韩| 美女视频黄a大片欧美| 午夜国产欧美理论在线播放| 国产农村妇女精品| 欧美福利网址| 影音先锋亚洲一区| 国产啪精品视频| 久久一区免费| 9久草视频在线视频精品| 久久成年人视频| 亚洲第一在线综合网站| 亚洲片在线观看| 久久中文久久字幕| 国产精品自拍三区| 亚洲第一级黄色片| 亚洲小视频在线| 国产一区二区三区免费不卡| 亚洲香蕉成视频在线观看| 中日韩美女免费视频网站在线观看| 国产一区二区三区久久久久久久久| 国产欧美日韩精品丝袜高跟鞋| 麻豆av一区二区三区| 狠狠色丁香婷综合久久| 国产小视频国产精品| 国产女人18毛片水18精品| 亚洲永久免费精品| 亚洲国产天堂久久国产91| 午夜视频在线观看一区| 亚洲性线免费观看视频成熟| 久久久www成人免费毛片麻豆| 欧美午夜片欧美片在线观看| 亚洲国产精品va| 国产一区二区三区在线观看视频| 国产免费亚洲高清| 欧美日韩喷水| 欧美伦理91| 亚洲一品av免费观看| 欧美另类变人与禽xxxxx| 欧美高潮视频| 免费在线观看日韩欧美| 在线亚洲一区观看| 在线看欧美视频| 香蕉成人伊视频在线观看| 宅男噜噜噜66一区二区| 国产精品va在线播放| 国产一区二区三区久久悠悠色av| 亚洲欧美成人在线| 国产一区二区三区精品久久久| 国产一区二区三区日韩| 国产九九视频一区二区三区| 亚洲激情在线观看| 久久久久久9| 韩国av一区| 欧美黄色精品| 亚洲精品一品区二品区三品区| 国产精品v日韩精品v欧美精品网站| 久久精品午夜| 欧美成人午夜影院| 欧美一区二区三区免费在线看| 亚洲一区欧美二区| 日韩视频在线一区二区| 亚洲国产裸拍裸体视频在线观看乱了中文| 欧美精品国产精品日韩精品| 久久噜噜噜精品国产亚洲综合| 欧美亚洲视频在线观看| 老司机午夜精品视频| 国产一区二区三区日韩欧美| 久久久亚洲国产美女国产盗摄| 国产嫩草一区二区三区在线观看| 欧美国产日韩在线| 狠狠做深爱婷婷久久综合一区| 老司机亚洲精品| 一区二区三区在线视频免费观看| 亚洲精品久久久久久久久久久久久| 免费亚洲电影在线观看| 久久国产99| 麻豆精品一区二区综合av| 欧美三区在线视频| 国产精品videosex极品| 国产日韩高清一区二区三区在线| 欧美日韩精品免费看| 99国产精品视频免费观看一公开| 亚洲精品五月天| 欧美日韩国产综合网| 香蕉久久国产| 欧美另类一区| 国产免费观看久久黄| 欧美性生交xxxxx久久久| 欧美一区三区三区高中清蜜桃| 夜夜嗨一区二区| 久久精选视频| 亚洲一区二区三区四区视频| 麻豆免费精品视频| 国产精品久久久久aaaa九色| 欧美激情精品久久久久久久变态| 韩国欧美一区|