当前位置:  开发笔记 > 运维 > 正文

如何在内存/ CPU时间有限的Windows下运行程序?

如何解决《如何在内存/CPU时间有限的Windows下运行程序?》经验,为你挑选了1个好方法。

它从这个问题开始,接着是这个问题,现在又引发了现在的问题.:)

任务如下:制作一个Windows程序,在有限的环境中运行另一个程序.另一个程序不可信任,因此它必须为hackish代码做好准备.进一步来说:

将可用内存限制为某个X MB(作为参数给出);

将可用执行时间限制为约X毫秒(作为参数给出).请注意,这是内核时间+用户时间,但不是空闲时间.另一方面,空闲时间也必须受到限制,因此程序不能Sleep()无限制.

在程序终止时,尽可能精确地报告实际花费的CPU时间.毫秒是好的,几厘秒可以接受,少于那不会很好.CPU周期是理想的.

如果程序崩溃,请报告有关崩溃的一些信息(越多越好,但不要过度使用堆栈跟踪等).

最好捕获程序的所有输出并报告;

该程序应该只使用当前目录,加上SYSTEM32的一些强制.DLL(如kernel.dll,user32.dll等).尽可能限制访问其他任何内容.不应该访问诸如注册表和网络之类的东西(除非强制性的.DLL需要它).访问越少越好.

这将是计算奥林匹克支持软件所必需的.该程序将在中央服务器上运行参与者提交的内容,因此您可以期待任何相关内容.崩溃将是常规的,并且也可以预期一些黑客攻击.

那么 - 你将如何制作这样的节目?你会用什么?在之前的主题(见上文)中,很明显附加作为调试器是一个坏主意,尽管我可能只是太笨拙了.



1> Maurice Flan..:

你几乎和IIS一样构建了相同的流程模型 - 很有趣!我会使用IIS使用的相同工具,它相对强大,可以防止黑客入侵,并且可以将系统划分为多个并发作业.

您可以使用Win32作业为内存,CPU,线程设置配额,并且可以为要运行的不同进程设置安全上下文,从而限制对文件系统的访问.

为了监控,我会看一下WMI.

对于挂起或崩溃时的堆栈跟踪,我再次使用了Microsoft的ADPlus.

要捕获控制台输出,请查看使用重定向输入输出创建子进程.

关于安全限制,请创建低权限用户帐户并以该用户身份运行作业/进程.

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有