sylixos中rpc简介

author author     2022-10-05     371

关键词:

1、概述

SylixOS中移植了SUN公司的开源RPC库——libsunrpc,主要用于远程过程调用,现对其通信机制及远程调用过程做简单的介绍。

2、RPC通信机制

    2.1 RPC介绍

RPCRemote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCPUDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

RPC采用客户机/服务器模式,请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。

2.2 调用分类

RPC调用分以下两种:

1)同步调用:客户方等待调用执行完成并返回结果。

2)异步调用:客户方调用后不用等待执行结果返回,但依然可以通过回调通知等方式获取返回结果。若客户方不关心调用返回结果,则变成单向异步调用,单向调用不用返回结果。

异步调用和同步调用的区分在于是否等待服务端执行完成并返回结果。

2.3 RPC调用过程

2.3.1 一次调用步骤

RPC一次远程调用的具体步骤如下图所示。

技术分享图片

1)客户调用一个称为客户程序存根(client stub)的本地过程,对客户来说,客户存根看起来就是它想要调用的真正的服务器过程。客户程序存根的作用在于把待传输给远程过程的参数打包,转换成某种标准格式,然后构造一个或多个网络消息。

2)构造的网络消息由客户程序存根发送给远程系统,这通常需要进行系统调用(如writesendto)。

3)该步骤为网络消息传输过程,使用的典型网络传输协议为TCP或者UDP

4)远程系统上的服务器程序存根(server stub)一直在等待客户的请求,负责从接收到的网络消息中解析出客户的参数。

5)服务器程序存根执行一个本地过程调用以激活真正的服务器函数,将上一步解析出的参数传入该服务器过程。

6)当服务器过程完成时,它向服务器程序存根返回其运行结果。

7)服务器程序存根对返回值进行转换,并将其构造成一个或多个网络消息,以便发送给客户。

8)消息通过网络传送回客户端。

9)客户程序存根从本地内核中读出网络消息(readrecvfrom)。

10)客户程序存根对返回值进行必要的转换后,将结果返回给客户程序,这一步看起来就是一个普通的过程返回给客户。

2.3.2如何唯一确定远程过程

一个远程过程是由三要素来唯一确定:

(1)       程序号

(2)       版本号

(3)       过程号

程序号用来区别一组相关的并且具有唯一过程号的远程过程。一个程序可以有多个不同的版本,而每个版本的程序都包含一系列能被远程调用的过程,每个过程则有其唯一标识的过程号。

客户端与服务器端约定好某个远程过程的程序号、版本号和过程号。服务器程序存根根据程序号和版本号注册一个远程调用程序,该远程调用程序中再根据过程号去调用该远程过程;客户根据程序号和版本号调用RPC接口获取一个客户端句柄,然后调用句柄内保存的回调函数,传入客户主机的入参、远程过程号、返回值、数据格式转换回调函数等,最终实现调用一个唯一确定的远程过程。

2.4 服务器捆绑

客户端和服务器端建立网络连接时,客户端是如何发现服务器端的端口号的呢?首先我们需要注意的是,运行RPC服务器的任何主机必须先运行端口映射器,然后RPC服务器先绑定一个临时端口号,再向本地端口映射器注册该临时端口。当一个客户启动时,它必须先跟服务器主机上的端口映射器联系,询问服务器的临时端口号,然后再跟这个临时端口号上的服务器联系,建立网络连接。如下图所示。

技术分享图片

2.5 RPC超时和重传策略

RPC的超时和重传策略中使用了两个超时值:

(1)       总超时(total timeout):一个客户等待其服务器的应答的总时间量,TCPUDP都使用该值。

(2)       重试超时(retry timeout):只用于UDP 是一个客户等待其服务器的应答期间每次重传请求的相隔时间。

因为TCP是一个可靠的协议,所以不需要重试超时,TCP请求流程如下图所示。如果服务器主机没有接收到客户的请求,客户的主机就会超时并重传该请求。当服务器主机接收到客户机的请求时,服务器主机会向客户主机确认收到本次请求。如果服务器的确认丢失,导致客户主机重传该请求,那么当服务器主机接收到这个重复的数据时,它将丢弃该数据,并再次发出一个确认。

技术分享图片

有了可靠的协议后,可靠性(超时、重传、重复数据或重复确认的处理)就由传输层保障。由客户主机RPC层发出的一个请求将由服务器主机RPC层作为一个请求接收(如果该请求没有得到确认,那么客户主机将会得到错误提示),而不管网络层和传输层发生什么。

2.6 XDR(外部数据表示法)

使用RPC进行通信的不同主机,它们的数据格式可能不同。首先,数据类型可能有不同的大小;其次,各主机可能存在大小端字节序的差异,所以RPC使用外部数据表示法(XDR)来消除这些差异,将数据包装在独立于介质的结构中使得数据可以在异构的计算机系统中传输。从局部表示转换到XDR称为编码,从XDR转换到局部表示称为译码。SylixOS内核中的libsunrpc库中,在“/libsunrpc/sunrpc/rpc/xdr.h”中提供了用于数据格式转换的接口。


sylixos中gic通用中断控制器——gic简介

1.GIC简介操作系统中,中断是很重要的组成部分。有了中断系统才可以不用一直轮询(polling)是否有事件发生,系统效率才得以提高。一般在系统中,中断控制分为三个部分:模块、中断控制器和处理器。其中模块通常由寄存器... 查看详情

sylixos中cpu性能计算

