Marshalling (计算机科学)

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

相关

  • 肠炎小肠炎(英语:Enteritis)是小肠的发炎。最常见的原因是食物或饮料被致病性微生物污染,如沙雷氏菌(英语:Serratia)。也可能是其他原因,例如非类固醇消炎止痛药、古柯碱、放射治疗,以及
  • 西西里岛坐标:37°30′N 14°00′E / 37.500°N 14.000°E / 37.500; 14.000西西里(意大利语:Sicilia ,)是意大利南部的一个自治区。西西里占地25,708平方公里,人口数为500万,是意大利最大
  • 中国国民党中央委员会中国国民党中央委员会,简称国民党中央或中央党部,是中国国民党的最高执行机关,由中国国民党全国代表大会选举产生的中央委员组成,整个组织包括以主席为首的干部群,以及数个党务单
  • 亚希莫夫亚希莫夫(捷克语:Jáchymov;德语:Sankt Joachimsthal 或 Joachimsthal)是捷克的城镇,位于该国西北部,距离博日达尔7公里,由卡罗维发利州负责管辖,面积51.11平方公里,海拔高度672米,2006
  • 王晓书王晓书,台湾听障模特儿、电视节目主持人、手语主播、业余作家、手语翻译员,实践家专服装设计科毕业。 她在三岁时,因为发烧延误治疗,导致失聪,从此进入无声的世界。幼儿园到高中
  • 谷关温泉坐标:24°12′12″N 121°00′33″E / 24.2033333°N 121.0091667°E / 24.2033333; 121.0091667谷关温泉位于台湾台中市和平区博爱里的大甲溪河谷。依地质分类属于雪山山脉
  • 感知并回应感知并回应(Sense and respond)在控制理论中已使用了数十年之久,主要是在闭回路系统中,会比较量测到的数值及理想值之间的差距,并且调整系统使两者的差异越小越好。感知为控制系
  • 回到未来II《回到未来续集》(英语:Back to the Future Part II)是经典美国科幻喜剧电影《回到未来系列》的第二集,于1989年上映。由Robert Zemeckis执导,Bob Gale编剧,迈克尔·J·福克斯(Mich
  • 全面崩坏安德斯·弗伦(英语:Mood Melodies)理查德·博德曼(英语:Richard Boardman)巴勃罗·鲍曼(Pablo Bowman)丹尼尔·博伊尔(Daniel Boyle)莎拉·布兰查德(Sarah Blanchard)安德斯·弗伦The Six(英语:The Six (songwriting collective))贡纳·格雷夫(英语:Gunnar Greve)Chris "TEK" O'Ryan(英语:Chris O'Ryan)珍娜·安德鲁斯(英语:Jenna Andrews)全面崩坏(
  • 沃兰 (怀俄明州)沃兰(英语:Worland)是美国怀俄明州的城市,也是华谢基县的县治所在地。该市的人口在2000年为5,250人,2010年有5,487,2011年则估计有5,458人。