Marshalling (计算机科学)

✍ dations ◷ 2025-10-24 05:46:22 #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特别处理远程对象。

相关

  • 心血管系统循环系统(英语:circulatory system),也称为心血管系统(英语:cardiovascular system)或血管系统(英语:vascular system)是负责血液循环,在细胞间传送养分(如氨基酸及电解质)、氧气、二氧化
  • 猫流感是一种在猫科动物发生的上呼吸道感染病。不过,现时普遍认为这个名称是错误命名,原因是猫流感一般并不是由流感病毒的感染而引起。相反的,它是一种综合征:一个用来泛指所有
  • 灶神灶君,俗称灶神、灶王、灶公,道教中称“九天司命定福东厨烟主保灶护宅真君”,简称“司命真君”,又有尊为“九灵元王保灶护宅天尊”、“九天云厨监斋使者”、“九天香厨妙供真君”
  • 费兰度·托利斯费尔南多·何塞·托雷斯·桑斯(西班牙语:Fernando José Torres Sanz,1984年3月20日-),简称为费尔南多·托雷斯,是一名已退役的西班牙足球运动员,曾效力J联赛球队鸟栖砂岩,司职前锋。
  • 夏桓宗夏桓宗李纯佑(1177年-1206年3月),夏仁宗子。性温和厚实。1193年10月16日,夏仁宗李仁孝去世,李纯佑即位,时年十七,改元天庆。桓宗基本上还能奉行仁宗时期的政治方针和外交政策,对内安
  • DNS沉洞DNS沉洞(DNS sinkhole),又名沉洞服务器、网络沉洞或者黑洞DNS指DNS服务器给出错误信息,从而防止访问特定域名。查询域名的DNS解析信息时,DNS沉洞会提供错误的结果,以便让攻击者将
  • 辽宁省博物馆辽宁省博物馆,是中国辽宁省内规模最大的综合性博物馆,国家一级博物馆、中央地方共建国家级博物馆。常规展览有历史陈列“古代辽宁”;“明清瓷器展”、“明清玉器展”、“中国古
  • 马克坚马克坚(1936年6月25日-2008年11月13日),是已故的中国足球运动员和足球界元老级人物。马克坚出生于云南,少年时期就凭借出色表现占据了四川队的主力门将位置,并入选了中国国家队,成
  • 鲍贻愿鲍贻愿,宋朝政治人物。鲍贻愿曾于1121年接替胡侃任华亭县知县一职,1126年由陈球接任。
  • 福盛和男福盛 和男(ふくもり かずお、1976年8月4日 - ),曾经效力过横滨湾星、大阪近铁野牛、东北乐天金鹰及美国职棒大联盟德州游骑兵。