随笔分类 -  Multiple Thread

3.进程
摘要:进程通常被定义为一个正在运行的程序的实例.它由两个部分组成:一个是操作系统用来管理进程的内核对象.内核对象也是系统用来存放关于进程的统计信息的地方.另一个是地址空间,它包含所有可执行模块或DLL模块的代码和数据.也包含动态内存分配的空间,如线程堆栈和堆分配的空间.进程是不活泼的.也就是说,进程是没有执行能力的,它仅仅是代码和数据的集合.它必须拥有一个在它环境中运行的线程,并由这个线程负责执行包含在进程地址空间内的代码.单个进程可以包含多个线程.每个线程都有自己的一组CPU寄存器和它自己的堆栈.每个进程至少拥有一个线程,如果进程一个线程都没有,也就失去了存在的意义,系统就会自动撤销该进程和它的地 阅读全文
posted @ 2011-08-03 20:21 solokey 阅读(279) 评论(0) 推荐(0)
2.内核对象之<创建和关闭内核对象,跨进程共享>
摘要:当一个进程被初始化时,系统要为它分配一个句柄表.这个句柄表只用于内核对象,不用于用户对象或GDI对象.进程句柄表是一个数据结构的数组,每个结构都包括一个指向内核对象的指针,一个访问屏蔽和一些标志.当进程初次被初始化时,它的句柄表是空的.当进程中的线程调用创建内核对象的函数后时,内核就为该对象分配一个内存块,并将其初始化.这时,内核对进程的句柄表进行扫描,找到一个空项.将该索引位置上结构中的指针成员设置为该内核对象数据结构的内存地址,并设置访问屏蔽,以及标志位.1 function CreateEvent(lpEventAttributes: PSecurityAttributes; 2 bMa 阅读全文
posted @ 2011-08-03 20:20 solokey 阅读(428) 评论(0) 推荐(0)
1.内核对象之<什么是内核对象,使用计数及安全性>
摘要:会不会很奇怪,说多线程的故事,为什么会说内核对象.因为说到线程就要说进程,说到进程呢,又要说内核对象,并且解决多线程的同步问题,多要用内核对象.所以,先废话一下内核对象.什么是内核对象?简单的说,就是只有windows内核才能直接访问的对象(内存区域),就是内核对象(进程中的访问是通过句柄).比如:存取符号对象,事件对象,文件对象,文件映射对象,I/O完成端口对象,作业对象,信箱对象,互斥对象,管道对象,进程对象,信标对象,线程对象和等待计时器对象等等.这些对象由一些名为CreateXXXX函数创建,并返回一个内核对象的句柄,由CloseHandle关闭,因为内核对象是使用计数器管理生命周期, 阅读全文
posted @ 2011-08-03 20:18 solokey 阅读(565) 评论(0) 推荐(0)