天天看点

网编(19):Windows平台下线程

内核对象的定义

操作系统创建的资源( Resource ) 有很多种,如进程、线程、文件及即将介绍的信号最、互斥量等。其中大部分都是通过程序员的请求创建的,而且请求方式(请求中使用的函数)各不相同。虽然存在一些差异,但它们之间也有如下共同点

”都是由Windows操作系统创建并管理的资源。”

不同资源类型在“管理'方式上也有差异。例如, 文件管理中应注册并更新文件相关的数据I/0位置、文件的打开模式( read or write ) 等。如果是线程, 则应注册并维护线程ID 、线程所属进程等信息。操作系统为了以记录相关信息的方式管理各种资源,在其内部生成数据块( 亦可视为结构体变佩)。当然, 每种资源需要维护的信息不同, 所以每种资源拥有的数据块格式也有差异。这类数据块称为“ 内核对象”。

假设在Windows下创建了mydata.txt文件, 此时Windows操作系统将生成l 个数据块以便管理,该数据块就是内核对象。同理, Windows在创建进程、线程、线程同步信号量时也会生成相应的内核对象,用于管理操作系统资源。相信各位巳经理解了内核对象的概念。

内核对象归操作系统所有

线程、文件等资源的创建请求均在进程内部完成,因此,很容易产生”此时创建的内核对象所有者就是进程”的错觉。其实,内核对象所有者是内核(操作系统)。”所有者是内核”具有如下含义:

“内核对象的创建、管理、销毁时机的决定等工作均由操作系统完成!”

内核对象就是为了管理线程、文件等资源而由操作系统创建的数据块,其创建者和所有者均为操作系统。

继续阅读