摘要: 下面25条描述主要介绍硬件中段(segment)是如何组织的, 以及如何从逻辑地址(logic address)转换为线性地址(linear address)。51. 段寄存器(segmentation registers)是处理器提供的用于快速访问段选择子的部件, 包括cs, ss, ds, es, fs和gs。这些段寄存器可以被程序复用, 只要复用前把寄存器里的内容保存到内存中, 用完后再恢复。52. cs(code segment)代码段寄存器, 指向包含程序指令的段。还包括一个2位的域,用于标识CPU的当前优先级级别(Current Privilege Level), Linux用其中 阅读全文
posted @ 2012-04-01 08:53 virHappy 阅读(598) 评论(0) 推荐(0) 编辑
摘要: 下面25条描述主要从整体上介绍内存的相关概念,如各种地址格式, 及分段、分页机制。26. 虚拟内存(virtual memory)是硬件内存管理单元(MMU)和应用程序内存请求的一个逻辑层。具有如下作用:a. 支持多个进程并发执行;b. 可以运行内存需求量大于物理内存上限的应用程序;c.进程可以执行只有部分代码在内存中的应用程序;d. 所有进程可以共享一个库或者应用程序的内存镜像(memory image);e. 应用程序可以再定址(relocatable),可以放置在物理内存的任意位置;f. 程序员可以编写机器无关代码,无需考虑物理内存组织的问题。27. 虚拟地址空间(virtual ad. 阅读全文
posted @ 2012-03-27 10:59 virHappy 阅读(593) 评论(0) 推荐(0) 编辑
摘要: keepalived配置文件解析系列之(三)配置文件解析过程virHappy(zhuozch@163.com) 如(一)所言, keepalived在配置文件解析方面拥有非常灵活的方式, 采用关键字分层(每层的关键字数量不限,且关键字的层次也不限制)的方法进行组织一个配置文件, 且支持平行或者嵌套地include多个其它配置文件语句和正则表达式记法的配置文件名。文(二)中介绍了keepalived关键字的存储和相关的操作,下面将具体分析怎么样解析配置文件。一、入口点及全局流程 位于parser.c文件中的init_data(char *conf_file, vector (*init_ke.. 阅读全文
posted @ 2012-03-21 18:44 virHappy 阅读(2246) 评论(0) 推荐(3) 编辑
摘要: keepalived配置文件解析系列之(二)keyword存储的设计与实现virHappy(zhuozch@163.com) 与关键字相关的数据结构和操作主要在lib/parser.c文件中,下面介绍其中的核心内容。一、 关键字相关数据结构 作为关键字, 首先需要有一个名字name来区分, 当解析配置文件时遇到该关键字要进行什么操作则由函数handler来表达, 最后单独的一个关键字是作为整个层次关键字中的一员, 需要有相应的成员去关联下一级别的关键字,这个任务由 sub指针完成。具体的关键字定义如下:1 /* ketword definition */2 struct keyword {.. 阅读全文
posted @ 2012-03-19 20:44 virHappy 阅读(2238) 评论(0) 推荐(1) 编辑
摘要: 最近开始看ULK(深入理解Linux内核, Understanding the Linux Kernel, 3rd), 以条目式(entry)的方式记下相关内容以备忘:1. 在arch和include目录下各有23个和硬件对应的文件夹2. UNIX是以文件系统为中心进行设计的。3. UNIX文件的类型不:常规文件,目录,符号链接,块设备文件,字符设备文件,管道和命名管道,套接字。4. UNIX严格区分文件的内容和文件的控制信息。一般地,控制信息存储在inode结点里面,一个文件对应一个inode结点。5. 根据POSIX标准, inode结点至少要提供以下信息:文件类型,文件关联的硬链接的.. 阅读全文
posted @ 2012-03-19 14:15 virHappy 阅读(948) 评论(2) 推荐(0) 编辑
摘要: 一、 keepalived简介 为后端服务器提供健康检查(keepalived)和为负载均衡器提供失败切换(fail over)从某种意义上构成了服务器负载均衡(SLB, server load balance)的 一部分。以LVS(Linux Virtual Server, 可参考项目主页http://www.linuxvirtualserver.org/)为代表的软件负载均衡服务器,以高性价比的方式解决了众多企业的需求。 而LVS + keepalived是常见的一种部署方式。 健康检查和失败切换是keepalived(可参考项目主页http://www.linuxvirtualser.. 阅读全文
posted @ 2012-03-18 17:55 virHappy 阅读(4910) 评论(0) 推荐(1) 编辑
摘要: 一、位域简介 接触过Linux内核网络协议栈的人,大概都见过位域的表达方式。 如下是摘自Linux内核代码(include/linux/tcp.h)中关于tcp头部的定义: 1 struct tcphdr { 2 __be16 source; 3 __be16 dest; 4 __be32 seq; 5 __be32 ack_seq; 6 #if defined(__LITTLE_ENDIAN_BITFIELD) 7 __u16 res1:4, 8 doff:4, 9 fin:1,10 ... 阅读全文
posted @ 2012-03-13 19:45 virHappy 阅读(10019) 评论(0) 推荐(0) 编辑
摘要: 在python里可以通过os.popen()和os.system()执行shell命令,C代码里自然也有相应的接口。如下一段代码: 1 /* 2 ** sample program by virHappy 3 */ 4 5 #include <stdio.h> 6 #include <stdlib.h> 7 #include <string.h> 8 #include <stdarg.h> 9 10 #define MAX_BUF_LEN 819211 12 /*13 ** conbine some string together accrodi 阅读全文
posted @ 2012-03-12 19:15 virHappy 阅读(1562) 评论(0) 推荐(0) 编辑
摘要: 世事无常,什么遮住了你的眼睛呢?又是什么挡了你的脚步呢? 阅读全文
posted @ 2011-09-25 21:02 virHappy 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 彷徨,观望,迷茫是不错的过日子的方式,不用与自己的想法挣扎,然而却是有那么一丝地不安...必须承认,低着头,无视时间流逝的生活方式不适合自己.想挑战自己,做自己想做的人.路一直都在...就等着自己启程了. 阅读全文
posted @ 2011-02-05 16:55 virHappy 阅读(161) 评论(0) 推荐(0) 编辑