Marshalling (计算机科学)

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

相关

  • 泌尿道泌尿系统(英语:Urinary system),有时也归类于排泄系统(英语:Excretory system)(Excretory system)的一部分,负责尿液的产生、运送、储存与排泄。人类的泌尿系统包括左右两颗肾脏、左右
  • 地方教会教会是基督徒对基督教组织的习惯称呼,可以指:凡世所有罪恶和圣洁的基督徒的集合(普世教会)、天上所有圣洁的基督徒的集合(神的国度)、拥有共同教义和礼仪的基督徒的集合(教派)、一个
  • 渡边凌磨 (足球运动员)渡边凌磨(1996年10月2日-),日本足球运动员,司职中场,现效力山形山神。左右脚能力均衡的渡边凌磨身高1米75,主要司职进攻型中场,同时还能胜任影锋和左边锋位置。与很多日本球员一样渡
  • 役所广司役所广司(日语:役所 広司/やくしょ こうじ ,1956年1月1日-),日本知名男演员,本名桥本广司,长崎县谏早市出身,曾获得多项电影奖。役所广司在长崎县立大村工业高等学校毕业后,通过了公务
  • 辛海棉辛海棉枢机(英语:Cardinal Jaime Lachica Sin,1928年8月31日-2005年6月21日)是天主教枢机和前天主教马尼拉总教区总主教。他被认为是菲律宾的两次社会运动-第一次和第二次的“人民
  • 明朝进士列表本列表依年号罗列明朝科举考试进士金榜。洪武年间共举办科考6次,发榜7次,共取一甲21名、二甲223名、三甲686名,合930名,平均每科取士155人。建文年间共举办科考1次,共取一甲3名、
  • 柯汶利柯汶利 (英语:Sam Quah, 1985年8月2日-)是一位马来西亚华人导演。1985年出生于马来西亚槟城,祖籍福建。2011年毕业于世新大学口语传播系和广告系双学位,后毕业于国立台北艺术大
  • 共和国国防委员会共和国国防委员会(加泰罗尼亚语:Comitès de Defensa de la República,简称 CDR),全称加泰罗尼亚共和国国防委员会,是在加泰罗尼亚地区一个委员会网络。其最初目的是促进加泰罗尼
  • 儒利奥·塞萨尔 儒利奥·塞萨尔·苏亚雷斯·德埃斯平多拉(葡萄牙语全名:Júlio César Soares de Espíndola,简称儒利奥·塞萨尔,Júlio César;1979年9月3日-),前巴西足球运动员,场上司职守门员,2018年4月退役。最后效力巴甲俱乐部弗拉门戈。塞萨尔效力的首间职业俱乐部是巴西足球甲级联赛的弗拉门戈,他曾为巴西队赢得了17岁以下南美国家杯的冠军,又于2004年的美洲国家杯中表现极为出色,分别在四强对智利时被选为全场最佳球员,并在决赛中的互射点球时扑救出多球阿根廷队的点球,为
  • 利沃夫教授大屠杀1941年7月,来自波兰利沃夫市(现属乌克兰)的25名波兰学者及其家人被纳粹德国占领军杀害。 纳粹希望通过针对性消灭波兰的杰出公民和知识分子来阻止反纳粹活动,并削弱波兰抵抗运动(英语:Polish resistance movement in World War II)的决心。据目击者称,处决是由党卫队旅队长卡尔·艾贝哈德·薛恩加特(英语:Karl Eberhard Schöngarth)指挥的一支别动队部队实施的,身着德国军服的乌克兰翻译也参与了屠杀。 在1939年9月德苏入侵波兰之前,仍属于波兰第二