系统编程教程第二章Windows进程编程.ppt

系统编程教程第二章Windows进程编程.ppt

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章 Windows程序运行原理 电子科技大学软件学院--杨尚明 * 在DOS下(实模式)地址是分段的,每一段的长度为64K字节,刚好是16位(二进制的十六位)。 near指针的长度是16位的,所以可指向的地址范围是64K字节,通常说near指针的寻址范围是64K。 far指针的长度是32位,含有一个16位的基地址和16位的偏移量,将基地址乘以16后再与偏移量相加,(所以实际上far指针是20位的长度。)即可得到far指针的1M字节的偏移量。所以far指针的寻址范围是1M字节,超过了一个段64K的容量。例如一个far指针的段地址为0x7000,偏移量为0x1244,则该指针指向地址0x71224.如果一个far指针的段地址是0x7122,偏移量为0x0004,则该指针也指向地址0x71224。 ????如果没有指定一个指针是near或far,那么默认是near。所以far指针要显式指定。far指针工作起来要慢一些,因为每次访问一个far指针时,都要将数据段或程序段的数据交换出来。另外,far指针的运算也比较反常,例如上面讲到的far指针指向同一个地址,但是比较的结果却不相同。 什么时候使用far指针? 当使用小代码或小数据存储模式时,不能编译一个有很多代码或数据的程序。因为在64K的一个段中,不能放下所有的代码与数据。为了解决这个问题,需要指定以far函数或far指针来使用这部分的空间(64K以外的空间)。许多库函数就是显式地指定为far函数的形式。far指针通常和farmalloc()这样的内存分配函数一起使用 第二章  Windows 进程编程 ? 主要内容 2.1 进程的概念 2.2 进程控制  2.3 进程间通信 进程(Process) 概念; 进程创建 CreateProcess 函数的使用; 系统进程获取与终止方法; 使用管程实现进程通信。  进程概念 进程是正在运行的程序的实例。 每个运行项目都对应一个进程,每个进程至少包含一个线程,它从main()函数开始执行,直到执行return语句返回,主线程结束,该进程也被从内存中卸载。 进程由如下几个部分组成: 与程序相关联的可执行代码的映像; 内存空间(通常是虚拟内存中的一些区域),其中保存可执行代码、进程的特定数据、用于记录活动例程和其他事件的调用栈、用于保存实时产生的中间计算结果的堆(heap); 分配给进程的资源的操作系统描述符(比如文件句柄)以及其他数据资源; 安全属性: 进程的所有者和权限; 处理器的状态: 寄存器的内容、物理内存地址等。 “进程”(Process)和“线程”(Thread)是操作系统控制多任务的两个重要概念。 早期的Windows 3.x只能依靠应用程序之间的协同来实现协同式多任务,而Windows 9x以后实行的是抢占式多任务 -- 区别在于是程序协调(需简单地在各个应用程序之间来回切换 )或系统管理多任务。 在Win 32(Windows 95/NT/XP)中,每一个进程可以同时执行多个线程,这意味着一个程序可以同时完成多个任务。 进程概念 进程的状态 一个进程生命周期中有如下一些状态: 系统在创建新进程时会为新进程指定一个STARTUPINFO类型的变量。 这个结构包含了父进程传递给子进程的一些显示信息。 对图形界面应用程序,这些信息将影响新进程中主线程的主窗口显示。 如果一个新的控制台窗口被创建,这些信息将影响这个控制台窗口。 创建新进程时指定的STARTUPONFO变量结构定义如下页所示: 进程的创建 Typedef struct{ DWORD cb; // 本结构长度 LPSTR lpReserved; // 保留字段 LPSTR lpDesktop; // 指定桌面名称 LPSTR lpTitle; // 指定控制台窗口名称 DWORD dwX; // 指定创建窗口位置坐标及大小信息 DWORD dwY; DWORD dwXSize; DWORD dwYSize; DWORD dwXCountChars; // 控制台程序使用,指定控制台窗口行数 DWORD dwYCountChars; DWORD dwFillAttributes; // 控制台程序使用,指定控制台窗口背景色 DWORD dwFlags; // 标志,决定结构中那些成员值有效 WORD wShowWindow; // 窗口显示方式 WORD cbReserved2; LPBYTE lpReserved2; HANDLE hStdInput; // 控制台

文档评论(0)

精品课件 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档