现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

内核对象(kernel objects)及其句柄(handles)

2012-08-11 22:36 工业·编程 ⁄ 共 917字 ⁄ 字号 暂无评论

    在系统和我们写的应用程序中,内核对象用于管理进程、线程和文件等诸多种类的大量资源。

    内核对象—— 每个内核对象只是内核分配的一个内存块,并且只能由该内核访问。该内存块是一种数据结构,它的成员负责维护该对象的各种信息。由于内核对象的数据结构只能被内核访问,因此应用程序无法在内存中找到这些数据结构并直接改变它们的内容。OS规定了这个限制条件,目的是为了确保内核对象结构保持状态的一致。这个限制也使OS能够在不破坏任何应用程序的情况下在这些结构中添加、删除和修改数据成员。

     软件开发人员需要通过Wi n d o w s提供的一组函数,用定义得很好的方法来对这些结构进行操作。这些内核对象始终都可以通过这些函数进行访问。系统要创建操作各种类型的内核对象。(比如存取符号对象、事件对象、文件对象、文件映射对象、I / O完成端口对象、作业对象、信箱对象、互斥对象、管道对象、进程对象、信标对象、线程对象和等待计时器对象等。)

    句柄——当调用一个用于创建内核对象的函数时,该函数就返回一个用于标识该对象的句柄。该句柄可以被视为一个不透明值,你的进程中的任何线程都可以使用这个值。在 32 位 Windows进程中,句柄是一个 32 位值;在 64 位 Windows 进程中,则是一个 64 位值。可将这个句柄传给各种 Windows 函数,告诉系统你想操纵哪一个内核对象。

    内核对象由内核所拥有,而不是由进程所拥有。必须记住的是,内核对象的存在时间可以比创建该对象的进程长。

内核对象使用的计数
    使用计数——是所有内核对象类型常用的数据成员之一。当一个对象刚刚创建时,它的使用计数被置为 1。然后,当另一个进程访问一个现有的内核对象时,使用计数就递增 1。当进程终止运行时,使用计数就递减1。如果内核对象的使用计数降为 0,内核就撤消该对象。这样可以确保在没有进程引用该对象时系统中不保留任何内核对象。
安全描述符
    安全描述符——用于描述谁创建了该对象,谁能够访问或使用该对象,谁无权访问该对象。安全描述符通常在编写服务器应用程序时使用,在 Microsoft Windows Vista中,对于具有专用(private)命名空间的客户端应用程序,这个特性变得更加明显

给我留言

留言无头像?