A Libertine of Computer Science

Priority Inversion [优先级反转]

Priority inversion[优先级反转,或者优先级翻转],单从字面理解可能会认为是CPU调度线程的时候,两个线程的优先级互换,这个理解也是我第一次听到这个词的想法,但是和真实意思相去甚远,写在这里,也是提醒自己凡事不要想当然

GFS Rethink [GFS回顾]

首先明确一点,分布式文件系统比如NFS,AFS,还有GFS与现在流行的分布式版本控制系统比如svn,git不同[主要在并发操作和同步异步机制上的区别]。简而言之,分布式版本控制系统构建在分布式文件系统之上,文件系统只完基本的同步和并发操作,相当于API,然后版本控制系统再指定自己的详细逻辑来处理并发和同步问题,弄清这点,才能理解为什么文件系统并不纠结与处理复杂的并发和同步操作。

Idempotent [幂等性]

在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同,比如客户端的一个重新连接函数,它可以不断执行直到成功连接上服务器,多次执行连接函数不会影响服务器的状态。但是客户端的对server的append操作就不是idempotent operation,因为每一次append操作都会对server进行修改从而改变server的状态。这个概念在分布式系统中发挥很大作用。

Concepts of Unix File System [Unix文件系统基本概念]

在介绍Unix文件系统之前先来介绍一下机械硬盘的典型构造中的基本概念[在unix问世的时代,还没有SSD],机械硬盘主体是由多个圆形硬盘盘所组成的,依据硬盘盘能够容纳的数据量,而有所谓的单碟(一块硬盘里面只有一个硬盘盘)或者是多碟(一块硬盘里面含有多个硬盘盘)的硬盘,一般情况下都是多碟。

Mesa Monitor [Mesa管程]

Mesa管程的出现主要是针对了Hoare管程的一个缺点。Hoare管程是p进程唤醒了q,然后p进程去等待,让q进程执行 这样就会引起一次进程的切换,因为p进程要等待让q进程上CPU执行, 当q进程执行完了,然后再把p进程调度上CPU, p进程再来一次切换,所以Hoare管程会导致两次额外的进程切换。因为有着这样的多余开销,MESA管程提供了一种解决思路,p进程唤醒了q,然后p进程继续执行并不等待q执行,q进入等待队列准备在未来某一时刻执行。

Hoare Monitor [Hoare管程]

在Hoare管程中,因为管程是互斥进入的,所以当一个进程试图进入一个已被占用的管程时,应该在管程的入口处等待。为此,在管程的入口处设置了一个进程等待队列,如果出现了P进程唤醒了Q,那么P等待Q执行,如果进程Q执行,又唤醒了进程R,那么Q等待R执行,这就是HOARE语义。因此我们会看到管程中可能会出现多个进程。为了管理这些管程内的等待队列,在管程内就专门设置了一个进程等待队列,这个队列里的进程会比入口等待队列的进程的优先级高。

Build RDMA Connection [基于RDMA通信]

RDMA全称是Remote Direct Memory Access,中文翻译为远程直接数据存取。其核心理念就是通过RDMA硬件不经操作系统直接进行数据的传输,从而加快数据传输的性能。我使用的是InfiniBand RDMA[本文剩下地方RDMA都指的是InfiniBand],我从网上找到一个关于建立Server/Client通信的一个tutorial [see reference for copyright],虽然短,但是基本上关键点都进行了说明,这篇blog是我自己的根据tutorial完成后,对原文的翻译和自己的理解。

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17]