windows编程重点

上传人:206****923 文档编号:41438887 上传时间:2018-05-29 格式:DOC 页数:8 大小:53.50KB
返回 下载 相关 举报
windows编程重点_第1页
第1页 / 共8页
windows编程重点_第2页
第2页 / 共8页
windows编程重点_第3页
第3页 / 共8页
windows编程重点_第4页
第4页 / 共8页
windows编程重点_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《windows编程重点》由会员分享,可在线阅读,更多相关《windows编程重点(8页珍藏版)》请在金锄头文库上搜索。

1、1、Win32 和 Win64 之间的本质差异是指针变量的大小指针变量的大小以及虚拟地址空间的大虚拟地址空间的大 小小。2、Windows 支持四种四种文件系统(简答) (1) NT 文件系统 NTFS,是一个现代的文件系统。 (只有只有 NT 系统支持安全性系统支持安全性) (2) 文件分配表 FAT 和 FAT32,FAT 文件系统是软盘和 Windows9x 硬盘上唯一 支持的文件系统 (3) CD-ROM 文件系统 CDFS,主要用于访问 CD-ROM 上的信息。 (4) 通用磁盘格式 UDF,支持 DVD 驱动器3、目录和文件名称不区分不区分大小写,但是可以保留保留大小写 例:创建文

2、件使用 MyFile,它会一直保留,但通过 myFILE 也可以访问4、C 的 main 函数及其参数列表(argv) ,应该被宏_tmain 所替代,_tmain 在 中定义5、一个进程一次只能有一个控制台一个进程一次只能有一个控制台。6、目录管理 函数:CreateDirectory 功能:创建目录 函数:RemoveDirectory 功能:删除目录 函数:SetCurrentDirectory 功能:获取或设置当前目录 函数:GetCurrentDirectory 功能:返回绝对路径名称到程序员提供的缓冲 中7、文件属性和目录处理 函数:FindFirstFile 功能:获取查找句柄获

3、取查找句柄 函数:FindNextFile 功能:获取指定文件获取指定文件 函数:FindClose 功能:终止查找终止查找 注注:查找完成后,关闭查找句柄,不要使用 CloseHandle,使用 CloseHandle 关 闭查找句柄会引起异常。8、FindFirstFile 和 FindNextFile 函数可以获取以下文件属性信息:属性标记属性标记、 三个时间戳三个时间戳和文件大小文件大小。9、 (简答) C 库的优点库的优点? (1) 代码可以移植到非 Windows 平台。 (2) 便捷的面向行和字符的函数,而 Windows 中没有相对应的函数来简化字 符串处理。 (3) C 库函

4、数通常比 Windows 函数更易于使用。 (4) 面向行和流字符的函数易于改变以进行普通调用,尽管失去了可移植性 特征(5) C 库可以在多线程环境下运行 C 库的限制或缺点库的限制或缺点? (1) C 库不能管理或者遍历目录,也不能获取或设置大多数文件属性 (2) C 库在 fseek 函数中使用 32 位的文件位置,所以在顺序读取巨大文件的 同时,却不能定位巨大文件的任何地方 (3) C 库中没有高级特性,比如文件安全性、文件锁、进程间通信等。10、文件锁定 文件锁可以是只读只读(共享)或读写读写(专有) 。 最重要的是锁属于进程最重要的是锁属于进程。 文件锁是并发线程和进程间同步的有限

5、形式。使用文件锁应该考虑的因素:(简答) (1) 解锁应该同前面锁定使用完全相同的范围 (2) 锁不能跟文件现有的锁重叠,否则会产生冲突 (3) 锁可以超出文件的长度范围 (4) 锁不能被新创建的进程所继承11、注册表 注册表是关于程序程序和系统配置信息系统配置信息的集中的、分层的数据库数据库。对注册表的访 问是通过注册表关键字注册表关键字来实现的。 用户和管理员可以通过 REGEDIT 命令打开注册表编辑器以查看和编辑注 册表内容,程序可以通过注册表注册表 API 函数函数来管理注册表。12、异常处理 SHE:Windows 的结构化异常处理 P68 图图 4-1 SEH、代码段和函数、代码

