【抖音文案】cpu句柄(cpu句柄是什么意思)


什么是文件句柄、“句柄”又该如何理解?什么是文件句柄、窗口句柄以

流行,不知道下面说的是不是流行。

首先,我认为句柄不是指针(即使是指针,你也应该知道指针包含了太多的信息),说句柄包含了指针(或者某种模式下的指针)的某些含义似乎更好;把一个句柄作为一个人的名字,和“你可以通过一个名字(句柄)来引用和访问一个句子”,感觉这个比喻很接近,但问题是,同名的人可能有很多,但是句柄因为唯一而有意义,所以这个比喻有问题。如果换一种说法,就是说你的进程和外界是有联系的,是不是把它当做一个联系的名字比较好?至于文件手柄,我记得有个解释(大意)是类似于门把手。用它可以找到物体“门”,控制物体“门”,但是用它和门把手比似乎不太合适。感觉就是handle这个词的直译。我们知道文件句柄实际上是一个16位长的二进制代码(Windows95之后的32位无符号代码)代表一个打开文件的通道号。在这个句柄的帮助下,你的应用可以使用这个对应的句柄随意访问文件。说白了,文件句柄其实就是一串代表特殊含义的数字。当然,实际上系统是通过句柄与一些资源链接的。当系统管理并动态分配一些资源的代码给你的应用时,你可以使用句柄来访问相应的资源,特别是在windows系统中,很多东西都使用句柄,比如Windows和socket。

MFC里什么是句柄?

书里是这么说的(南京大学出版社)。 handle是WINDOWS用来标识应用程序创建或使用的对象的唯一整数。WINDOWS使用各种句柄来标识诸如应用程序实例、窗口、控件、位图、GDI对象等等。WINDOWS句柄有点像C语言中的文件句柄。

windows任务管理器里的句柄数是什么意思?

WINDOWS句柄有点像C语言中的文件句柄。

从上面的定义我们可以看出,句柄是一个标识符,用来标识一个对象或项目。就像我们的名字一样,每个人都会有一个。不同的人有不同的名字,但可能会有一个人和你同名。从数据类型上看,它只是一个16位无符号整数。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,然后其他WINDOWS函数可以使用该句柄来引用相应的对象。

如果你想更透彻地了解句柄,我可以告诉你,句柄是指针对指针。众所周知,指针是一个内存地址。应用程序启动后,组成程序的对象被保存在内存中。简单理解的话,似乎只要知道这个内存的第一个地址,就可以随时用这个地址访问对象。但是,如果你真的这么想,那你就大错特错了。我们知道,Windows是一个基于虚拟内存的操作系统。在这种系统环境中,Windows内存管理器经常在内存中来回移动对象,以满足各种应用程序的内存需求。移动一个对象意味着它的地址已经改变。如果地址老是这样变来变去,那要去哪里找对象呢?

为了解决这个问题,Windows操作系统为每个应用程序释放了一些内存地址来注册内存中每个应用对象的地址变化,而这个地址(存储单元的位置)本身是不变的。在内存中移动对象的位置后,Windows内存管理器通知对象的新地址的句柄地址来保存它。这样我们只需要记住这个句柄地址就可以间接知道对象在内存的什么位置。这个地址在对象加载时由系统分配,在系统卸载时释放给系统。

句柄地址(稳定)记录内存中对象的地址内存中对象的地址(不稳定)实际对象。

本质:内存块、文件、任务或动态加载的模块不是由WINDOWS程序中的物理地址来标识的。相反,WINDOWS API为这些项目分配特定的句柄,将句柄返回给应用程序,然后通过句柄进行操作。

但必须注意的是,每次重启程序,系统都不能保证分配给这个程序的句柄还是原来的句柄,大部分情况确实是不一样的。如果我们把去电影院看电影看作是一个应用的启动,那么系统分配给应用的句柄总是不一样的,这和电影院卖给我们的票总是不同的座位是一个道理。windows任务管理器中“性能”列下术语含义的简要说明。任务管理器中的“性能”图表主要反映系统cpu和内存的使用情况。这些参数有助于了解系统的运行状态,并可能进一步提高系统性能。因为每一个术语都比较专业,看文字讲得通就会被误解。这个我只知道一点,下面介绍一下。

Cpu使用率:很好理解。左栏显示实时cpu利用率,右图记录过去一段时间的cpu利用率。红线表示系统内核利用率。

