c – 从用户应用程序访问ring 0模式(为什么Borland允许这样做)
随着学期的最后期限临近,我决定开始在我大学的操作系统课程中开展一个项目.
项目分配的问题在于它要求学生开发一个将作为简单内核(基本过程和线程管理)执行的用户应用程序(exe). 我想到的第一件事是:我该如何在用户应用程序中执行特权代码? 在咨询了其他学生(按时完成项目)之后,我了解到他们能够使用Borland 3.1编译器执行特权代码而不会出现问题.然而,他们都没有发现这种奇怪,也不知道为什么会这样.为什么(这里有更好的问题,如何)Borland会这样做吗?这是否违反操作系统安全的基本原则? 注意:我添加了C标记,因为该项目应该被编写为C应用程序,大多数特权代码都作为内联汇编执行. 更新我的问题最初的措辞有点差.当然,我能够使用任何编译器使用特权指令编译代码 – 运行代码是问题. 解决方法
两件事情:
>在8086实模式的时代,没有特权级别. Borland 3.1是一个16位编译器.如果您正在运行它在现代版本的Windows上生成的代码,它将使用NTVDM在Virtual 8086模式下运行,该模块也没有权限级别. int main() { __asm { mov eax,cr0 or eax,1 mov cr0,eax } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ruby-on-rails – 轨道载波安装条件
- 正则表达式(Java,C#,C++)
- ruby – YAML中的多级嵌套
- c – 什么是“operator int&(){return i; “在代码中做
- 利用CCArmature完成动画加载并显示
- postgresql – Pyodbc – “找不到数据源名称,没有指定默认
- xml格式异常-CDATA嵌套
- ruby-on-rails – 使用rails 2.3.18在[](Gem :: LoadError)
- ruby-on-rails – rails中的`stringify_keys’是什么,以及在
- 依赖注入 – 我可以在Castle Windsor中为代理类型定义自定义