zoukankan      html  css  js  c++  java
  • 内核对象

    内核对象的理解

    定义:
    内核对象是由操作系统(以下称OS)创建并管理的系统资源(内存块),允许应用程序
    访问

    内核对象的创建-释放过程描述:
    1、每一个进程在初始化时,OS将为其分配一个句柄表(类似与消息队列),
       用于存放内核对象,而不存放用户对象,句柄表的结构(内核对象句柄、
       内核对象地址、访问屏蔽标志)
       内核对象与进程相关联而不是与应用程序相关联原因是:
       (1)不同的进程对内核对象的访问权限是不同的,有必要区分对待
       (2)如果句柄是全局的,则一个进程可以控制另外一个进程的句柄,
          破坏另外一个进程的句柄。

    2、应用程序进程调用Create*,促使内核调用CreateSomething创建内核对象,
       内核调用该函数的时候内核就为该对象分配一个内存块(内核不是简单的去
       创建内核对象,而是首先检查当前内核是不是有该对象,有则该内核对象
       计数器加一,否则创建该内核对象,同时置计数器为1),并进行初始化,
       然后内核再扫描该进程的句柄表,初始化一条记录并放在该进程的句柄表中

    3、进程使用内核对象必须从进程句柄表中找出内核对象句柄,然后才能使用

    4、在不使用内核对象时,调用CloseHandle向操作系统声明结束对该对象的访问,
       并不是销毁此内核对象,为什么要声明呢?
       (1)调用CloseHandle时,OS并不是销毁此内核对象
       (2)OS做的是从进程的句柄表中删除该内核对象的记录;另外再考察该内核对
          象的使用计数以决定是否需要释放该对象
    5、同时OS自动将内核对象计数器减一,当内核对象计数器为0时,内核自动销毁
       此对象

    参考资料:
    http://www.cublog.cn/u/12723/showart.php?id=65686

  • 相关阅读:
    2.6、实战案例(三)
    2.5、实战案例(二)
    2.4、实战案例(一)
    2.3、视频采集(二):分辨率、摄像头切换、帧率、滤镜
    2.2、视频采集(一):初步采集
    2.1、列举媒体设备
    1.0、本章导读
    linux 下搭建vsftpd
    解决.net core 3.1跨域问题
    SQLServer for linux安装
  • 原文地址:https://www.cnblogs.com/kuailewangzi1212/p/623772.html
Copyright © 2011-2022 走看看