Pf使用率:pf是页面文件page file的简称。但是这个数字经常被误解,以为是系统当时使用的页面文件大小。正确的意思是在用内存的总和,包括物理内存和虚拟内存。那么,如何知道实际的页面文件大小呢?一般来说,第三方软件,如页面文件监视器,也可以通过windows控制台查看。我的页面文件预设为300mb。从下图可以看出,总内存使用量为207mb,通过控制台页面文件利用率为24%,实际大小为72mb。

物理内存:

总数:通俗易懂,即机器中插入的可见和有形内存的总量。我的电脑内存256mb,换算成字节乘以1024就是262144,大致等于图中的261616。

可用数量:物理内存中可供程序使用的空闲空间量。但是,实际的备用容量比这个值稍大,因为在切换到虚拟内存之前,物理内存不会完全用完。也就是说,这个备用量指的是在使用虚拟内存(页面文件)之前剩余的物理内存。

系统缓存:为系统缓存分配的物理内存量。主要是存储程序和数据。只要系统或程序需要,就会释放一部分内存,也就是说这个值是可变的。

批准用量:呵呵,我简直不知道说什么好了!

Total:实际上是操作系统和运行程序所占用的内存总量,包括物理内存和虚拟内存(页面文件)。等于上面的pf利用率,212468除以1024大概是207m。

极限:指系统能够提供的最大内存量,包括物理内存(ram)和虚拟内存(页面文件)。256m加上我预置的300mpagefile,乘以1024等于569344,大致相当。

峰值:指系统在一段时间内达到的最高内存使用率。如果这个值接近上面的“极限”,说明要么你增加物理内存,要么你增加页面文件,否则系统会给你颜色看!

核心内存:

Total:操作系统内核程序使用的物理内存。42972除以261616等于16.4%,还不错,比较低,当然好!

页数:一旦系统需要这部分物理内存,就会映射到硬盘上。

未分页:该部分不会映射到硬盘。

手柄数量:这东西很专业。会编程的人都知道,我不懂,只知道指针叫指针。

线程数:指程序能独立运行的部分。

进程数:简单理解为运行的程序数。

两个问题:

问题1:要不要设置页面文件?如果有,有多大?

是否设置了pagefile,只是因为人为因素和机遇。如果物理内存非常大,而用于长期观察的页面文件的百分比非常低,比如只有百分之几,那么就禁用它。如果需要,有多大?微软的建议值是安装的物理内存的1.5倍。这通常是指较低的物理内存(低于384mb)。比较合理的方法是看实际的页面文件利用率,一般是50-75%。超过这个范围后,自行调整pagefile的大小。

问题pagefile需要碎片整理吗?

呵呵,我也需要。但是一般的碎片整理方法是无法整理pagefile的,因为windows不允许。完成装订部运行时可能使用了页面文件。那怎么组织呢?很简单。首先禁用当前页面文件,然后在其他区域设置新的页面文件。系统重启,整理出原来页面文件所在的区域,然后禁用新页面文件,再在刚刚整理出来的旧区域设置另一个页面文件。重启!

附录1:解释二

Cpu使用:cpu使用百分比

Cpu使用记录:处理器使用量随时间变化。

Pf Usage :系统使用的页面文件数量

页面文件使用记录:页面文件使用随时间的变化。

总数:正在运行的句柄、线程和进程的总数。

:的授权量分配给程序和操作系统的内存。由于虚拟内存的存在,“峰值”可以超过最大物理内存,“合计”值与“页面文件使用记录”中显示的值相同。

物理内存:总物理内存,ram,“可用数量”表示可用内存容量,“系统缓存”显示当前用于映射打开文件的页面的物理内存。

核心内存:操作系统内核和设备驱动使用的内存,“页面”是可以复制到页面文件中,从而释放物理内存的内存;“非分页”是物理内存中保留的内存,不会复制到分页文件中。

附录2:什么是页面文件?

页面文件是指操作系统用于虚拟内存的硬盘空间。要组织页面文件,首先将页面文件从原始驱动器移动到另一个驱动器,然后组织原始驱动器,最后将页面文件移回原始驱动器。此时,页面文件将存储在连续的磁盘空间中。

具体来说,pagefile.sys文件是系统页面文件(也称为虚拟内存文件)。它的大小取决于打开程序的数量和你最初设置的页面文件的最小值和最大值,这个值是不断变化的,有时候可能只有几十米,有时候达到600m以上。

自己上网搜一下,这方面的知识很多。

窗口句柄 进程ID 进程句柄 线程ID 线程句柄 分别都是做什么的有什么用

