关于 Online Judge 判题沙箱的学习问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zxCoder
V2EX    问与答

关于 Online Judge 判题沙箱的学习问题

  •  
  •   zxCoder 2020-09-07 21:33:19 +08:00 1914 次点击
    这是一个创建于 1860 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想从头造一个轮子,写一个 OJ 系统,其他 web 开发和业务逻辑相关的因为打过比赛比较清楚,但是判题这部分几乎没有任何基础,想问一下应该如何从零学起?是不是对系统底层,操作系统,系统安全这些方面要求很高? 或者目前有没有比较完善安全的这种判题器?

    6 条回复    2020-09-09 20:08:26 +08:00
    ysc3839
        1
    ysc3839  
       2020-09-07 23:13:03 +08:00
    从底层研究不是不可以,但是太浪费时间了,还容易出现漏洞。建议使用 Docker 等现成的方案。
    kipsora
        2
    kipsora  
       2020-09-08 04:03:22 +08:00
    参考一下 VFleaKing 的 UOJ 的沙箱?我很久之前自己仿(chao)造(xie)了一个,docker 可能没办法很好地测量时间和峰值内存吧,自己写隔离肯定不太行,所以比较理想的方案是在 docker 中跑沙箱(或者你对自己的沙箱足够自信也可以不用 docker )。

    具体见: https://github.com/vfleaking/uoj/tree/master/judge_client/1/uoj_judger

    不过我觉得从头造轮子这件事,用来学习一下操作系统编程感觉还行,真的要用不如先参考一下市面上有没有现成能拿来用的 OJ,自己写的 OJ 一是你走了之后维护会很麻烦,最后可能也没啥人用。
    Ginray
        3
    Ginray  
       2020-09-08 09:18:30 +08:00
    如果写着玩玩,还是挺有趣的,可以参考下 hustoj,网上也有不少博客。
    话说是不是 ACMER 想提升工程能力时都会不约而同想到做 OJ,hhh
    acmerliu
        4
    acmerliu  
       2020-09-08 09:20:53 +08:00
    基于 docker 方案我最近实现了一套,部署在阿里云上测试还可以,但是目前在获取容器内程序执行时间这里还没想到好的方案,其他的编译、运行、资源限制都可以,而且 docker 实现也不慢,一台服务器可以启多个 docker 实例判题,横向扩展也可以。楼主是想做这方面的事情嘛,可以加个好友相互学习,我也是想写一个 OJ 系统,liuning8521 。
    zxCoder
        5
    zxCoder  
    OP
       2020-09-08 17:22:20 +08:00
    看了几个开源的 oj 的判题模块,感觉特点就是没有统一的,啥类型的都有,找不到比较优秀的项目可以模仿和二次开发 orz
    acmerliu
        6
    acmerliu  
       2020-09-09 20:08:26 +08:00
    @zxCoder 基于 lorun 可以,底层是 c 语言,打包成.so ,上层 python 可调
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2462 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 01:41 PVG 09:41 LAX 18:41 JFK 21:41
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86