分布式系统阅览笔记(七)-操作系统的支持

分布式系统阅读笔记(七)-----操作系统的支持

介绍)

前面主要介绍了一些直接通信和间接通信,包括一些中间件的一些技术,这次我学习的内容是层级再往下,用一句话形式就是:在分布式系统中的操作系统级别对于中间件的支持。在这篇中,主要关注与操作系统级别对于通信的一些支持,包括RPC这样的远程调用等。

操作系统的层次)

操作系统是一个凌驾于纯硬件资源上面的一个软件系统,封装了对于硬件的抽象,在上面有内存管理,I/O管理,CPU的管理等等。

1.中间件运行在各种各样的操作系统之上,在分布式系统中的各个节点中。不同节点支持着共有的中间件层。

2.所有的硬件资源在分布式系统中都以接口的形式暴露给各个服务。

3.一个操作系统的核心由进程管理,通信管理,线程管理,内存管理和监测管理等模块组成。

保护)

这里的保护主要的强调的是非法访问,包括一些非法的操作。比如说你只有读A文件的权限,你就不能执行修改文件的操作,当你有写权限的功能时,你就不能做出删除文件的操作。

1.一个操作系统的内核是指一堆用来进行操作系统初始化的一些操作的代码。

2.在内核中还设置了很多的地址空间用来控制不同进程之间的访问,一个地址空间是一系列的虚拟内存地址。

3.一个进程可以通过一个异常比如说中断或者说是系统调用从用户地址空间转换到内核地址空间。

进程和线程)

进程和线程这2概念相信每个人都听过,显然进程的概念更大,线程是被包含于进程中的。

1.一个进程关联着许多的活动,一个进程内部包含了一个执行环境和一个或多个线程。

2.一个最初的执行环境包括:一个地址空间,一个沟通接口,例如socket,一些高级别的资源,比如file等等。

3.地址空间指的是一个进程的虚拟内存的管理单元,他往往比较大,包含了很多region区,在不同的region区内,包含了一些不同的内容属性,线程操作权限,地址大小等等。

4,.我们所说的虚拟内存系统其实是把内存地址都映射到了各个真实的物理内存地址上了。

5.在操作系统中创建一个process进程,可以看做是2步操作,第一选择一个进程的创建的host机子,然后再上面创建执行环境。

6.在进程的调用fork方法进行复制进程操作时,是重写复制出了一个跟父进程一样的进程,他们一开始是公用同一个region区的,地址空间都是完全一样的,当子进程要修改里面的内容时,才会额外复制出地址空间,这叫做copy-on-write写时复制策略。

7.创建一个线程的开销比创建一个进程的开销小,因为线程还是在他的执行环境中,周围的资源并没有什么改变,而进程还要重新创建一个执行环境,同理线程切换也比进程开销小。

通信和调用)

操作系统支持了一些现在比较流行的通信协议,比如TCP/IP协议。

1.杂分布式系统中,通信的调用最大的问题还是在于高延时。数据传输的时间可能比调用的操作时间更长。

2.一个完整的远程调用过程会经过下面的一个过程:1.客户端对数据的集成,包装2.数据的拷贝,因为中间会涉及到各个层的buffer3.包的初始化,要往里面初始化头部的内容,和算校验和等等。3.线程调度和上下文的切换,RPC在内核级别的通信操作。以上这些都是有可能再次latency延时的原因。

3.这里还提到了一个LPRC,轻量级RPC,lightweight PRC,指的是客户端和服务端都在同台机子上,相当于本地调用。

4.通信之间的调用模式分为同步的方式还有异步调用的方式,在后者的里面在细分,还有一种较为永恒异步调用,就是用来解决常常会失效连接的情况的。QRPC就是一个的实现例子,将异步的调用请求存在队列中,你连接如果断开了,等你连接上了,请求还是在的。

操作系统的结构)

在操作系统的结构划分中,主要分2类monolithic kernel(单内核),和micro kernel(微内核),单内核是比较庞大的,各个模块的服务都是实现好的,也被用的比较广,比如现在的大部分的Linux系统,都是采用单内核的方式。而微内核则显得比较的小巧,但是他比较灵活,里面只包含了最简单,最基础的一些模块,整个的结构实现了最大的抽象化。

操作系统层的虚拟化)

操作系统的虚拟化用一句话说就是可以在同一台机子上运行多个操作系统,但是公用同一份的硬件资源。

1.操作系统的虚拟化可以用在下面的一些方面上:1.虚拟机可以很方面的进行移植。2.可以用来做一些云计算相关的事,利用强大的物理条件设施。3.在单一的PC机上跑多个OS系统。

2.要做到操作系统的虚拟化,就要在硬件资源和上层各个操作系统镜像之间再来一层virtual machine monitor,虚拟机的监视层。这个monitor为上层的虚拟的操作系统提供资源接口,同时将镜像中的资源又映射到底层的资源。

3.一个学习的例子就是Xen,他是一个虚拟机监视器,Xen是一个做操作系统虚拟化的典型例子。他的Xen hypervisor就是干中间层的一个功能。


参考文献:<<Distributed Sysytems Concepts And Design>>原版第五版,author:George Coulouris,Jean Dollimore, Tim Kindberg,Gordon Blair