在Windows中,句柄是对系统内部数据结构的引用。比如你操作一个窗口,或者一个Delphi的窗体,系统会给你一个窗口的句柄,系统会通知你正在操作142号窗口。此时,您的应用程序可以要求系统操作142号窗口。——移动窗口,改变窗口大小,将窗口最小化为图标,等等。其实很多Windows API函数都是以句柄为第一参数的,比如GDI句柄、菜单句柄、实例句柄、位图句柄等等,并不局限于窗口函数。

换句话说,句柄是一个内部代码,通过它可以引用系统控制的特殊元素,比如窗口、位图、图标、内存块、光标、字体、菜单等等。

案例:获取窗口句柄

案例描述

这个例子实现了窗口句柄的获取。

实施程序

私有声明函数GetWindowLong Lib“user 32”别名“GetWindowLongA”(ByVal hwnd为Long,ByVal nIndex为Long)为Long

私有声明函数SetWindowLong Lib“user 32”别名“SetWindowLongA”(ByVal hwnd为Long,ByVal nIndex为Long,ByVal dwNewLong为Long)为Long

私有声明函数SetLayeredWindowAttributes Lib " user 32 "(ByVal hwnd为Long,ByVal crKey为Long,ByVal bAlpha为Byte,ByVal dwFlags为Long)为Long

私有常量WS_EX_LAYERED=H80000

私有常量GWL_EXSTYLE=(-20)

二等兵LWA阿尔法=H2

私有子窗体_Activate()

出错时继续下一步

对于i=0至150,步长为2.5

SetLayeredWindowAttributes me . hwnd,0,I,LWA _阿尔法

多项活动

接下来我

末端接头

私有子窗体_load()

变长rtn

rtn=GetWindowLong(Me.hwnd,GWL_EXSTYLE)

rtn=rtn或WS_EX_LAYERED

设置窗口长Me.hwnd,GWL_EXSTYLE,rtn

SetLayeredWindowAttributes me . hwnd,0,0,LWA _阿尔法

末端接头

从概念上讲,句柄是指对象的标识,指针是对象的第一个地址。从实际处理的角度来看,句柄可以定义为指针或者同类对象数组的索引。这两种处理方法各有利弊。至于选择哪种方法,要看实际需要,可以说是编程中的一个技巧。句柄是指针或索引的想法是机械的,不准确的。

其实Windows中类似的处理很多,也很灵活。另一个类似的例子:

我们知道,Windows中有一个函数叫做CallWindowProc。顾名思义,它的功能是将消息传递给指定的窗口过程。你可能会想,既然我已经有了一个指向窗口过程的指针,为什么不能通过这个指针直接调用函数(这是C语言的内置函数)?事实上,在Win16中你可以这样做,因为GetWindowLong确实返回了一个指向函数的指针。但是在Win32下,GetWindowLong返回的不是函数的指针,而是包含函数指针的数据结构的指针(MSDN说它返回的是窗口函数地址或者它的句柄,事实就是如此)。这个数据结构是可变的,但是只要用CallWindowProc调用就不会出错。这里我们看到了使用句柄处理的好处。(补充说明:微软之所以在这里这么做,是为了解决16位/32位和ANSI/UNICODE转换的问题。)

1.手柄是什么?

在windows中,句柄是与对象一一对应的32位无符号整数值。对象只能映射到

的句柄,该句柄也可以映射到唯一的对象。

2.为什么我们需要一个把手?

更准确地说,windows需要一个句柄。Windows需要为程序员提供必要的编程接口。

在这些接口中,程序员可以访问、创建和销毁对象。然而,由于包装的原因,wi

Ndows不想返回一个指向程序员的指针。指针包含太多信息。首先,指针给了对象存储空间。

确切位置;其次,要操作指针,程序员必须知道指针所指对象的内部结构。

换句话说,windows必须将相应的数据结构暴露给程序员,而这些数据结构可能就是操作。

系统想对程序员隐藏什么。

如果COM技术对用户隐藏数据,它只公开接口,只允许接口定义的方法运行。

作为数据,句柄允许您以自己的方式直接操作数据,但windows不允许

你直接公开数据。直接操纵数据是程序员需要的,不暴露数据是windows需要的。

句柄封装方法实现了各种需求。

3.句柄如何映射到对象?

在封装的背后,必须有一个可以实现解码的地方,实现句柄和对象之间的转换。存在

在windows中,有两种映射方法:

A.全等映射。也就是说,句柄本身就是一个指针。这里的映射只是一种类型转换。

这种情况包括流程实例句柄或模块句柄,以及资源句柄等。

B.基于表格的映射。这是对象指针和句柄之间最常见的映射机制。操作系统创建

创建一个表并保存所有要考虑的对象。当您需要创建一个新对象时,您必须首先在表中找到一个空条目。

