Marshalling (计算机科学)

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

相关

  • 磷钼酸磷钼酸(Phosphomolybdic acid)也称为十二钼磷酸,简称PMA,是化学式为H3PMo12O40的黄绿色无机化合物,是一种杂多酸,磷钼酸可溶于水及极性的有机溶剂(例如乙醇)。磷钼酸水合物为黄色固
  • 自我概念自我概念(或称自我建构、自我认同、自我观点或自我结构)是一个人关于自己的信念的集合。一般而言,自我概念体现了“我是谁?”这一问题的答案。自我概念由一个人的自我图式组成,并
  • 蜀语蜀语,又称为巴蜀语、蜀方言,是西汉至元代流行于巴蜀地区(现中国四川省及重庆市一带)的主要语言,是古汉语的分支之一。由于明初与清初的两次“湖广填四川”大移民运动使巴蜀地区的
  • 亚历山大·达尼洛维奇·缅什科夫亚历山大·达尼洛维奇·缅什科夫(俄语:Алекса́ндр Дани́лович Ме́ншиков,1673年11月16日-1729年11月23日) ,生于俄罗斯帝国莫斯科,彼得大帝在位时期
  • 冰川锅穴冰川锅穴,又称冰臼(英语:Moulin,起源于法语Mill ),是一种冰川特有的现象。它的形成犹如古语中的“水滴石穿”:冰川表面融化的水沿着冰川裂隙向下流动而缓慢形成深坑。由于冰层的巨
  • 谈荔孙谈荔孙(1880年-1933年2月25日)字丹崖,中国银行家,大陆银行创办人。 谈荔孙1880年出生于淮安府山阳县谈公馆(今江苏省淮安市楚州区镇淮楼东路汉韩候祠旁)。祖父谈静山曾任四川夔州
  • 割补理论在数学中,尤其是拓扑学,割补理论(surgery theory)是一种用于从另一流形对象产生一个有限维流形、并在“控制”之下的理论方法。其最初是用于处理光滑流形,之后陆续被应用于分段
  • 黄策黄策(?-?),字嘉猷,山西蒲州人,陕西西安府咸宁县(今属西安市)匠籍,明朝政治人物。陕西乡试第四十三名。隆庆五年(1571年)辛未科进士。次年,任河南尉氏县知县。明神宗万历年间,累官直隶保定府
  • 赌徒一代之不动血祭‘赌徒一代之不动血祭’(博徒一代 血祭り不動)为1969年上映的日本动作片和赌博片,此为已故知名影星市川雷藏的遗作。
  • 强硬路线强硬路线 (丹麦语:Stram Kurs)是由丹麦律师拉斯穆斯·帕鲁丹(英语:Rasmus Paludan (politician))于2017年在丹麦成立的极右翼政党。该党几乎完全与其创始人及其反伊斯兰激进主义和示威活动有关。该党由拉斯穆斯·帕鲁丹于2017年创立。在2017年的地方选举中,它在6个自治市开展了竞选活动,但没有在任何一个自治市获得超过200张选票,这让该政党远没有获得地方议会的席位。他们还在丹麦五个地区中的两个地区进行了竞选,但都没有成功。帕鲁丹在YouTube上走红,截至2019年4月