用户态和内核态的转换
来源:互联网 发布:macrar解压软件下载 编辑:程序博客网 时间:2024/06/05 09:11
用户态切换到内核态的3种方式
a. 系统调用
这是用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作,比如前例中fork()实际上就是执行了一个创建新进程的系统调用。而系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现,例如Linux的int 80h中断。
b. 异常
当CPU在执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,比如缺页异常。
c. 外围设备的中断
当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要执行的指令转而去执行与中断信号对应的处理程序,如果先前执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换。比如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等。
这3种方式是系统在运行时由用户态转到内核态的最主要方式,其中系统调用可以认为是用户进程主动发起的,异常和外围设备中断则是被动的。
0 0
- 用户态和内核态的转换
- Linux用户态和内核态间的转换
- 用户态和内核态的转换 (转)
- 内核态和用户态的区别
- 内核态和用户态的区别
- 用户态和内核态的切换
- 操作系统的内核态和用户态
- 内核态和用户态的区别
- 内核态和用户态的区别
- 用户态和内核态的区别
- 内核态和用户态的区别
- linux的内核态和用户态
- 内核态和用户态的区别
- 内核态和用户态的区别
- 用户态和内核态的区别
- linux的用户态和内核态
- 内核态和用户态的区别
- 内核态和用户态的区别
- Mvp模式的进一步探索
- 118. Pascal's Triangle
- HDU 5882 Balanced Game【博弈】
- caffe系列(13)源码简单解析——Layer层
- Edit限制2位小数
- 用户态和内核态的转换
- NOIP2011 day1 T2 选择客栈
- linux下安装tomcat以及开放端口8080
- stat 时间输出格式
- ios 数据存储在钥匙串中
- sql server临时表的生命周期
- 替换指定指针后的字符串
- 用js写的简单轮播特效
- Android 7.0 Nougat 不得不知的 11 项新功能