Marshalling (计算机科学)

✍ dations ◷ 2025-12-03 07:40:35 #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特别处理远程对象。

相关

  • 逻辑学家逻辑学家是学术研究主题为逻辑学的哲学家,数学家或其他人。下面按姓氏的英语的字母顺序列出著名的逻辑学家。
  • 非洲林狸属非洲林狸属(学名:Poiana)是食肉目灵猫科的一属,分布于非洲,现存2种:
  • 切尔西 (马萨诸塞州)切尔西(英语:Chelsea)是美国马萨诸塞州沙福克县的一个城市,位于波士顿东北。面积6.4平方千米,是该州面积最小的城市。根据美国2000年人口普查,人口35,080人。1624年白人开始殖民,17
  • 各国萤石产量列表这是一个2006年的各国萤石产量列表,主要基于2008年7月 英国地质调查局 的数据。
  • 布拉戈维申斯克 (巴什科尔托斯坦共和国)坐标:55°2′6″N 55°58′41″E / 55.03500°N 55.97806°E / 55.03500; 55.97806布拉戈维申斯克(俄语:Благовещенск)是俄罗斯巴什科尔托斯坦共和国的一座城市,位于
  • 尊室檀尊室檀(越南语:Tôn Thất Đàn/.mw-parser-output .han-nom{font-family:"Nom Na Tong","Han-Nom Gothic","Han-Nom Ming","HAN NOM A","HAN NOM B","Ming-Lt-HKSCS-UNI-H","
  • 周忱明《三才图会》载《工部尚书周文襄公像》《周易大全》、《书传大全》、《诗经大全》、《礼记大全》、《春秋大全》、《四书大全》、《性理大全书》、《双崖诗集》周忱(1380年
  • 鲍沃沙德·格利高里·莫斯(英语:Shad Gregory Moss,1987年3月9日-),是美国的说唱歌手和演员。他在13岁时便发行了出道专辑《Beware of Dog》,之后以小鲍沃(Lil' Bow Wow)作为艺名从事演出
  • 大杉久美子大杉 久美子(1951年7月10日-)是日本的女性儿歌及动画歌手。东京都出身,血型A型。现为古伦美亚音乐娱乐所属的艺人。精华学园高等学校毕业。大杉久美子于1964年加盟成为Crown Rec
  • 科内利厄斯·卡什小科内利厄斯·卡什(英语:Cornelius Cash Jr.,1952年3月3日-),美国NBA联盟前职业篮球运动员。他在1975年的NBA选秀中第2轮第6顺位被密尔沃基雄鹿选中。