九游娱乐-中国九游最全娱乐游戏官方平台

九游娱乐文化:开发和部署基于windows平台的64位应用程序九游娱乐
您当前位置: 主页 > 九游娱乐资讯
作者:小编
2024-10-19 06:29 浏览: 分类:九游娱乐资讯

九游娱乐文化:开发和部署基于windows平台的64位应用程序

  No.6Dec.,2008微处理机MICROPROCESSORS第6期2008年12月开发和部署基于windows平台的64位应用程序陈乐,张延园,樊龙(西北工业大学计算机学院软件工程系,西安710072)摘要:64位计算系统同当前主流的32位系统相比,具有不可比拟的高性能和可伸缩性,因此应用程序的开发全面向64位靠拢是个不可逆转的趋势。在64位Windows应用平台下,探讨了开发和移植64位应用程序需要注意的问题,并针对这些问题给出了相应的解决方案。关键词:64位Windows应用平台;开发和移植;64位应用程序中图分类号:TP311文献标识码:A文章编号:1002-2279(2008)06-0136-03Developmentof64-bitApplicationBaseonWindowsPlatformCHENLe,ZHANGYan-yuan,FANLong(ComputerCollege,NorthwesternPolytechnicalUniversity,Xi’an710072,China)Abstract:Comparingwiththe32-bitcomputingsystem,the64-bitcomputingsystemhasextraordinaryperformanceandflexibility.Developing64-bitapplicationwillbeaninevitableuptrendinfuture.Thispaperfocusesonanalyzingthedevelopmentandmigrationof64-bitapplicationbasedon64-bitWindowsapplicationsplatformandprovidessomesolventsofpotentialtroubles.Keywords:64-bitWindowsapplicationsplatform;Developmentandmigration;64-bitapplication1引言二十世纪末,64位RISC体系结构快速兴起,让人们渐渐体会到了64位计算系统的强大力量。但是由于RISC技术的复杂性、各厂商产品的封闭性和垄断性,以及高额的费用支出,限制了64位系统进一步普及和发展。人们开始意识到开放式系统的观念应该深入到处理器的层次。在这样的背景下,AMD公司率先推出了基于ISA架构(InstructionSetArchitecture)的AMD64处理器,Intel公司开发了IA-64EPIC体系结构的纯64位Itanium系列产品,随后又开发了同时兼容32位和64位的EM64T(Ex2tendedMemory64bitTechnology)架构的Pentium4、Celeron、Xeon等系列处理器。在64位硬件系统高速发展的同时,Microsoft公司也迅速推出了64位Windows操作系统。随之而来的是64位的中间件和应用软件的开发需求急速增长,未来几年中开发和部署基于Windows平台的64位应用程序将是许多程序开发人员需要面对的问题。264位windows系统的特点对比32位系统,64位系统最大的优势在于提供了更大的可寻址内存空间,因此提高了性能和伸缩性。表132位系统与64位系统的基本差异地址空间64位Windows32位Windows虚拟内存16TB4GB页面文件512TB16TB页面缓冲池128GB470MB非页面缓冲池128GB256MB系统缓存1TB1GB3开发和移植策略分析对于应用程序开发人员来说,需要考虑是不是所有的应用程序都有必要进行64位的开发或移植呢?答案是否定的。64位Windows系统具有一个特殊的WOW64(Windows-32-on-Windows-64)子系统,它的功能是为现有的32位应用程序提供32位的模拟环境,可以使大多数32位应用程序无需修改而直接运行在64位Windows平台上。图1为32位应用程序运行在WOW64子系统的示意图。64位的开发和移植应该优先考虑性能问题,即当前开发的应用程序是否对性能有潜在的高需求。作者简介:陈乐(1979-),男,湖南株洲人,硕士研究生,主研方向:数据库、软件工程。收稿日期:2005-09-016期陈乐等:开发和部署基于windows平台的64位应用程序·137·如果对性能没有什么很高的要求,并且32位系统已经可以很好地满足要求的话,就没有必要进行相应的64位程序开发。图132位应用程序运行在WOW64子系统的示意图一般说来,接近操作系统底层或是对硬件有依赖的程序是需要优先考虑进行64位开发和移植的。事实上目前64位的Windows系统还是一个并不“完美”的操作系统,其主要缺陷表现在硬件驱动程序的不完备。一般说来,对于硬件有依赖的应用程序,应该优先考虑开发硬件所必需的64位驱动程序,然后再开发硬件基础上的其它相关程序。许多实验数据表明运行在64位Windows的WOW64子系统下的32位应用程序,其性能并不能得到有效的提升 。如果需要线 位系统的 高性能的话 ,就必须进行相应的 64 位应用程序的 开 发工作 。对于开发人员而言 ,有两条途径可以选 择 : 一是移植 ,即对现有的 32 位应用程序代码进 行 64 位的改造 ;二是开发 ,即从零开始 ,全新设计 一个 64 位的应用程序。 对于 32 位到 64 位的移植而言 ,需要努力做 到 的目标就是从单个代码库中构建出两种版本 ( 32 位 或 64 位 )的应用程序 。这样做的好处就 是可以有 效减少维护代码的复杂度 ,减轻开发和 维护人员的 九游娱乐 九游娱乐官方负担 ,减少开发成本。 对于 64 位应用程序的全新开发而言 ,开发所 需 的成本则是需要慎重考虑的问题 。 4 64 位应用程序的开发环境 目前可供选择的 64 位应用程序的开发方式有 2 种 ,一是在现有的 32 位操作系统平台下进行 64 位的开发 ,二是直接在 64 位操作系统进行 64 位开 发 ,目前值得推荐的方式是第一种 。由于 64 位的集 成开发环境 ( ID E)M icro soft V isual Studio . NET 2005 还处在开发后期的测试阶段 ,目前只是提供 Beta 版 的程序供开发人员测试使用 ,采用它进行 64 位开发 并不是一种稳妥的方式 。而在 32 位操作系统下进 行 64 位的开发 ,只需使用 M icrosoft V isual Studio 6. 0 或. NET 2002 / 2003 加上 64 位的 M icro soft Platfo rm SD K即可生成 64 位应用程序 ,并可以很方便地实现 从同一代码库中分别构建两个版本 ( 32 位或 64 位 ) 的应用程序 。 64 位的软件开发工具包 ( SD K) 包括 了用于 64 位开发所需的编译器 、链接器 、C 运行时 (CRT)库版本 、M icro soft 基础类 (MFC)版 本和活动 模板库 (A TL )版本以及其他工具 。开发 人员可以到 M icro soft 的网站进行下载最新的 64 位 SD K。 5 64 位应用程序的开发步骤 5. 1 64 位应用程序的编程 5. 1. 1 在代码中使用新的数据类型 应用程序从 32 位到 64 位过渡需要解决的核 心 问题就是数据对齐的问题 ,即防止有效的数据 被非 法截断 。每一个应用程序和任何操作系统都 有自己 的抽象数据模型 。很多应用程序没有明显 地暴露这 些数据模型 ,但是这些模型指导着应用 程序的编码 方式 。在 32 位程序的数据模型中 (正如我们所知 道的 IL P32 模型 ) ,整型 、长整型 和指针的数据类型 在长度上都是 32 位的 。在 64 位操作系统中 ,如果 使所有这些数据类型都转变 成 64 位 ,那将会十九游娱乐 九游娱乐官方分浪 费空间 ,数量级的增长决 定了应用程序的大小 ,这就 导致了 LLP64 (或者称 为 P64)数据模型的产生 。在 这种模型下 ,只有指 针被扩展到 64 位 ,其他数据类 型仍保持 32 位 。 而且磁盘中的数据大小 ,通过网络 共享的数据以及 通过内存映射文件共享的数据都没 有改变 ,这些都 将减轻 32 位的程序移植到 64 位操 作系统中所受 到的影响 。 目前 64 位系统中的新数据类型有三类 : (1)固定宽度的数据类型 ( Fixed Precision) 。这 些数据类型在 32 位和 64 位 W indow s 系统下具有 固 定不变的数据宽度。 表 2 LLP64 中固定精度的数据类型 类型 DWORD32 定义 32 位无符号整数 DWORD64 64 位无符号整数 IN T32 32 位有符号整数 IN T64 64 位有符号整数 LONG32 32 位有符号整数 LONG64 64 位有符号整数 U IN T32 无符号 IN T32 U IN T64 无符号 IN T64 ULONG32 无符号 LONG32 ULON G64 无符号 LON G64 ( 2)具有指针精度的数据类型 ( Pointer Precision ) 。 这些数据类型总是与它所在平台的指针宽度保持一 致 :它们在 64 位系统是 64 位宽度 ; 在 32 位系统中 是 32 位宽度 ,因此又称为“多态 ”数据类型 。 ·138· 微 处 理 机 2008 年 表 3 LLP64 中指针精度的数据类型 类型 定义 DWORD _PTR 指针精度的无符号长类型 指针大小的一半 。用于包含一个指 HALF_PTR 针和两个小型字段的结构中 IN T_PTR 指针精度的有符号整型 LONG_PTR 指针精度的有符号长类型 指针可以引用的最大字节数 。用于 SIZE_T 必须跨指针的整个范围的计数 SS IZE_T 有符号 SIZE_T UHALF_PTR 无符号 HALF_PTR U INT_PTR 无符号 IN T_PTR ULONG_PTR 无符号 LONG_PTR 与 LONG _ PTR 为 同 义 词 , (在 unsigned int PtrToU int ( const vo id3 p)

九游娱乐资讯
安卓应用苹果应用
阅读头条转发推广