1、概述本篇主要介绍SylixOS中CPU性能计算方法。2、简介BogoMips是SylixOS中衡量CPU运行速度的一种标准,但只能用来粗略计算CPU的性能,并不十分精确。SylixOS中关于CPU性能计算的方法位于内核文件"libsylixos/SylixOS/kernel/interface/CpuPerf.c"... 查看详情

sylixos下内核线程简介

...程则共享使用进程内所有资源,例如进程文件描述符表。SylixOS对于一些系统级功能是通过使用内核线程进行管理使用。2.内核线程   基于SylixOS的1.5.3的内核,在终端上输入命令“ts”如图2.1所示。图2.1 “ts”命令2.... 查看详情

sylixos字符设备驱动框架

1、概述本文档主要介绍SylixOS中字符设备驱动框架,适用于在SylixOS集成开发环境下进行字符设备驱动开发的学习。注:文中xxx是指具体设备名,编写对应驱动时,自行命名(如RTC、COMPASS等)。2、SylixOS字符设备驱动简介字符设备... 查看详情

sylixos多路网卡冗余管理简介

...网络的可靠性,实现冗余设备热切换是一种常见的方法。SylixOS支持的多路网卡冗余管理模块是一款网卡故障保护管理模块。它提供一种故障保护机制,对网络设备进行冗余备份,当其中一个设备由于某种原因不能正常工作时,... 查看详情

sylixos异步工作队列

1、概述 本篇主要介绍SylixOS中异步工作队列(JobQueue)的原理及相关函数接口。 2、简介 异步工作队列是SylixOS中将工作推后执行的一种机制,该机制将推后的工作交由一个内核工作线程去执行,其特点在于它允许重新调度甚至... 查看详情

sylixos中ppc架构系列介绍-cache篇

...CPU与内存间的一种容量较小但速度很高的存储器。 2.SylixOS中Cache架构SylixOS中为了对Cache进行有效的管理,提 查看详情

sylixos中eeprom设备驱动实现

1.开发环境操作系统:SylixOS 编程环境:RealEvo-IDE3.1.5硬件平台:SAMA5D2Xplained开发板2.EEPROM简介       EEPROM,或写作E2PROM,全称电子抹除式可复写只读存储器(英语:Electrically-ErasableProgrammableRead-OnlyMe 查看详情

sylixos中tpsfs格式化流程简析

...; TPSFS文件系统是一款掉电安全的文件系统,该系统是SylixOS内建文件系统(专利技术),该文件系统有如下特点:采用B+树存储文件数据,读取与定位速度快,空间管理效率高;对数据使用原子操作,掉电安全;64位文件系统... 查看详情

sylixos网络数据异步处理原理

一.网络数据异步处理简介SylixOS中为了解决网络数据拥堵的问题,采取数据异步处理的方式,提供了网络工作队列。采用网络工作队列,可以使得网卡驱动程序无需阻塞等待处理完成。SylixOS内核网络netdev封装了函数netdev_notify,... 查看详情

sylixos下yaffs挂载参数说明

...议下发布的,可在其网站免费获得源代码。YAFFS也是目前SylixOS下针对Flash类存储设备的主要文件系统。 YAFFS挂载参数说明 在SylixOS中,想要在Flash类存储设备上挂载YAFFS文件系统,需要创建struc 查看详情

sylixos块设备驱动模型

...立于其他块而读写。磁盘是最常见的块设备。2.技术实现SylixOS实现了兼容POSIX标准的输入输出系统,SylixOS的I/O概念继承了UNIX操作系统的概念,认为一切皆为文件。本章介绍SylixOS在I/O层之下提 查看详情

sylixos中select原理及使用分析(代码片段)

1.select接口简介1.1select接口使用用例select是操作系统多路I/O复用技术实现的方式之一。多路I/O复用技术大致使用场景为:构造一张感兴趣的文件描述符列表,然后调用多路复用的IO接口,在接口中进行阻塞,直到这些描述符中的... 查看详情

sylixos热插拔概述

...热插拔系统还会收集热插拔相关信息,供应用程序使用。SylixOS热插拔系统结构如图1-1所示。65 查看详情

sylixos中pthread_cancel函数浅析

1知识简介1.1概述取消一个线程要确保该线程能够释放其所持有的任何锁、分配的内存,使整个系统保持一致性。在很多复杂情况下要保证这种正确性是有一定困难的。一种简单的线程取消:取消线程调用一个取消线程的函数,... 查看详情

sylixos驱动程序加载

SylixOS开发套件简介 SylixOS专用的集成开发环境是RealEvo-IDE。RealEvo-IDE是一套基于eclipse开发的SylixOS集成开发环境,包括一系列开发调试插件,提供完整的SylixOS嵌入式开发解决方案,集设计、开发、调试、仿真、部署、测试功能... 查看详情

sylixos下的io系统调用(代码片段)

SylixOS标准I/O基本介绍1.1简介I/O系统又称作输入输出系统,SylixOS兼容POSIX标准输入输出系统,SylixOS的I/O概念继承了UNIX操作系统的I/O概念,认为一切皆为文件。与UNIX操作系统相同,SylixOS中的文件也分为不同的类型。1.2两种I/O类型I... 查看详情

第三周作业

一、阅读笔记(介绍Sylixos性能特点)1.Sylixos简介SylixOS是一款为嵌入式系统设计的硬实时操作系统(RTOS)。此系统于2006年开始开发工作。设计之初只是为了验证相关操作系统算法,后来经过多年的持续开发与改进,SylixOS已经不只... 查看详情