Marshalling (计算机科学)

✍ dations ◷ 2025-11-16 10:27:36 #Marshalling (计算机科学)

marshalling可译作集结、结集、编码、编组、编集、安整、数据打包、列集等,是计算机科学中把一个对象的内存表示变换为适合存储或发送的数据格式的过程。典型用于数据必须在一个程序的两个部分之间移动,或者必须从一个程序移动到另一个程序。Marshalling类似于序列化,可用于一个对象与一个远程对象通信。逆过程被称作unmarshalling。

Marshalling被用于实现不同的远程过程调用(RPC)机制,这必须用到进程间的数据传输。stub必须把程序内存空间的本地格式的数据转换为网络数据表示(英语:Network Data Representation)格式(NDR,常称为数据的线上格式),这种转换被称为marshaling数据。当客户端或服务器接受数据,必须从NDR格式把数据转换为程序的本地格式,这称为unmarshaling数据。

Microsoft的组件对象模型(COM)中,当跨COM的套间(apartment)传递接口指针时,接口指针必须被marshalled。在.NET Framework下,在非受管(unmanaged)类型与CLR类型间,例如P/Invoke过程,必须做marshalling。例如,C#程序调用C语言写的DLL,其中函数参数使用字符串,就需要做marshalling。

使用Mozilla应用程序框架的XPCOM的脚本或应用程序,广泛使用marshalling。

Microsoft Windows系列操作系统,Direct3D设备驱动程序是内核态驱动程序。DirectX运行时处理用户态API。用户态执行系统调用来执行内核态操作,需要CPU切换为内核态,这将耗费微秒级的时间来完成。在此期间,CPU不能执行任何操作。为优化性能,必须极小化CPU这种模式切换。 Linux OpenGL驱动程序分为两部分:内核驱动与用户空间驱动。用户空间驱动把所有OpenGL命令翻译为机器码提交给GPU。为减少系统调用,用户空间驱动实现marshalling。当GPU的命令缓冲区(command buffer)装满了绘图数据,API简单地把请求绘制的调用存放在一个临时缓冲区;当命令缓冲区接近为空,执行内核模式切换一次性增加被存储的命令。

序列化一个对象意味着把它的状态转化为字节流,使这个字节流能反向转化为该对象的一个副本。

术语“marshal”被Python标准库认为与“序列化”同义。 但与Java相关的RFC 2713不认为二者是同义:

"marshal"一个对象意味着记录下它的状态与codebase(s)在这种方式,以便当这个marshal对象在被"unmarshalled"时,可以获得最初代码的一个副本,可能会自动装入这个对象的类定义。可以marshal任何能被序列化或远程(即实现java.rmi.Remote接口)。Marshalling类似序列化,除了marshalling也记录codebases。Marshalling不同于序列化是marshalling特别处理远程对象。

相关

  • 皮特堡围攻战北美殖民地战争是17世纪至18世纪发生在殖民地时代的北美大陆的一连串战争之总称。各殖民地的战争和发生在欧洲的战争呼应。这一连串战争在美国总称French and Indian Wars,在
  • 无刺胞亚门栉水母(Ctenophores),又名海胡桃,是一类两胚层动物,属辐射对称动物,现被划分为栉水母动物门(学名:Ctenophora),又名有栉动物门、栉板动物门。原和刺丝胞动物一起分在腔肠动物门,作为无
  • 帝国战争博物馆帝国战争博物馆(Imperial War Museum)是英国的一座国立博物馆,分布于英格兰的五个地点,其中三处位于伦敦。它成立于第一次世界大战期间的1917年,记录大英帝国战争努力和牺牲。今
  • 座右铭座右铭(英语:Motto)指个人、组织等引以为自我警诫的短句或格言,代表着精神、意志、信念等,一般以排比形式出现。家族、学校、公司等都可能有座右铭,当中学校的训词称为校训,家族的
  • 鲁格超级红鹰转轮手枪美国鲁格超级“红鹰”阿拉斯加转轮手枪 ( Ruger Super Redhawk ) 是鲁格-斯特姆公司的转轮手枪。超级红鹰有两种口径的枪型,一种是0.454英寸,可使用.45 Long Colt(英语:.45 Colt
  • 卷日本阿地螺卷日本阿地螺(学名:),又名椭圆葡萄螺,为阿地螺科日本阿地螺属的动物。分布于日本以及中国大陆的广东等地,属于暖水性种类。其多栖息于潮间带低潮线-潮下带浅水区砂质底。
  • 简牍简牍是古代书写有文字的竹片或木片。其中竹制的叫竹简或简称简,木制的叫木牍或简称牍,合称简牍(由于竹简的数量较多,有时也通称作“简”,其实是包含了木牍在内的意义。)简牍是在纸
  • 2008年夏季奥林匹克运动会申办过程概述有10个城市向国际奥委会提出申办2008年夏季奥林匹克运动会和夏季残奥会,其中五个城市进入了候选名单,分别为北京、多伦多、巴黎、伊斯坦布尔和大阪,最终北京凭借其在第二轮
  • 1131年
  • 伊莎贝尔·巴霍尔伊莎贝尔·巴霍尔(德语:Isabell Bachor,1983年7月10日-),德国女子足球运动员,场上位置是中场。她曾代表德国国家队参加2004年夏季奥林匹克运动会足球比赛,获得一枚铜牌。