6、段和函数 P71 图图 4-2 异常的处理顺序异常的处理顺序 1 (1) 异常发生 (2) 控制权交给异常处理器,此时过滤表达式被赋值。GetExceptionCode 首先调 用,而它的返回值是函数 Filter 的参数 (3) 过滤函数根据异常代码值来决定它所采取的行动 (4) 这里的异常代码是 EXCEPTION_DIVIDE_BY_ZERO (5) 过滤函数决定异常处理器应该被执行,因此返回值是 EXCEPTION_EXECUTE_HANDLER (6) 异常处理器是跟_except 语句有关的代码,它被执行 (7) 控制权离开 try-except 程序块在 try-finally

7、语句中使用_finally 关键字来构建终止处理器。13、Windows 提供了管理程序动态内存的灵活机制.Windows 同时也提供内存映内存映 射文件射文件把进程地址空间进程地址空间跟文件文件直接关联,允许操作系统管理在文件和内存之间 的所有数据移动,从而程序员不需要处理 ReadFile、WriteFile、SetFilePointer 或者其他文件 I/O 函数。 动态链接库(DLL)是文件映射和共享内存的特例,此时文件被映射到进程地址空间执行。 14、Windows 以堆的方式来维护内存池。一个进程可以包含多个堆,一个进程可以包含多个堆,可以从这 些堆中分配内存。 堆是 Window

8、s 对象。因此它们具有句柄。当分配内存时堆句柄是必需的。每个 进程具有自己的缺省堆,它被 malloc 使用,而下一个函数获得句柄。15、一个程序可以创建不同的堆一个程序可以创建不同的堆。对于不同的数据结构,使用不同的堆来分配 有时是很方便的。 使用不同堆的优点?(简答) (1) 公平 (2) 提高了多线程性能 (3) 分配效率高 (4) 解除分配效率高 (5) 引用局部化的效率高 注:注:堆没有安全属性,因为它们在进程之外是不可访问的。16、删除堆会释放页面调度文件页面调度文件的虚拟内存空间虚拟内存空间和物理存储物理存储。因此,良好设计 的程序应该在堆不需要时将其删除。删除堆是一种释放数据结

9、构的快速方法,每次删除一个单元而无需遍历它们。17、使用堆的过程?(简答) (1)使用 CreateHeap 或者 GetProcesSEHap 来获取一个堆句柄 (2)使用 HeapAlloc 在堆内分配块 (3)可选的,使用 HeapFree 释放一些或所有单个块 (4)使用 HeapDestroy 删除堆并关闭句柄18、堆中的动态内存必须物理地在页面调度文件中分配堆中的动态内存必须物理地在页面调度文件中分配。当进程终止时,文件 中的物理空间就解除分配。 操作系统自身使用内存映射来执行 DLL,并装载和执行可执行(.exe)文件。19、动态链接库 单映像模式的缺点?(简答) (1) 可执行

10、映像可能很大,在运行时消耗硬盘空间和物理内存,并需要过多 精力来管理及交付给用户。 (2) 每次程序更新需要编译整个程序。 (3) 系统中使用该函数的每个程序在其可执行映像中都具有该函数的一个副 本,增加了硬盘空间,运行时会增加物理内存的使用频率。 (4) 使用不同技术的不同程序版本则要求在不同的环境中获取最佳性能 20、DLL 的优势?(简答) (1)库函数在创建程序时没有链接 (2)DLL 可用于创建共享库 (3)新版本或替代实现可以通过提供一个新版本 DLL 来实现 (4)有了显式链接,程序可以在运行时决定应该使用哪个版本的库注:注:DLL 是内存映像文件的一个特例是内存映像文件的一个特

11、例 21、每个线程都独立进程调度,并包含以下要素: (1)为过程调用、中断、异常处理器和自动存储建立的堆栈 (2)线程本地存储(TLS)指针数组,让线程可以分配存储以创建自己特 有的数据环境 (3)堆栈参数,在创建线程时所生成的,对每个线程来说通常是唯一的 (4)上下文结构,由系统内核通过机器注册表来维护22、Windows 进程管理的基本函数是 CreateProcess,它创建包含单线程的进程。23、等待进程终止 等待函数等待同步对象变为获得信号状态 常用的两个等待函数:WaitForSingleObject WaitForMultipleObject 24、线程线程是 Windows 的

