进程为应用程序的运行实例,是应用程序的一次动态执行。它是操作系统当前运行的执行程序。当前运行的执行程序里包括:系统管理计算机个体和完成各种操作所必需的程序,你开启,执行的额外程序,当然也包括你不知道,而自动运行的非法程序(如病毒等)。
句柄的本质
3.结构特征
进程由程序,数据和进程控制块三部分组成.
*4.为什么会有句柄这一说?
刚才上面说了,句柄是一种指向指针的指针.而所谓的指针是一种内存地址.应用程序启动后,组成这个程序的各对象是住留在内存的.简单地理解,似乎我们只要获知这个内存的首地址就可以随时用这个地址访问对象(如进程).但是,如果你真的这样认为,那么你就错了.我们知道,Windows是一个以虚拟内存为基础的操作系统.Windows内存管理器经常在内存中来回移动对象,以此来满足各种应用程序的内存需要.对象被移动意味着它的地址变化了.如果地址总是如此变化,我们该到哪里去找该对象呢?(进程失控了?)
为了解决这个问题,Windows操作系统为各应用程序腾出一些内存储地址,用来专门登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的.Windows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存.这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置.这个地址是在对象装载(Load)时由系统分配给的,当对象被撤消(Unload)时又释放给系统。
可能大家理解不了,举个形象点的例子.一本书(可以理解为我们的操作系统),总是会有一个目录页(登记具体内容的页码),目录页的每一行就相当于一个句柄,每一行后面的页码就相当于一个指针.当正文内容需要调整时(如原来在第一章的,我现在要把它放到最后一章),那么当内容改动时,我们就要修改目录页中相应的页码(目录页本身是不动的,只是改了页码而已,对于系统来说就是修改了句柄所指向的内存地址的内容).
*5,句柄的本质.
windows程序并不是用物理地址来标识一个内存块,文件,任务或进程的.系统给这些项目分配确定的句柄,并将其值返回给应用程序,然后通过句柄来对其进行操作.程序每次重新启动,系统分配给这个程序的句柄通常是不一样的.
*6.线程到底是什么?
线程是进程中的实体,一个进程可以拥有多个线程,一个线程必须有一个父进程.线程不拥有系统资源,只有运行必须的一些数据结构,它与父进程的其它线程共享该进程所拥有的全部资源.线程可以创建和撤消线程.从而实现程序的并发执行.比如,在一个程序中,我们创建一个线程读写磁盘,用另一个线程来处理用户的其他请求.
网友评论