linu用户态和内核态的转换_第1页
linu用户态和内核态的转换_第2页
linu用户态和内核态的转换_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、linux 用户态和内核态的转换原文链接:http:/question/363231653.html当一个任务(进程)执行系统调用而执行内核代码时,称进程处于内核内核态,此时处理器 处于特权级最高的(0 级)内核代码中执行,当进程处于内核态时,执行的内核代码会使用当前 进程的内核栈,每个进程都有自己的内核栈。当进程执行用户代码时,称其处于用户态,此时处理 器在特权级最低的(3 级)用户代码中运行。当正在执行用户程序而突然被中断程序中断时,此时用户程序也可以象征性地称为处于进程 的内核态,因为中断处理程序将使用当前进程的内核栈。这与处于内核态的进程的状态有些类似。 内核态与用户态是操作系统的两种

2、运行级别,跟intel cpu没有必然的联系,in tel cpu提供 Ring0-Ring3三种级别的运行模式,RingO级别最高,Ring3最低。Linux使用了 Ring3级别运行用户态,RingO作为内核态,没有使用Ringl和Ring2o Ring3 状态不能访问Ring0的地址空间,包括代码和数据。Linux进程的4GB地址空间,3G-4G部分 大家是共享的,是内核态的地址空间, 这里存放在整个内核的代码和所有的内核模块,以及内核 所维护的数据。用户运行一个程序,该程序所创建的进程开始是运行在用户态的,如果要执行文 件操作,网络数据发送等操作,必须通过write,send等系统调用

3、,这些系统调用会调用内核中 的代码来完成操作,这时,必须切换到Ring0,然后进入3GB-4GB中的内核地址空间去执行这 些代码完成操作,完成后,切换回Ring3,回到用户态。这样,用户态的程序就不能随意操作内 核地址空间,具有一定的安全保护作用。保护模式,通过内存页表操作等机制,保证进程间的地址空间不会互相冲突,一个进程的操 作不会修改另一个进程的地址空间中的数据。在内核态下,CPU可执行任何指令,在用户态下 CPU只能执行非特权指令。当CPU处于内核态,可以随意进入用户态;而当CPU处于用户态, 只能通过中断的方式进入内核态。一般程序一开始都是运行于用户态,当程序需要使用系统资源 时,就必

4、须通过调用软中断进入内核态.使用 nm 查看用户态程序的符号表内容使用System.map(内核符号表)查看内核符号表内容测试程序中打印用户态函数地址,并调用系统调用(在内核中打印系统调用函数地址),用 用户态符号表和内核态符号表示例说明内核态和用户态地址空间的差异说明内核态地址映射ioremapO ;用户态地址映射mmapO原文链接:http:/view/f78b7e40bele650e52ea998f.html1 )用户态切 换 到内核态的 3 种 方式系统调用 这是用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作,比如前例中forkO

5、实际上就是执行了一个创建新进程的系统调用。 而系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现,例如Linux的 int 80h 中断。系统调用实质上是一个中断,而汇编指令int就可以实现用户态向内核态切换,iret实现内 核态向用户态切换异常当 CPU 在执行运行在用户态下的程序时, 发生了某些事先不可知的异常, 这时会触发由当 前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,比如缺页异常。外围设备的中断当外围设备完成用户请求的操作后,会向 CPU 发出相应的中断信号, 这时 CPU 会暂停执行 下一条即将要执行的指令转而去执行与中断信号对应的处理程序,如果

6、先前执行的指令是用户态 下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换。比如硬盘读写操作完 成,系统会切换到硬盘读写的中断处理程序中执行后续操作等。这 3 种方式是系统在运行时由用户态转到内核态的最主要方式,其中系统调用可以认为是用 户进程主动发起的,异常和外围设备中断则是被动的。2)具体的切换操作从触发方式上看,可以认为存在前述 3 种不同的类型,但是从最终实际完成由用户态到内核 态的切换操作上来说, 涉及的关键步骤是完全一致的,没有任何区别,都相当于执行了一个中断 响应的过程,因为系统调用实际上最终是中断机制实现的,而异常和中断的处理机制基本上也是 一致的, 关于它们的具体区别这里不再赘述。 关于中断处理机制的细节和步骤这里也不做过多分析,涉及到由用户态切换到内核态的步骤主要包括:从当前进程的描述符中提取其内核栈的ssO及espO信息。使用ssO和espO指向的内核栈将当前进程的cs,eip,eflags,ss,esp信息保存起来,这个过 程也完成

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论