浅谈Copy On Write技术

最近在啃APUE,看的有点云里雾里,结合具体实际例子整理对写时复制技术的理解,以免遗忘,如有错误欢迎反馈,文章不定时更新内容。

COW介绍

fork创建的子进程与父进程共享内存空间。fork()之后,kernel把父进程中所有的内存页的权限都设为read-only,然后子进程的地址空间指向父进程。当父子进程都只读内存时,相安无事。当其中某个进程写内存时,CPU硬件检测到内存页是read-only的,于是触发页异常中断(page-fault),陷入kernel的一个中断例程。中断例程中,kernel就会把触发的异常的页复制一份,于是父子进程各自持有独立的一份。

虽然最开始接触COW......

GDB调试基本使用方法

文章转载自coolshell.cn,对相关内容根据自己理解有改动,原文请访问作者博客.

GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道......

crash工具总结

1、将/etc/yum.repos.d/centos-*.repo移到别处,新建一个 centos.repo文件

2、里面内容填写如下:

[base]]

name=ftp-server

baseurl=ftp://172.17.62.160/pub/centos6.6

enable=1

gpgcheck=1

gpgkey=ftp://172.17.62.160/pub/centos6.6/RPM-GPG-KEY-CentOS-6

保存文件退出

172.17.62.160是公司内部yum 源,在配置了172.17网段的虚拟机上可以方便安装.若在有外网权限的linux上,无需修改上......

Linux程序设计Chapter10

#include <stdio.h>

#include <stdlib.h>

int main()

{

#ifdef DEBUG

printf("Compiled: " __DATE__ " at " __TIME__ "\n");

printf("This is line %d of file %s\n", __LINE__, __FILE__);

#endif

printf("hello world\n");

exit(0);

}

将代码保存为cinfo.c,......

Linux软连接与硬连接

1.Linux链接概念

Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。

命令格式:

ln -s source dist # 建立软连接

ln source dist # 建立硬连接

【硬连接】

硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件......

Linux内核链表学习

本文参考内核代码2.6.9 List.h中相关代码,如有疑问欢迎评论.

链表

链表是线性表的一种,可以高效地在链表中的任意位置实时插入、删除数据。链表的开销主要是访问的顺序性和组织链的空间损失.

通常链表数据结构至少应包含两个域:数据域和指针域,数据域用于存储数据,指针域用于建立与下一个节点的联系。

内核代码2.6.9中链表结构定义如下:

struct list_head {

struct list_head *next, *prev;

};

这个结构跟我们之前看到的不太一样,没有数据域,这样做的好处是具备了通用型.

链表可以分为单链表、双链表、循环链表等多种类型,下面......

List_enty探究

#define list_entry(ptr, type, member) \

((type *)((char *)(ptr) – (unsigned long)(&((type *)0)->member)))

can somebody please explain what is this and how does it work, thanks in advance.

P.S. please simplify your answer as much as possible, I know about threads, processes in Linux, n......

Linux命令行总结

Day 1

grep 命令

grep命令显示文件和输入流中和参数匹配的行,下面的命令显示文件/etc/passwd中包含文本root的所有行:

grep root/etc/passwd

在对多个文件进行批量操作的时候,grep命令非常好用,如果要查看/etc中所有包含root的文件,可以执行以下命令:

grep root/etc/*

Day 2

less命令

当要查看的文件过大或者内容多的需要滚动屏幕的时候可以使用less命令。

例子:

less /usr/share/dict/words

使用/word从当前位置向前搜索word这个词

使用?w......

Linux内核目录结构

一、目录结构

Linux内核源代码采用树形结构进行组织,非常合理地把功能相关的文件都放在同一个子目录下,使得程序更具可读性。

内核源代码下载地址:www.kernel.org

arch目录

arch是architecture的缩写。内核所支持的每种CPU体系,在该目录下都有对应的子目录。每个CPU的子目录,又进一步分解为boot,mm,kernel等子目录,分别包含控制系统引导,内存管理,系统调用等。

| --x86 /* 英特尔cpu及与之相兼容体系结构的子目录*/

| |--boot /*引导程序*/

| | |--compressed /*内核解压缩*/

|......

Linux系统管理手册

HWManager -t -oppwrctl -pwron 对端开机

HWManager -t -oppwrctl -foff 对端关机

HWManager -t -host -rst 本端开机

HWManager -t -host -foff 本端关机

问题单提交规范:

【问题描述】

【操作步骤】

【预期结果】

【实际结果】

【问题定位】

【问题解决】

【问题验证】 按照提单步骤验证,验证通过,请审核!!!

【SVN】

编译内核升级方法如下:

1、将*.tgz文件拷贝到编译环境的/......