一、程序,进程,线程程序是指令的集合,以文件形式储存在磁盘上。一个程序可以对应多个进程,一个进程代表一个实例。进程由管理进程的内核对象、地址空间组成。内核对象存放关于进程的统计信息,地址空间包含可执行模块、DLL模块和堆、栈。进程不执行任何东西,它是线程的容器,每个进程至少有一个线程。当创建一个进程...
分类:
编程语言 时间:
2014-07-06 17:56:56
阅读次数:
212
Windows多线程编程总结keyword:多线程 线程同步 线程池 内核对象1 内核对象1 .1内核对象的概念内核对象是内核分配的一个内存块,这样的内存块是一个数据结构,表示内核对象的各种特征。而且仅仅能由内核来訪问。应用程序若须要訪问内核对象,须要通过操作系统提供的函数来进行,不能直接訪问内核对...
分类:
编程语言 时间:
2014-06-27 21:25:40
阅读次数:
380
1、程序 .exe就是一个程序 2、进程 运行一个.exe的可执行程序后,就启动了该程序的一个实例,我们称之为“进程”。是资源申请,调度和独立运行的单位,使用系统的运行资源 3、线程 线程有线程内核对象和线程栈组成。 线程内核对象:统计线程的信息(如线程的引用计数,线程ID) 线程栈:维护线程在执行...
分类:
其他好文 时间:
2014-06-26 12:55:51
阅读次数:
173
Kithara RTS的事件机制,和windows编程中的事件机制比较像,如果有部分不明白,可以参考windows编程的这部分知识。事件在windows中是一种内核对象。事件主要用来实现任务之间的同步,同步并不是同时进行的意思,而是让整个软件的逻辑按照指定的顺序运行。以下文章是拆字Kithara R...
分类:
其他好文 时间:
2014-06-16 13:07:42
阅读次数:
231
句柄类似于指向指针的指针
Windows系统中有许多内核对象,比如打开的文件、创建的线程、程序的窗口等等。这些重要的对象肯定不是4个字节或者8个字节足以完全描述的,它们拥有大量的属性。为了保存这样一个"对象"的状态,往往需要上百甚至上千字节的内存空间,那么怎么在程序间或程序内部的子过程(函数)之间传递这些数据呢?拖着这成百上千的字节拷贝来拷贝去吗?显然会浪费效率。那么怎么办?当然...
分类:
其他好文 时间:
2014-06-16 11:56:57
阅读次数:
192
执行异步操作CLR使用了WIN的线程处理能力,但保留了与其分离的权利.某些时候CLR的线程与Win的线程不是完全的匹配.线程的系统开销较大,应限制其数量.创建:分配并初始化一线程内核对象,保留1M的地址空间(用户模式),12KB的堆栈(内核模式),然后调用DLL函数通知进程中所有DLL操作来通知所有...
分类:
编程语言 时间:
2014-06-14 23:06:27
阅读次数:
319
目前正在阅读毛老师的《windows内核情景分析》一书对象管理章节,作此笔记。Win内核中是使用对象概念来描述管理内核中使用到的数据结构。此对象(Object)均是由对象头(Object
Header)组成,实际上由于对象头概念的特殊结构,还有些可选成分。于是一个对象实际上是分为三部分。OBJECT...
进程
1 进程的含义:
1.1 一个是操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方。
1.2 另一个是地址空间,它包含所有可执行模块或DL L 模块的代码和数据。它还包含动态内存分配的空间。如线程堆栈和堆分配空间。
2 操作系统启动应用程序的步骤
2.1 调用C/c++运行时的启动函数
启动函数总共4种,WinMainC...
Windows内核之作业
1 定义:
作业是一种内核对象,它相当于一个容器,里面可以加入很多进程,通过配置作业,可以让作业内的进程具有相同的配置,例如进程的最大执行时间,cpu片占用时间等。
2 作业的创建相关函数
HANDLE CreateJobObject(LPSECURITY_ATTRIBUTESlpJobAttributes,LPCTSTR lpName);
H...