08 2014 档案
REDIS fdatasync技术问题和BIO技术的引入
摘要:http://oldblog.antirez.com/post/fsync-different-thread-useless.html这是原文作者的博客 把他翻译下 带上自己的一些理解 看看作者引入fdatasync和bio技术上的一些探讨:【非常有用的磁盘持久化技术】对于从kernel buffe...
阅读全文
REDIS 事务机制
摘要:基本事务操作: 任何数据库都必须要保证一种原子执行操作:最基本的原子执行操作肯定是需要提供: 举一个例子来说明: 当对某个Key 做一个统计: 可能不同的Client做它那部分的统计,一段时间后,服务器端需要得出那个key的具体值 Client1: GET number number = numbe...
阅读全文
REDIS 字典数据结构
摘要:对于REDIS来讲 其实就是一个字典结构,key ---->value 就是一个典型的字典结构【当然 对于vaule来讲的话,有不同的内存组织结构 这是后话】试想一个这样的存储场景:key:"city"value:"beijing"如果有若干个这样的键值对,你该怎么去存储它们呢 要保证写入和查询速度...
阅读全文
redis 数据结构一 之t_string
摘要:简介 REDIS有非常丰富的数据结构 以及建立在这数据结构上的操作,在源文件中主要集中在 T_hash.c /T_list.c /T_string.c/T_zset.c可以说读懂了这4个源文件 大部分数据结构命令都比较清楚了。 先从T_string.c源文件开始读起:T_string.c SET命令...
阅读全文
redis DB操作
摘要:数据库操作 1) REDIS是全部由KEY和VALUE值构成,对数据库的增删改查操作都是基于在通过key 映射到哈希槽 然后通过哈希槽进行单向链式遍历 查找到value和具体的key。同样 在查看大师写的源码时可以说是一种很好借鉴: 这里所有的操作已经主体源码引用都是zai redis/src/db...
阅读全文
REDIS 主从复制
摘要:REDIS目前给出了一个异步的主从复制版本系统。在redis里 提供了几种方式来完成这个工作。 主从复制主要对应在redis/replication.c这个文件里。源码框架里 分为3部分: Master部分/SLAVE部分/复制核心部分其实主从复制我个人觉得比较难的点就是在于每次重启之后 maste...
阅读全文
[翻译]利用REDIS来搭建可靠分布式锁的提议
摘要:本系列都是翻译REDIS作者的博文 另外加上我自己的一点点理解 希望有问题大家一起讨论http://antirez.com/news/77原文地址在利用REDIS做分布式锁时基本持有2种观点: 1种认为这是非常 快速的 很伟大的案例 认为redis解决了一个非常难解决的问题,但是另一方面却不是这样的...
阅读全文
LINUX系统编程 由REDIS的持久化机制联想到的子进程退出的相关问题
摘要:19:22:012014-08-27引言:以前对wait waitpid 以及exit这几个函数只是大致上了解,但是看REDIS的AOF和RDB 2种持久化时 均要处理子进程运行完成退出和父进程需要做的什么事情,所以特定看了UNIX环境编程和LINUX系统编程这2本书 重新梳理下整个要点。内容:一般...
阅读全文
RBL开发笔记三
摘要:2014-08-2620:06:24 今天就是在开发这个EPOLL来处理网络事件 封装较为健壮的EPOLL模型来处理基本的网络IO 1) 超时这个主题先没有弄 在开发EPOLL包括select/poll类型io复用时,编程技术技巧分为几点:【下面都是针对与TCP协议 如果在以后开发中需要U...
阅读全文
RBL开发笔记二
摘要:17:13:552014-08-25 有以下几个点: 第一 :怎么在预处理阶段能够做到识别某个宏是否给定义了 这里就定义了一个SystemConfig.h 专门做这个事情 当然是需要makefile来配合的 http://blog.csdn.net/chaoqunz/article/d...
阅读全文
RBL开发笔记一
摘要:从这个系列开始 陆续记录整个RBL开发的过程 废话不多说 直入主题 10:54:53 2014-08-25 今天开发任务: RBL.h 的框架搭建出来 包括RBLServer RBLClient 和命令窗口 网络层: 因为我开发的目的就是linux 所有非linux系统的a...
阅读全文
Valgrind的多线程调试工具
摘要:Valgrind的多线程调试工具 Helgrind是Valgrind的一个重点功能 本节主要针对与多线程基本安全问题进行检测:【所有的代码环境都是在POSIX_THREAD模式下】 写线程代码时 经常碰到如下问题1) 资源不安全访问 【就是多个线程在没有同步的情况下写某个资源体】2) 死锁问题 3)...
阅读全文
我的开源项目-------远程布隆过滤器服务
摘要:由于项目需要 所有的downserver node 都需要访问一个公共的布隆过滤器 也就是要做一个跨网络挺供的布隆过滤器服务中间产品。 同时要保证非常非常高的实时性 所以在这里 所以现在必须要做一个这样的中间服务系统。主要实现如下功能:1 客户端远程传入一个需要存入读或者写入布隆过滤器的string...
阅读全文
C++中 destory() 和deallocate()以及delete函数的相关性和区别性
摘要:这里非常的绕口 需要仔细的来看看: destory(): 显示调用一个对象的析构函数 相当于释放一个对象需要释放的一些动态内存 为下次真正释放对象做准备 deallocate():真正的释放一个内存块。这是一个上层封装也就是delete函数的上层封装 在STL的空间配置器中 有可能会调用dele...
阅读全文
由STL所想到的 C++显示调用析构函数
摘要:在STL中的容器中的析构函数中,会经常调用destroy()这个函数 在STL中 destroy()被重载了 这点在这里到不去讨论 这里贴最简单的那个版本 template inline void destory(T * pointer) { pointer->~T(); }...
阅读全文
MINIX3 内核整体架构回顾及内核定 性分析
摘要:MINIX3 内核整体架构回顾及内核定 性分析 12.1 注意事项 由于本文档不对 I/O 文件系统做出分析,所以在此不对 MINIX3 整体做出一个分 析,本章主要是针对内核进程分析.并且这里的模型建立是非常理想化的。 12.2 MINIX3 架构 MINIX3 的设计理念就是设计一个比当前主流的...
阅读全文
信号量机制
摘要:信号量机制 11.1 2 个程序的例子 先看 2 个程序; #include int main(void) { allarm(10); for(;;;); } 这段程序的含义比较明显:这个程序在一个无限循环中,直到过了 10 秒,之后程序被终止。在来看另外一个程序:Static void setva...
阅读全文
PM 时钟机制
摘要:PM 时钟机制 10.1 Minix3 PM 时钟机制概述在 MINIX3 中,除了前面所讲到的 CLOCK 时钟,在 pm 中也是维持了一个时钟, 我们暂且不分析为啥要这么做,我就分析是怎么实现这个 PM 时钟监视器。我可以这么肯定的说,这个时钟监视器只是一个虚幻的时钟监视器,最终还是得内核时钟来...
阅读全文
MINIX3 系统任务分析
摘要:MINIX3 系统任务分析 7.1 MINIX3 系统任务概要 MINIX3 怎么来给用户提供丰富的服务呢?除了中断,异常处理,除了时钟服务。 程序员总是希望一个操作系统给他提供足够的服务,使得他能够做出更加高效安 全的程序来。在 MINIX3 中,它提供了一种系统任务机制。这个机制的作用就是 介绍任何想调用系统调用的函数消息,之后将其进行一个精准的处理,使得其能 够对程序员提供帮助。 MINIX...
阅读全文
MINIX3 进程通信分析
摘要:MINIX3 进程通信分析 6.1MINIX3 进程通信概要 MINIX3 的进程通信是 MINIX3 内核部分最重要的一个部件,我个人认为其实这 是内核中的“内核”,怎么来理解这个概念呢?其实 MINIX3 进程间通信部件的 实行不完全依赖任何一个部件,这个在后面会详细的看到。Minix3 实现进...
阅读全文
MINIX3
摘要:这个系列minix3是好早看的源码 现在都忘记的差不多了 觉得就此扔掉可惜了 今天把他全部放在博客上 1 是想和大家一起讨论下 2 是没事看看 能够加强对一个稳定性系统的理解 加厚
阅读全文
MINIX3 进程调度分析
摘要:MINIX3 进程调度分析 5.1MINIX3 进程调度概要 MINIX3 的进程调度还是非常简单的,调度算法是非常短小的,其目的就是体现 了一个简单和高效的设计原则,当然简单和高效其实很难并存,整体而言,就是 一个多队列调度算法,根据优先级来放到相应的位置。 我们现在来看下整个图示:(下面这个图其实就是 MINIX3 初始化时用户还没有 创建进程时所显示的图),在层次一,被认为是系统层,级别最高...
阅读全文
MINIX3 内核时钟分析
摘要:MINIX3 内核时钟分析 4.1 内核时钟概要 先想想为什么 OS 需要时钟?时钟是异步的一个非常重要的标志,设想一下,如 果我们的应用程序需要在多少秒后将触发某个程序或者进程,我们该怎么做到? 就需要一个时钟的鼎力相助才能完成这个项工作。我的意思非常明确,就是说内 核时钟就是一个非常重要的部件,它可以完成分时系统的调度功能,同时它也能 为应用程序提供一个非常方便的异步处理问题的功能 现在我们简...
阅读全文
MINIX3 保护模式分析
摘要:3.1 INTEL 保护模式概要 先要说明一个问题:不是 MINIX3 一定要设置这个保护模式,但是在 386 平台上, 引入了这个保护模式机制,MINIX3 不得不设立相关保护模式的内容。由于 386 平台的保护模式是一个极其复杂的过程,建议读者参考相关文献如 INTEL 编程 手册卷 3A,我在这里做一个简要的介绍: 首先理解什么是保护模式,说道保护模式,我们马上应该想到实模式,何谓实模 ...
阅读全文
中断分析
摘要:MINIX3 中断机制源码分析 下面我们来探讨下 MINIX 中断处理函数的具体处理流程: 由前面的章节知道,MINIX 的架构是标准的微内核结构,除了时钟中断处理程 序可以直接在内核态进行,其他的都只能从用户态,用户态像内核态发送消息。 假设我们是一个内核设计者,怎么能够将这种机制实现呢?我们会在系统任务里 设置一个中断注册调用,通过那个调用,我们能够将用户需要的中断处理函数挂 15 到相应的地...
阅读全文
中断机制
摘要:2.1 分析前得实现说明操作系统是一个整体机制,事实上不能隔离任何一个机制,也就是说任何一个机 制是不可能脱离其他机制而单独存在,我们将这种机制类比一个图结构,设想一 下,如果有一个数学意义上的图 G,,G={G1,G2 …},这只是数学家给其定义的方 式,但是 G1,G2,….他们之间是不很难发生...
阅读全文
MINIX3 导读分析
摘要:一个操作系统的分析是属于一个非常庞大的工程,操作系统就像是一个人造的 人,每一个模块想完全发挥功效,很有可能需要很多模块的支持才能够实现。所 以在分析 MINIX3 时,我认为同时看多个模块对于理解 MINIX3 是有好处的,特 别是因为 MINIX3 是采用微内核结构,也就造成阅读源码的一个比较大...
阅读全文