代码的Bugs(臭虫)

写完程序,接下来测试,尽可能地去发现程序中的bugs。我负责一个解析终端协议模块,与同事的业务模块合并在一起。之前,我们就进行过不少的测试,出现最多的的是段错误,SIGSEGV信号,即无效的内存引用。

MonetDB 内存映射mmap

在学计算机组成原理时,了解到为了平衡CPU的高速与内存慢速,在CPU与内存之间增加了L1 cache,L2 cache,以加快CPU对内存数据的访问。但同时了解到进程可以使用一系列相邻的虚拟地址来访问物理内存中不相邻的大内存缓冲区和访问大于可用物理内存地址的缓冲区(可与磁盘之间切换)。虚拟地址通过TLB转化为物理地址,若物理地址属于内存空间,即直接访问,若不在,即需要进行磁盘切换。层级的内存架构图:

MonetDB 捕捉信号

MonetDB运行在Unix系统上,就需要进行一些系统的捕捉和处理。下列是常见的几种信号:

SIP 协议

实习期间,接触到SIP,对其略有所闻。SIP(Session Initiation Protocol) 协议是类似于http的基于文本的协议,应用层的信令控制协议。用于创建,修改和释放一个或多个参与者的会话。主要用于IP电话,视频等。

MonetDB 主要特征

以列存储数据库内核

MonetDB是建立在规范的以列存储的数据库关系表示。它们是相当大的实体,达到几百兆,通过操作系统交换到内存,实现的时候使用的mmap文件内存映射,这对于一个内存能装满整个数据库的系统来说,速度非常地快,如果数据库非常的庞大,那就会导致系统不断地换页,甚至抖动。有必要时,压缩存回磁盘,压缩的效率也很好,因为以列存储,相似程度很高,压缩率自然会高,这需要CPU的时间,但同时节省磁盘的空间,时间换空间,这有待商议

MonetDB 架构模型

总体概览

MonetDB 类属于数据库管理系统,被设计首要用于数据仓库环境。这样的环境特征是大仓库,常用于被查询来进行商业智能的抉择。它们也会经常出现在科学领域上,大仓库的科学观察数据可以用来进一步的科学分析。设计关注于大量的处理是不可能的。针对有效地利用硬件的最大处理能力。设计的目的反应在架构的各个层次和提供给用户的功能。尽管MonetDB/SQL提供了完善的SQL接口,但是在大容量,且需要保存不同层次的ACID属性的事务处理能力有点欠缺。

MonetDB 调试

MonetDB can run in different platform,including linux’s and window’s series.Because I want to learn how to use gdb to debug,thus, MonetDB’s installed on Unbuntu12.10 and –debug–init set on true

MonetDB 结构体分析

MonetDB belongs to the class of database management systems designed primarilly for datawarehouse evironment.It has many components to construct.According to my ability I only focus myself on the kernel structure.

MALBLK is used as the MonetDB Assembly language Block which store the instructions which will be executed.

开天辟地 继往开来

Today is a good beginning because I spare the time not watching TV but constructing my own blog.Eventually, I can almost control everything in my field. There is no useless links,no disgusting advertisements, no boring replies.The things existing in blog is very fantastic,invaluable and wonderful.Every time I see them,my mind becomes clear.