现在的位置: 首页 > 综合 > 正文

delphi学习的开始06(Win32简单认识)

2013年04月23日 ⁄ 综合 ⁄ 共 1028字 ⁄ 字号 评论关闭

 

对象:

       Win32环境中有两种基本的对象类型:内核对象和GDI/用户对象。

内核对象是Win32系统原有的,包括事件,文件映射,文件,邮件槽,

互斥,管道,进程,信号灯和线程。

进程和线程:

       每个进程可以为它的代码和数据获得4 G B的地址空间。在这4 G B地址空间中,存在着已分配的内存、线程、文件映射等。由进程调用的动态链接库也在进程的地址空间中。

       进程本身并不执行任何代码。然而,每个进程拥有一个主线程,由

主线程在进程的环境中执行代码。

       线程是一种操作系统对象,代表着一个进程中要被执行的代码的路径。每一个Win32应用程序至少有一个线程—通常称为主线程或默认线程。

GDI和用户对象:

       LDT (局部描述符表):16的windows中的对象是共享的,全局可访问的LDT中存储了所有对象的句柄。在16位Windows中,GDI和用户数据段对于所有的应用程序或DLL也是全局可访问的。

 

       GDI对象 包括画刷、画笔、字体、调色板、位图和区域等。Win32中GDI对象存储在进程的地址空间,而不是全局可访问的内存块,每个进程有它自己的句柄表来存储该进程内的GDI对象的句柄。而在Win32中,每个进程的地址空间是由它自己的LDT定义的。因此,Win32中的LDT只能在本进程中使用。

       用户对象和GDI对象有些类似,它是由Win32用户子系统管理的。然而,用户对象的句柄不像GDI对象那样存储于进程的地址空间,而是有一个专门的用户句柄表。因此,像窗口、窗口类、原子等对象可以在不同的进程之间共享。

 

Win32内存管理:

       16位环境使用分段的内存模式。在这种模式下,地址用segment : offset来表示。Segment代表基地址,offset代表从基地址开始的偏移量。

 

       Win32是使用线性内存模式:在线性内存模式下,这些限制都不复存在。每个进程都有自己的4GB的地址空间,可以安排很大的数据结构。另外,每个地址总是代表一个唯一的内存位置。

      

       通过虚拟地址,每一个进程可以获得4GB的虚拟地址空间。上端的2MB空间属于Windows,下端的2MB空间是放置应用程序及可以分配内存的地方。

 

       一个进程并不是真的有4GB的内存而只是具有访问4GB内存的能力。

 

       在Win32环境下,程序员用3种方式有效地使用内存:虚拟内存、文件映射对象和堆。

抱歉!评论已关闭.