2011年4月10日

摘要: 内核态与用户态intelx86 架构的CPU分Ring0-Ring3三种级别的运行模式,Ring0级别最高,Ring3最低。 针对不同的 级别,有很多的限制,比如说传统的 in ,out 指令,就是端口的输入输出指令,在 Ring0 级下是可以用的,但在 Ring3 级下就不能用,你用就产生陷井,告诉你出错了,当然限制还有很多了,不只是这一点。 操作系统下是利用这个特点,当操作系统自己的代码运行时, CPU 就切成 Ring0 级,当用户的程序运行是就只让它在 Ring3 级运行,这样如果用户的程序想做什么破坏系统的事情的话,也没办法做到。 当然,低级别的程序是没法把自己升到高级别的,也就是说 阅读全文
posted @ 2011-04-10 22:18 yming0221 阅读(218) 评论(0) 推荐(0)
摘要: <!-- @page { margin: 0.79in } P { margin-bottom: 0.08in } --> 汇编语言中也需要通过某些途径来使用操作系统提供的服务,也就是系统调用;系统调用就是通过与操作系统内核通信来完成;系统调用会把用户态程序的调用转换成对系统内核服务的调用;Linux平台下有两种方式来使用系统调用:一种是利用封装后的C库(libc),另一种是通过汇编直接调用;其中,通过汇编语言来直接调用系统调用,是最高效地使用Linux内核服务的方法,因为最终生成的程序不需要与任何库进行连接,而是直接与内核通信;与DOS一样,Linux下的系统调用也是通过中断(i 阅读全文
posted @ 2011-04-10 21:45 yming0221 阅读(316) 评论(0) 推荐(0)

导航