12、基本执行单元,而进程可以包含多个独立的共享进程地共享进程地 址空间址空间和其他资源的线程线程。 线程是进程中独立的执行单元线程是进程中独立的执行单元。多线程编程需要组织和协调线程执行,以 简化程序并利用主机内在的并行处理能力。25、单线程进程的缺点: (1)操作系统在运行进程之间切换时付出很高的代价而且很费时 (2)除了共享内存的情况之外,进程不是紧耦合的,而且很难共享诸如已打开 文件这样的资源 (3)对于单线程进程管理多个并发且相互作用的任务来说是很困难和低效率的 (4)Windows 执行程序在 SMP 系统上不同处理器上分配独立线程26、进程和线程优先级和调度 Windows 内核总是运

13、行执行准备就绪的最高优先级线程。 线程获取跟其进程优先级类相关的优先级。通过 CreateProcess 可以初始设置的 进程优先级有四类,而每类具有基本优先级 (1) IDLE_PRIORITY_CLASS,基本优先级 4 (2) NORMAL_PRIORITY_CLASS,基本优先级 9 或者 7 (3) HIGH_PRIORITY_CLASS,基本优先级 13 (4) REALTIME_PRIORITY_CLASS,基本优先级 24线程优先级设置成跟进程基本优先级相关,而在线程创建时优先级被设成进程 优先级。27、纤程纤程:是线程的一部分。纤程是线程中可以被程序而不是被内核调度的执 行单

14、元。一个线程可以创建许多纤程一个线程可以创建许多纤程,而纤程自身决定了下一个需要执行的线 程纤程。纤程具有独立的堆栈,但是完全在线程的环境中运行纤程具有独立的堆栈,但是完全在线程的环境中运行。28、纤程互相调度的两种方式:1 主辅调度主辅调度,2 端到端调度端到端调度。29、Windows 提供了四个专用于线程和进程同步的对象。其中互斥、信号量和其中互斥、信号量和 事件是具有句柄的核心对象事件是具有句柄的核心对象。 30、互斥互斥对象提供的功能超过了 CRITICAL_SECTION 所提供的。因为互斥可以 命名并具有句柄,它们也能够用于不同进程中线程之间的同步。例如两个以上 内存映射文件方式

15、共享内存的进程可以使用互斥来对共享内存进程同步访问。 函数:CreateMutex 功能:创建互斥 函数:OpenMutex 功能:打开一个现有命名互斥 函数:ReleaseMutex 功能:释放调用线程本身的互斥31、互斥与互斥与 CRITICAL_SECTION 的区别的区别:(简答) (1)互斥在被终止线程抛弃后会获得信号,这样其他线程就不会永远受阻 (2)互斥等待可以超时,然后只能探测 CS (3)互斥可以命名并可被不同进程中的线程共享 (4)可以把 WaitForMultipleObjects 用于互斥,既是编程便利,同时如果使用 得当也是避免死锁的方法。 (5)创建互斥的线程可以立

16、即指定所有权。在 CS 中,几个线程可以抢占 CS。 (6)CS 通常但不总是比互斥快得多32、信号量信号量:三个核心同步对象中的第二个,维护一个计数器,当该计数器值 大于 0 时,信号量对象就获得信号。33、事件事件:是最终的核心同步对象。 SetEvent:线程使用 SetEvent 向事件发信号。如果事件是自动重置的,可能是 许多等待线程之一的单个等待线程被释放,然后事件自动返回到未获得信号状 态。 ResetEvent:如果事件是手动重置的,它就保持获得信号状态直到某个线程对该 事件调用 ResetEvent注:ResetEvent 仅在手动重置事件被 SetEvent 设置成获得信号时才是有用的。CS 的运行:的运行: 执行 EnterCriticalSection(ECS)的线程测试 CS 的锁定码 如果 CS 被锁定,ECS 就进入 SMP 系统的一个严密循环,不需要顺从处理器 就分别测试锁定位。 一旦 ECS 放弃测试锁定位,ECS 就进入

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号