- (3分)实现全局状态的快照算法,并监控下列程序:两个进程P和Q用两个通道连成一个环,它们不断地轮转消息m。在任何一个时刻,系统中仅有一份m的拷贝。每个进程的状态是指由它接收到m的次数。P首先发送m。在某一点,P得到消息且它的状态是101。在发送m之后,P启动快照算法,要求记录由快照算法报告的全局状态。
- (3分) 在Linux平台,利用开源RPC代码,实现锁服务(Lock Service),锁服务包括两个模块:锁客户,锁服务器,两者通过RPC通信。需要实现两个功能:(1)客户发acquire请求,从锁服务器请求一个特定的锁,用release释放锁,锁服务器一次将锁授予一个客户。(2) 扩充RPC库,实现at-most-once执行语义,即消除重复的RPC请求。
at most once最多只有一次语义(思考rpc请求没到server,或者server rsp没返回给client,或者超时问题。 例如同一个client多次acquire当做一个acquire处理)
实验一:
实验配置
语言: golang 1.10
实验思路:
1. 两个process 分别监听4000,4001端口。Process之间通过tcp建立connection