Marshalling (计算机科学)

✍ dations ◷ 2025-11-20 12:44:43 #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特别处理远程对象。

相关

  • 慢性疲劳综合征慢性疲劳(倦)症候群(英语:chronic fatigue syndrome, CFS、myalgic encephalomyelitis (ME)),又称为肌痛性脑脊髓炎(myalgic encephalomyelitis),(脊髓炎是有争议的,另一种说法为可
  • 锁胸筋膜锁胸筋膜(clavipectoral fascia)为胸大肌下方一个强而有力的筋膜,被覆于胸小肌的浅层。锁胸筋膜包裹了包含胸小肌及锁骨下肌(英语:subclavius)之间的空间,并为腋静脉(英语:axillary v
  • 耶弗拉兹公司耶弗拉兹公司 (俄语:Евраз)是一家垂直整合钢铁与矿山的跨国公司。总部位于伦敦,运营于俄罗斯境内,在乌克兰、哈萨克斯坦、意大利、捷克、美国、加拿大、南非也有业务。 2015
  • 军事用途海豚美国海军海洋哺乳动物专案计划(英语:Navy Marine Mammal Program,简称NMMP),是一个由美国海军执行的专案计划,用来研究海洋哺乳动物在军事方面的用途,此外,也训练那些在马戏团表演的
  • 佩利河佩利河(Pelly River)是加拿大的一条河流,是育空河的源流之一。佩利河发源于马更些山脉,总长度约530km (329 mi)。罗斯河、法罗、佩利克罗辛等城镇皆位于佩利河畔。该河流以哈德
  • 山柰山柰(学名:)亦称三柰、沙姜、番郁金、三藾、山辣、土麝香、埔姜花,是一种姜科山柰属的植物。山柰为多年生宿根草本植物,地下具块状根状茎,有香气,无地上茎;少数基生卵圆形叶,叶柄下延
  • ALL the SINGLES《ALL the SINGLES》是日本男子音乐组合橘子新乐园的第五张精选辑,2010年7月14日由gr8! records在日本发行。
  • 叉舌蛙科Dicroglossinae Occidozyginae叉舌蛙科(Dicroglossidae)是蛙总科下的一个科,分布于亚洲和非洲的热带、亚热带地区,其中大部分又分布于亚洲。它曾是蛙科的一个亚科。该科下含13-1
  • 中国建筑第五工程局中国建筑第五工程局有限公司(China Construction Fifth Engineering Division Corp., LTD,简称中建五局),原为中国建筑五局,成立于1981年4月8日,于2007年12月12日改制为有限责任公
  • 170街车站 (IRT杰罗姆大道线)170街车站(英语:170th Street station)是纽约地铁IRT杰罗姆大道线的一个慢车地铁站,位于布朗克斯170街及杰罗姆大道(英语:Jerome Avenue)交界,设有4号线(任何时候停站)列车服务。车站于1917年6月2日作为杰罗姆大道线的首部分投入服务,设有来往王桥路车站和149街车站的接驳服务。当时王桥路车站只使用南行月台。1918年7月17日改为直通至IRT莱辛顿大道线。此站于2004年翻新。此高架车站设有两个侧式月台和三条轨道。 维基共享资源上有关170街车站 (IRT杰罗姆大