Marshalling (计算机科学)

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

相关

  • 地名地名即一个地区的名称。地名的形成,受该地的地理、历史、民族和语言所影响,是社会发展的产物。地名可被视为一种“活化石”,了解该地区的环境发展和变迁。地名一般可分为通名和
  • 不可接触者贱民(英语:Dalit、印地语:अस्पृश्यता),又称达利特人。是印度和尼泊尔(卡斯人和廓尔喀)种姓制度的最低阶层,主要以“秽不可触(Untouchable、印地语:अछूता)”为其特征。达
  • 复响复响,亦称作响度重振(英文:Loudness recruitment),是指响度随声强异常快速的增加。复响是感觉神经性耳聋的一个常见症状,在很多情况下可以作为诊断感觉神经性耳聋的依据之一。复响
  • 6G第六代移动通信系统(英语:6th generation mobile networks或6th generation wireless systems),简称6G,是指第六代移动通信技术,是5G系统后的延伸。目前仍在开发阶段。2018年芬兰
  • 加文·詹姆斯加文·詹姆斯(Gavin James,1991年7月5日-),是一名来自爱尔兰都柏林的歌手和作曲家。2013年3月和2016年3月,他分别获得了选择音乐奖(英语:Choice Music Prize)和爱尔兰年度歌曲奖。他
  • 初婚年龄初婚年龄(英文:first marriage age)指某一特定期间内初次结婚之新郎新娘的平均年龄。其计算公式为:平均初婚年龄=(各年龄初婚人数*初婚年龄)之和/各年龄初婚人数之和。初婚时间较早或
  • 1850年西昌地震1850年西昌地震,是指发生在1850年9月12日(清道光三十年八月初七日)中国四川西昌的一场7.5级地震,震中位置北纬27.7°,东经102.4°。1850年9月12日,西昌忽然地震,地下雷鸣,阖城号呼鼎
  • 台中市南区信义国民小学坐标:24°07′18″N 120°40′11″E / 24.12167°N 120.66972°E / 24.12167; 120.66972台中市南区信义国民小学,简称信义国小,是台湾台中市的一所市立国民小学,位于台中市南区
  • 范叔蒌范叔蒌(?-445年),南阳顺阳(今河南省淅川县李官桥镇)人,顺阳范氏第七代。其父范晔在南朝宋其间曾任太子詹事及著有史学著作《后汉书》。另有两兄弟,范蔼、范遥。后因其父范晔谋反罪名被满门抄斩牵连。
  • 高会军高会军(1976年1月-),男,汉族,黑龙江集贤人,中国自动化专家,享受国务院政府特殊津贴专家,长江学者特聘教授,现任哈尔滨工业大学航天学院教授、博士生导师。1976年出生于黑龙江省集贤县的一个农场,父母都是农场的普通职工。由于家庭贫困,初中毕业时他选择了读中专,1991年进入陕西第一工业学校(现陕西国防工业职业技术学院)学习机械制造。中专毕业时通过高等教育自学考试获得工业企业管理专科学历,之后进入工厂里当磨工,后又通过自学考试获得机电一体化工程专业本科学历。1998年考取沈阳工业大学研究生,于2001年