APP下载

程序在线测评系统的开发关键技术

2015-05-30池邦强王丽丽

中国新通信 2015年21期
关键词:队列代码教学管理

池邦强 王丽丽

【摘要】 从实现现代化计算机教学管理的角度出发,在程序评测机制,多核测评技术,负载均衡,源代码抄袭检测,教学管理,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.

猜你喜欢

队列代码教学管理
教学管理信息化问题研究
新时期高中教学管理改革与实践
谈教学管理的艺术
队列里的小秘密
基于多队列切换的SDN拥塞控制*
在队列里
创世代码
创世代码
创世代码
创世代码