,然后向其中添加表示该对象的数据。当删除一个对象时,它的数据成员及其

入口被打开了。

4.句柄的定义和实现

我们以GDI对象为例进行讨论。一旦你创建了一个GDI对象,你将得到它的句柄。处理

该对象可能是HBRUSH、HPEN、HFONT或HDC之一,这取决于您创建的GDI对象类。

类型。但是最常见的GDI对象类型是HGDIOBJ。HGDIOBJ被定义为空指针。

HPEN的实际编译类型定义随着编译时间宏的严格变化而变化。如果STRCIT已经

定义,HPEN是这样的:

结构HPEN _ _ { int unused };

typedef结构HPEN _ _ * HPEN;

如果没有定义严格,HPEN定义如下:

typedef void * HANDLE

typedef处理HPEN;

对于一个注重细节的程序员来说,上面的代码是最接近句柄的,所以我们将重点放在分析上。

请稍等。这里有个小技巧。如果定义了严格的宏,HPEN指的是单个未使用的字段。

结构,否则HPEN是一个空指针。C/C编译器允许将任何类型的指针作为空值传递。

通过它,反之亦然。两种不同类型的非空指针互不兼容。在严格版本中,编辑

GDI对象句柄的不正确混合会给出警告,对于非GDI句柄,比如HWND和HMENU,会不正确。

True mixing还会给出一个警告,让程序在编译器中得到更严格的检查。

下面的分析可能你没那么感兴趣,但它更深入地揭示了这个把柄。交给GDI处理。

尽管windows头文件将其定义为指针,但是如果您仔细检查这些句柄的值,它只是

它不像指针,这就是为什么我说它只是一个32位无符号整数值。是的,手柄的意思是

在针的情况下,这句话仍然适用。我们随意生成一些句柄,比如你用GetStockOb。

对象()来获取一些句柄,你会发现它们的值总是在0x01900011到0xba040389的范围内。

前者指向用户区中未分配的无效区域,后者指向内核地址空间。此外,您可能会发现

两个句柄之间的值可能只有1,这也意味着GDI句柄不是指针。

与大多数人的想象不同,句柄并不是一个简单的指标值。对于GDI对象句柄,

GDI句柄由8位、1位堆对象(指示对象是否在堆中创建)、7位对象类型信息和

一个高四位为0的16位索引,如下图所示:

3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0

1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0

| 8位引用计数|堆|对象类型7 | 16位索引|

这里可以看到,对于GDI,它只用16位作为索引。这意味着一个进程只能

您可以创建少于64K的句柄。实际上,由于其他限制,整个Windows系统大概可以容纳64k左右的句柄。

16384(0x4000)个GDI对象。

============================

Id是英文identity的缩写,ID的意思是识别号。很多设备都有ID号吗?比如硬盘有ID号,所有商品都有ID。正规产品应该是独一无二的。

身份,即身份,是身份证中使用的词。

更有甚者,你在网上登录论坛,都有一个虚拟的ID,就像你的身份证一样,用来区分。你的昵称可以和别人的一样,但是ID不能一样。

顾名思义,进程ID。

知道了进程ID,我们就可以结束进程了。

进程对象是内核对象,每个内核对象实际上是内核分配的一块内存,只能由内核访问。这个内存块是一个数据结构,它的成员包含关于对象的信息。因为内核对象只能被内核访问,所以应用程序不可能在内存中定位这些数据结构并直接改变它们的内容。为了操纵这些内核对象,win32API提供了一组函数来很好地操纵这些结构。对内核对象的访问总是通过这些函数。当调用创建内核对象的函数时,该函数返回一个标记该对象的句柄。它是一个32位值,可由进程中的任何线程使用,并可传递给各种WIN32函数,以便系统知道它想要操作哪个内核对象。

创建流程时,系统会给它一个唯一的标识符,即流程ID。系统中运行的其他进程不会有相同的ID值,也可以使用这个值。例如,父进程可以通过创建子进程时获得的ID与子进程通信。

==========================================

所谓句柄,其实就是一个数据,是一个长(整数长度)的数据。

Handle是Wonderws用来标识应用程序创建或使用的对象的唯一整数。WINDOWS使用各种句柄来标识诸如应用程序实例、窗口、控件、位图、GDI对象等等。WINDOWS句柄有点像C语言中的文件句柄。

从上面的定义我们可以看出,句柄是一个标识符,用来标识一个对象或项目。就像我们的名字一样,每个人都会有一个。不同的人有不同的名字,但可能会有一个人和你同名。从数据类型上看,它只是一个16位无符号整数。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,然后其他WINDOWS函数可以使用该句柄来引用相应的对象。

