在处理教育简单的RISC处理器时,我想知道在实现我的软件中断功能时系统调用是如何工作的。例如,假设我们的程序调用sys_end来结束当前进程。现在我知道这将转到向量表,然后转到代码以结束当前进程。
我的问题是结束进程以管理员模式或用户模式运行的代码?我似乎没有看到的地方指明这一点。我假设它在正常用户模式下可能会造成一个非常严重的问题,因为用户模式进程可以说做一些像邪恶的事情:
for(i = 0; i ++; i< 10000){ int sys_fork //创建子进程 }
这可能非常糟糕我认为操作系统会对流程重复多少次有一些说法,更不用说通过更改系统调用本身的代码,流程可以做的其他有害事情。
答案 0 :(得分:0)
系统调用在系统调用期间以管理员模式运行。管理员模式是访问硬件(屏幕,键盘)以及保持用户进程彼此隔离所必需的。
对用户进程可能使用或请求的cpu数量,进程数等有(或可以配置)限制,这可以提供一些保护,防止你描述的那种失控程序。
但默认的linux配置允许在紧密循环中创建10k进程;我自己完成了(无论是有意还是无意)