Windows核心编程:第4章 进程】的更多相关文章

第4章 进 程     本章介绍系统如何管理所有正在运行的应用程序.首先讲述什么是进程,以及系统如何创建进程内核对象,以便管理每个进程.然后将说明如何使用相关的内核对象来对进程进行操作.接着,要介绍进程的各种不同的属性,以及查询和修改这些属性所用的若干个函数.还要讲述创建或生成系统中的辅助进程所用的函数.当然,如果不深入说明如何来结束进程的运行,那么这样的介绍肯定是不完整的.现在就来介绍进程的有关内容.进程通常被定义为一个正在运行的程序的实例,它由两个部分组成: • 一个是操作系统用来管理进程的…
上一章介绍了内核对象,这一节开始就要不断接触各种内核对象了.首先要给大家介绍的是进程内核对象.进程大家都不陌生,它是资源和分配的基本单位,而进程内核对象就是与进程相关联的一个数据结构.操作系统内核通过它管理进程,也就是操作系统原理上介绍的进程控制块(PCB).举个例子,它就相当于每个学生都有的学籍,学校管理我们都是通过学籍,什么记过了,处分了,开除学籍了,都是在学籍上做文章.       进程一般被定义为一个正在运行的程序的一个实例,它由两部分组成:       1:内核对象,操作系统用它来管理…
4.3 终止进程的运行 若要终止进程的运行,可以使用下面四种方法: • 主线程的进入点函数返回(最好使用这个方法) . • 进程中的一个线程调用E x i t P r o c e s s函数(应该避免使用这种方法) . • 另一个进程中的线程调用Te r m i n a t e P r o c e s s函数(应该避免使用这种方法) . • 进程中的所有线程自行终止运行(这种情况几乎从未发生) . 这一节将介绍所有这四种方法,并且说明进程结束时将会发生什么情况. 4.3.1 主线程的进入点函数返…
4.2 CreateProcess函数 可以用C r e a t e P r o c e s s函数创建一个进程: BOOL CreateProcessW( _In_opt_ LPCWSTR lpApplicationName, _Inout_opt_ LPWSTR lpCommandLine, _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes…
看到windows核心编程 第5章的最后一节,发现job lab例子程序不能在我的系统(win8下)正常运行,总是提示“进程在一个作业里”         用process explorer程序查看 于是我找到   例子程序源码的这段判断程序,注释后编译运行   终于进了程序的界面   可是我认为这不是一个好的解决方案   于是去看书的123页下面到124页上的那段话   果然在程序已经关联了作业对象   但是最后,书上说到,一个简单的解决方案是从命令行而不是windows资源管理器中启动调试器…
// 全局变量,用于指示共享的资源是否在使用 BOOL g_fResourceInUse = FALSE; void Func1() { //等待访问资源 while(InterlockedExchange(&g_fResourceInUse, TRUE) == TRUE) Sleep(0); //访问刚占有的资源 //Access the resource. //我们不需要再访问的资源 InterlockedExchange(&g_fResourceInUse, FALSE); } 这是…
7.6 运用结构环境 现在应该懂得环境结构在线程调度中所起的重要作用了.环境结构使得系统能够记住线程的状态,这样,当下次线程拥有可以运行的C P U时,它就能够找到它上次中断运行的地方. 知道这样低层的数据结构也会完整地记录在 Platform SDK文档中确实使人吃惊.不过如果查看该文档中的C O N T E X T结构,会看到下面这段文字: "C O N T E X T结构包含了特定处理器的寄存器数据.系统使用 C O N T E X T结构执行各种内部操作.目前,已经存在为 I n t e…
用户模式下的线程同步 系统中的线程必须访问系统资源,如堆.串口.文件.窗口以及其他资源.如果一个线程独占了对某个资源的访问,其他线程就无法完成工作.我们也必须限制线程在任何时刻都能访问任何资源.比如在一个线程读内存时要限制其他线程对此块内存进行写入. 线程之间的通信很重要,尤其是在以下两种情况下: 1:需要让多个线程同时访问一个共享资源,同时不能破坏资源的完整性. 2:一个线程需要通知其他线程某项任务已经完成. 线程同步包括许多方面,windows提供了许多基础设施使线程同步变得容易. 用户模式…
第27章 硬件输入模型和局部输入状态 这章说的是按键和鼠标事件是如何进入系统并发送给适当的窗口过程的.微软设计输入模型的一个主要目标就是为了保证一个线程的动作不要对其他线程的动作产生不好的影响. 27.1 原始输入线程 当系统初始化时,要建立一个特殊的线程,即原始输入线程(raw input thread,R I T).此外,系统还要建立一个队列,称为系统硬件输入队列(System hardware input queue, SHIQ).R I T和S H I Q构成系统硬件输入模型的核心. R…
17.3 使用内存映射文件 若要使用内存映射文件,必须执行下列操作步骤: 1) 创建或打开一个文件内核对象,该对象用于标识磁盘上你想用作内存映射文件的文件. 2) 创建一个文件映射内核对象,告诉系统该文件的大小和你打算如何访问该文件. 3) 让系统将文件映射对象的全部或一部分映射到你的进程地址空间中. 当完成对内存映射文件的使用时,必须执行下面这些步骤将它清除: 1) 告诉系统从你的进程的地址空间中撤消文件映射内核对象的映像. 2) 关闭文件映射内核对象. 3) 关闭文件内核对象. 下面将详细介…