Windows学习(010)--内核对象(一)

内核对象概述

  • Windows操作系统分为Ring3和Ring0层
  • Ring3层是全开放的, 无监管的
  • Ring0层是有监管的
    • 是操作系统以及软件正在运行的地方
    • 在软件运行的时候, 我们正真的操作都是在Ring0发生的
    • 可通过WinAPI向Ring0层发送请求
    • 当Ring0层检测到这是一个合理的请求时,内核对象会被Ring0层进行改变
  • 通过句柄可以操作Ring0层指定的内核对象
    • 但是句柄不代表Ring0层的某个具体的内核对象
    • 句柄的值是不透明的, 无人知道它代表了什么意思
    • 句柄是属于当前进程的

使用计数

  • 每一个内核对象中, 都会有一个使用计数
  • 内核对象是属于操作系统的
  • 内核对象属于全局的,不同进程可以使用同一个内核对象
  • 但是进程不能决定任何一个内核对象的生死
  • 内核对象的生死却是由操作系统来决定

    • 当内核对象没有意义的时候, 操作系统会清理内核对象以节约资源
    • 但是Ring0和Ring3又无法交互
    • 所以使用计数出现了
    • 使用计数会在使用的时候+1, 在不使用的时候-1
    • 当使用计数为0时, 操作系统会对内核对象进行回收
    • 回收不是实时的, 是当系统空闲的时候, 优先来清理的
  • 使用计数使得内核对象可以被多个进程所拥有, 并且能正确的释放

句柄表以及句柄的本质

  • 先前也说过,我们可以通过句柄来操作内核对象,但句柄不代表内核对象本身,当一个句柄走出了一个进程,就毫无意义.
  • 句柄是属于进程的,它存在于进程的句柄表中.通常创建一个内核对象的情景是,先在ring0中创建了一个内核对象,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值