如果你想更透彻地了解句柄,我可以告诉你,句柄是指针对指针。众所周知,指针是一个内存地址。应用程序启动后,组成程序的对象被保存在内存中。简单理解的话,似乎只要知道这个内存的第一个地址,就可以随时用这个地址访问对象。但是,如果你真的这么想,那你就大错特错了。我们知道,Windows是一个基于虚拟内存的操作系统。在这种系统环境中,Windows内存管理器经常在内存中来回移动对象,以满足各种应用程序的内存需求。移动一个对象意味着它的地址已经改变。如果地址老是这样变来变去,那要去哪里找对象呢?

为了解决这个问题,Windows操作系统为每个应用程序释放了一些内存地址来注册内存中每个应用对象的地址变化,而这个地址(存储单元的位置)本身是不变的。在内存中移动对象的位置后,Windows内存管理器通知对象的新地址的句柄地址来保存它。这样我们只需要记住这个句柄地址就可以间接知道对象在内存的什么位置。这个地址在对象加载时由系统分配,在系统卸载时释放给系统。

句柄地址(稳定)内存中对象的地址——3354 内存中对象的地址(不稳定)实际对象。

本质:内存块、文件、任务或动态加载的模块不是由WINDOWS程序中的物理地址来标识的。相反,WINDOWS API为这些项目分配特定的句柄,将句柄返回给应用程序,然后通过句柄进行操作。

但必须注意的是,每次重启程序,系统都不能保证分配给这个程序的句柄还是原来的句柄,大部分情况确实是不一样的。如果我们把去电影院看电影看作是一个应用的启动,那么系统分配给应用的句柄总是不一样的,这和电影院卖给我们的票总是不同的座位是一个道理。

线程指的是程序的指令执行序列。WIN32平台支持多线程程序,并允许程序中存在多个线程。在单CPU系统中,系统根据调度算法将CPU时间片分配给各个线程,因此各个线程实际上是及时执行的。在多CPU Windows NT系统中,同一程序的不同线程可以分配给不同的CPU执行。因为一个程序的每个线程运行在同一个地址空间,如何共享内存,如何通信等。所以需要处理线程间的同步问题,这是多线程编程中的一个难点。

线程,也称为轻量级进程。计算机科学术语,指正在运行的程序的调度单元。

线程是进程中的实体。一个进程可以有多个线程,一个线程必须有一个父进程。线程没有系统资源,只有一些运行必需的数据结构;它与其他线程共享父进程拥有的所有资源。线程可以创建和取消线程,从而实现程序的并发执行。通常,一个线程有三种基本状态:就绪、阻塞和运行。

在多CPU系统中,不同的线程可以同时在不同的CPU上运行,即使它们属于同一个进程。大多数支持多处理器的操作系统都提供编程接口,以便进程可以控制它们的线程和处理器之间的密切关系。

进程是程序在数据集上运行的过程(注:)。

多个进程),它是操作系统进行资源分配和调度的独立单元,可以简单地分为系统进程(包括通用

Windows程序和服务进程)和用户进程。

句柄:唯一标识资源(如文件和注册表项)的值,以便程序可以访问它。

线程:运行程序指令的进程中的对象。线程允许进程中的并发操作,并使进程能够同时在不同的处理器上运行其程序的不同部分。

进程:可执行程序(如WINDOWS资源管理器)或服务(如MSTask)。

标签:
  • 抖音推广
  •  
  • 抖音网店推广
  • 更多栏目最新
    抖音“识图”新功能,能带给商家带来哪些新变化?
    抖音“识图”新功能,能带给商
    现在电子商务在抖音的发展越来越强劲。前段时间,抖音推出
    抖音带货口碑低该怎样解决?需要如何操作?
    抖音带货口碑低该怎样解决?需
    作为抖音一个受欢迎的短视频平台,许多用户带货来这里只是
    抖音快手哪个人流大?有什么区别?
    抖音快手哪个人流大?有什么区
    视频刷屏成了人们打发时间的一种方式。最热门的视频平台
    抖音uid具体是什么意思?有哪些作用?
    抖音uid具体是什么意思?有哪
    抖音是一款音乐创意短视频社交软件,是一个专注于年轻人的
    抖音能链接别人的淘宝吗?怎么挂别人的淘宝链接?
    抖音能链接别人的淘宝吗?怎么
    现在,抖音的许多网络名人都想变现,他们在自己的短视频中挂
    抖音类目是什么意思?主营的类目要怎么选择?
    抖音类目是什么意思?主营的类
    在抖音平台上运营店铺的卖家,在运营初期不会懂得运营的技