Marshalling (计算机科学)

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

相关

  • 座囊菌纲参见内文座囊菌纲(学名:Dothideomycetes)是子囊菌门盘菌亚门下的一纲,共包含11个目、90个科、1300个属及超过19000个种。传统上本纲的大多数真菌都被算作腔菌(loculoascomycetes),
  • 阿拉巴马大学阿拉巴马大学(英语:University of Alabama),位于美国阿拉巴马州塔斯卡卢萨,是一所著名的公立大学,成立于1831年。阿拉巴马大学是阿拉巴马州规模最大的大学之一。其橄榄球队“红潮
  • 大陆漂移学说大陆漂移学说是地球大陆相对于彼此的运动,因此似乎在海床上“漂流”。最初由亚伯拉罕·奥特柳斯在1596年提出,后来德国科学家阿尔弗雷德·魏格纳在1912年加以阐述,中文中“大陆
  • 夏季奥林匹克运动会击剑比赛击剑自首届奥运会起成为是夏季奥运会比赛项目之一。
  • 藏裔加拿大人藏裔加拿大人,是加拿大亚裔一小部分。但他们是亚洲以外最大的海外藏人群体。在20世纪70年代初开始有藏族移民加拿大。到2006年,加拿大的藏族人口估计在5,820,而且持续成长。大
  • 吴仲贤吴仲贤(1911年5月12日-2007年8月3日),动物数量遗传学家、农业教育家,中国动物数量遗传学科的奠基人。湖北省汉川县人。吴仲贤长期从事家畜数量遗传学的教学与研究。吴仲贤1933年
  • 维塔利·丘尔金维塔利·伊万诺维奇·丘尔金(俄语:Виталий Иванович Чуркин,IPA:.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Seg
  • 千万里千万里(朝鲜语:천만리/千萬里,1543年-?),字远之,号思庵,明朝中叶军事人物,后归化朝鲜。千万里原籍河南。壬辰倭乱爆发后,千万里以调兵领粮使兼总督将的身份,与提督李如松一起率领明军进入
  • 马杜普尔马杜普尔(Madhupur),是印度贾坎德邦Deoghar县的一个城镇。总人口47349(2001年)。该地2001年总人口47349人,其中男性25235人,女性22114人;0—6岁人口7507人,其中男3901人,女3606人;识字
  • 成秉淑成秉淑(韩语:성병숙,1955年1月20日-),韩国女演员。