内核喜欢抽象出句柄给用户空间

句柄, Handle, 表达处理、控制之意。内核不会直接暴露指针给用户空间,这样会增大内核风险。相反,内核抽象出Handle给用户态,不管是文件、进程、线程等对象,通过Handle可以隐藏内核细节,统一控制对象。

不可避免,内核态对于Handle必须转换成指针才能处理。ExMapHandleToPointer负责从Handle转换成Pointer. 另外还有ExMapHandleToPointerEx函数同样的功能,多一个PreviousMode参数。

Windows Handle Table采用三级表,Handle查Pointer复杂度为O(1).

Object成员表示Handle对应Object指针。

.NET和内核

.NET没有任何内核技术,完全是用户态中间件技术。

当前是内核模式还是用户模式?

Kernel提供KeGetPreviousMode宏以确定当前代码执行所属模式。

__readgsqword是双下划线开头, 属于编译器Intrinsic.

系统调用例程需要检查是否为用户空间,并做参数验证。

特权级指令

IO指令、系统级寄存器操作(用户内核模式的GDT/IDT/MSR指令等)必须在内核空间或特权级才能运行。

用户模式操作特权级指令会怎样?

用户程序操作特权级指令将导致异常发生。

用户模式可访问的地址空间

只能访问本进程用户空间,正常情况下无法访问任何其他进程的地址空间。

内核模式可访问的地址空间

除了进程本身的用户空间之外,还可以访问整个内核空间,如果有需要,甚至可以访问其他进程的用户空间。

不同进程的内核空间

所有进程的内核模式都是一样的,即内核空间只有一个,不同进程用户空间是多个。系统空间是所有进程共享的。

用户模式和内核模式的切换

用户模式 -> 内核模式

  • 异常
  • 中断(硬件中断或软件中断)
    • 例如按下键盘或鼠标移动中断,或调用了系统调用陷入内核模式(int 2Eh或sysenter)

内核模式 -> 用户模式

  • 比较简单, 例如sysexit和iret指令

Windows内核--内核空间和用户空间(3.6)相关推荐

  1. linux 内核空间与用户空间 简介

    本文以 32 位系统为例介绍内核空间(kernel space)和用户空间(user space). 内核空间和用户空间 对 32 位操作系统而言,它的寻址空间(虚拟地址空间,或叫线性地址空间)为 4 ...

  2. 关于linux内核空间与用户空间的理解

    简介 现代计算机都有两种以上的运行模式(普通模式.特权模式),linux系统只有两层:高优先级模式(特权模式),低优先级模式(普通模式).linux系统在高优先级模式中运行系统内核代码以及与硬件密切相 ...

  3. Linux进程地址空间与进程内存布局详解,内核空间与用户空间

    Linux进程地址空间与进程内存布局详解 程序段(Text):程序代码在内存中的映射,存放函数体的二进制代码. 初始化过的数据(Data):在程序运行初已经对变量进行初始化的数据. 未初始化过的数据( ...

  4. Linux内核空间和用户空间

    在Linux系统中存在进程的概念: 进程的分类: 用户进程:运行在用户空间的进程被称为用户进程 内核进程:运行在内核空间的进程被称为内核进程 进程的空间: 系统会为每一个进程分0-4G的虚拟寻址空间, ...

  5. AndroidM 内核空间到用户空间接口类型

    Android系统中, 驱动程序因商业需求分为运行在用户空间的hardware层以及运行在内核空间的驱动程序, 大多情况下内核驱动都需要提供用户空间访问的接口. Linux内核空间到用户空间的接口有主 ...

  6. linux内核空间和用户空间的是怎样区别的,如何交互,如何从用户空间进入内核空间

    linux驱动程序一般工作在内核空间,但也可以工作在用户空间.下面我们将详细解析,什么是内核空间,什么是用户空间,以及如何判断他们. Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此,L ...

  7. linux内核那些事之用户空间管理

    内核主要数据结构 linux内核将用户空间抽象成struct vm_area_struct进行管理,每申请以个用户空间在内核中都会抽象成对应的vm_are_struct进行管理,同时为了区别不同进程的 ...

  8. linux 内核空间与用户空间

    主要是为了保护linux系统不被用户的程序搞坏 参考: http://www.ruanyifeng.com/blog/2016/12/user_space_vs_kernel_space.html

  9. 1-18Linux内核空间和用户空间

    转载请说明出处:http://www.cnblogs.com/zaifeng0108/p/7364411.html OS的接口有两类: GUI:Graphic User Interface GNome ...

最新文章

  1. MySQL-mysql 8.0.11安装教程
  2. 未老先呆,这锅熬夜真的要背:生物钟影响阿尔茨海默症的机制被发现
  3. oracle 唯一约束作用,想问下在表上建唯一索引和使用索引+唯一约束,从功能和性能来说有什么差别?...
  4. SQLAlchemy 使用经验
  5. OpenCV学习笔记(一)——OpenCV3.1.0+VS2015开发环境配置
  6. 机器人炒饭小块头一一_一罐好饭,智能机器人炒饭出好味道,小块头坚守本心匠心制作!...
  7. centos6.5-64安装zabbix2.4
  8. Android5.1--电源管理之省电模式分析
  9. html 屏幕录像,Screencastify:屏幕录像
  10. xul界面编程语法_探索XUL中的多线程编程
  11. 使用github构建自己网站
  12. html桌面天干地支,天干地支-janlen-ChinaUnix博客
  13. 关于修改ico图片位深度的方法
  14. SQL server查询出只选修两门课程的学生学号和姓名
  15. 教你怎样用最少的钱拍出最美的婚纱
  16. 论文笔记:Do We Really Need Deep Learning Models for Time Series Forecasting?
  17. flickr app android,Flickr latest Android app(Version: 2.1.5) ContentProvider security issue
  18. selenium处理获取input标签中的value值
  19. 中科蓝讯AB32VG1串口应用之物联网平台数据传送
  20. 已知鸡兔共35只c语言,鸡兔同笼 试卷

热门文章

  1. Mapxtreme之活活气死
  2. 新编C语言程序设计pdf
  3. C语言,RPG小游戏
  4. 渲染引擎入门到精通一_导入模型的实现和解决fbxsdk的使用坑
  5. Open-Falcon 配置参数概述
  6. 日期时间格式 - 助手类[方法] - 收集
  7. S7-1200使用集成库FB285对V90伺服驱动器进行速度控制的基本步骤
  8. gwr模型用什么做_如何对好文章做信息处理,用好文章摘录模型
  9. 六西格玛工具软件Minitab Workspace
  10. ad采样信噪比与噪声_AD噪声分析