核心对象分6种:
   event, mutex, semaphore, file, file-mapping, process, thread,从线程方面看,操作系统运行时会产生很多进程(如windows的任务管理器中),
所谓"进程的核心对象"与所有正在运行的进程是1对1关系吗?即有几个进程就有几个核心对象与之对应。

解决方案 »

  1.   

    kingcom_xu(杀不了人的刀,郁闷!) :
     那你倒是说说这个问题该怎样问才能没问题?
      

  2.   

    参看<Windows核心编程>:
    深入浅出才刚刚开始看,过一段时间再看〈核心〉吧。。
      

  3.   

    作为一个Wi n d o w s软件开发人员,你经常需要创建、打开和操作各种内核对象。系统要创
    建和操作若干类型的内核对象,比如存取符号对象、事件对象、文件对象、文件映射对象、
    I / O完成端口对象、作业对象、信箱对象、互斥对象、管道对象、进程对象、信标对象、线程
    对象和等待计时器对象等。这些对象都是通过调用函数来创建的。例如, C r e a t e F i l e M a p p i n g函
    数可使系统能够创建一个文件映射对象。每个内核对象只是内核分配的一个内存块,并且只能
    由该内核访问。该内存块是一种数据结构,它的成员负责维护该对象的各种信息。有些数据成
    员(如安全性描述符、使用计数等)在所有对象类型中是相同的,但大多数数据成员属于特定
    的对象类型。例如,进程对象有一个进程I D、一个基本优先级和一个退出代码,而文件对象则
    拥有一个字节位移、一个共享模式和一个打开模式。
    由于内核对象的数据结构只能被内核访问,因此应用程序无法在内存中找到这些数据结构
    并直接改变它们的内容。M i c r o s o f t规定了这个限制条件,目的是为了确保内核对象结构保持状
    态的一致。这个限制也使M i c r o s o f t能够在不破坏任何应用程序的情况下在这些结构中添加、删
    除和修改数据成员。
    如果我们不能直接改变这些数据结构,那么我们的应用程序如何才能操作这些内核对象
    呢?解决办法是,Wi n d o w s提供了一组函数,以便用定义得很好的方法来对这些结构进行操作。
    这些内核对象始终都可以通过这些函数进行访问。当调用一个用于创建内核对象的函数时,该
    函数就返回一个用于标识该对象的句柄。该句柄可以被视为一个不透明值,你的进程中的任何
    线程都可以使用这个值。将这个句柄传递给Wi n d o w s的各个函数,这样,系统就能知道你想操
    作哪个内核对象。本章后面还要详细讲述这些句柄的特性。
    为了使操作系统变得更加健壮,这些句柄值是与进程密切相关的。因此,如果将该句柄值
    传递给另一个进程中的一个线程(使用某种形式的进程间的通信)那么这另一个进程使用你的
    进程的句柄值所作的调用就会失败
      

  4.   

    问题的关键在这里:
    每种内核对象(如process对象)是不是只能有一个?
      

  5.   

    >>每种内核对象(如process对象)是不是只能有一个?
    这种话也是不通呀...
    是不是只能有一个?在哪有一个?系统还是进程?
      

  6.   

    to:  showmetheway(雪儿甜心)
    >>所谓"进程的核心对象"与所有正在运行的进程是1对1关系吗?
    >>即有几个进程就有几个核心对象与之对应。
    不一定吧﹗ 看你的需要而定。
    >>每种内核对象(如process对象)是不是只能有一个?
    ﹖﹖