Mesa Monitor [Mesa管程]
Mesa管程的出现主要是针对了Hoare管程的一个缺点。Hoare管程是p进程唤醒了q,然后p进程去等待,让q进程执行 这样就会引起一次进程的切换,因为p进程要等待让q进程上CPU执行, 当q进程执行完了,然后再把p进程调度上CPU, p进程再来一次切换,所以Hoare管程会导致两次额外的进程切换。因为有着这样的多余开销,MESA管程提供了一种解决思路,p进程唤醒了q,然后p进程继续执行并不等待q执行,q进入等待队列准备在未来某一时刻执行。
Mesa管程的出现主要是针对了Hoare管程的一个缺点。Hoare管程是p进程唤醒了q,然后p进程去等待,让q进程执行 这样就会引起一次进程的切换,因为p进程要等待让q进程上CPU执行, 当q进程执行完了,然后再把p进程调度上CPU, p进程再来一次切换,所以Hoare管程会导致两次额外的进程切换。因为有着这样的多余开销,MESA管程提供了一种解决思路,p进程唤醒了q,然后p进程继续执行并不等待q执行,q进入等待队列准备在未来某一时刻执行。
在Hoare管程中,因为管程是互斥进入的,所以当一个进程试图进入一个已被占用的管程时,应该在管程的入口处等待。为此,在管程的入口处设置了一个进程等待队列,如果出现了P进程唤醒了Q,那么P等待Q执行,如果进程Q执行,又唤醒了进程R,那么Q等待R执行,这就是HOARE语义。因此我们会看到管程中可能会出现多个进程。为了管理这些管程内的等待队列,在管程内就专门设置了一个进程等待队列,这个队列里的进程会比入口等待队列的进程的优先级高。
操作系统主要是用来屏蔽复杂的硬件细节,高校的管理计算机资源,并为用户提供丰富的程序接口。操作系统是随着硬件的发展而发展的。下面回顾了一些基本概念。
RDMA全称是Remote Direct Memory Access,中文翻译为远程直接数据存取。其核心理念就是通过RDMA硬件不经操作系统直接进行数据的传输,从而加快数据传输的性能。我使用的是InfiniBand RDMA[本文剩下地方RDMA都指的是InfiniBand],我从网上找到一个关于建立Server/Client通信的一个tutorial [see reference for copyright],虽然短,但是基本上关键点都进行了说明,这篇blog是我自己的根据tutorial完成后,对原文的翻译和自己的理解。
并行数据库[Parallel Database]是为了应对更高的数据吞吐要求而产生的数据库。它主要有三种架构模式:Shared Memory, Shared Disk,Shared Nothing。每种架构各有侧重,因为良好的scalability,Shared Nothing是目前主流的设计思路,Shared Disk在某些应用场景下也具有很大的优势,Shared Memory已经几乎没有用武之地了。Shared Memory, Shared Disk和Shared Nothing的架构实例如下图所示,
位运算是C++的一类非常灵活的运算[在其他语言也有支持],数量掌握可以提高程序效率和简介程度。也是很多科技公司入门面试的常见考题。
do…while(0) 是C和C++中宏定义函数常见的形式,一般是循环区域内是函数体,
Anti-Caching的paper于2013年发表于VLDB [1]. 本文对其核心思想和实现方法做一个简单的总结,也算是自己的paper note [自己将Anti-Caching翻译成反缓存不知道合不合适?]。