- 2009-06-17 (水) 1:08
Imo Judge
Imo Judgeはimos製作のジャッジシステムです.主にImos Contestsで利用されます.
- サーバOS: Ubuntu
- Apache 2, MySQL 5, PHP 5の上で動きます.
- 仮想OS: Debian(business card)
- 対応言語: gcc, g++, Java(Sun), C#(mono 2.0), VB.NET(mono 2.0)
メインサーバがユーザとのやり取りおよび管理を行い,VMware Player上で動く仮想OSにソースコードを投げます.そして仮想OSはソースコードのコンパイルおよび実行を行い,その結果をメインサーバに返します.この結果,クラックを受けた場合もメインサーバ側ではVMwareの権限までしか奪われません.やり取りとしてはClient⇔Main⇔Apache(main)⇔PHP(main)⇔RAM Disk(main)⇔VMware⇔Mounted Disk⇔Judge System(uid: root)⇔Runner(uid: contest)という感じになる予定です.
計算速度の決定法
以下のコードを10秒で実行できる速度をジャッジに使う時間とします.(小数点の速度やメモリへのアクセス速度は実行する環境によって違うかもしれません)
001: #include <stdio.h>
002:
003: int main() {
004: __asm__ __volatile__(
005: " push %eax\n"
006: " push %ebx\n"
007: " movl $0, %eax\n"
008: "next:\n"
009: " addl $1, %eax\n"
010: " movl $0, %ebx\n"
011: "next2:\n"
012: " addl $1, %ebx\n"
013: " cmpl $100000, %ebx\n"
014: " jne next2\n"
015: " cmpl $100000, %eax\n"
016: " jne next\n"
017: " pop %ebx\n"
018: " pop %eax\n"
019: );
020: return 0;
021: }
002:
003: int main() {
004: __asm__ __volatile__(
005: " push %eax\n"
006: " push %ebx\n"
007: " movl $0, %eax\n"
008: "next:\n"
009: " addl $1, %eax\n"
010: " movl $0, %ebx\n"
011: "next2:\n"
012: " addl $1, %ebx\n"
013: " cmpl $100000, %ebx\n"
014: " jne next2\n"
015: " cmpl $100000, %eax\n"
016: " jne next\n"
017: " pop %ebx\n"
018: " pop %eax\n"
019: );
020: return 0;
021: }
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://imoz.jp/imo-judge/trackback/
- Listed below are links to weblogs that reference
- Imo Judge from 超現実いもす(imos)の日記