随笔分类 -  系统与架构

记录自己在linux学习过程中的点点滴滴收获
摘要:新来了一批服务器,全都是清一色的国产服务器,相同的阵列卡,令人头疼的是Linux标准内核不包含该raid驱动,需要单独安装,如果是新升级内核,肯定需要编译进去该raid驱动。一、先把主板自带的驱动光盘中的驱动文件拷贝出来,或者到Intel的网站下载,当前最新的是 ESRT2_Linux_v.14.00.1203.2010_u1_.zip,解压缩后找到对应系统版本的驱动镜像,CentOS 5.5 对应的是 : megasr-14.00.1203.2010-1-rhel50-u5-all.img,为使用方便,同时在优盘建个文件夹,用UltraISO 打开前面的img文件,将里面文件拖放到新建的文件 阅读全文
posted @ 2014-01-06 09:23 北海石松 阅读(4539) 评论(0) 推荐(0)
摘要:1.开窗口运行 在已经打开编辑界面时,如果要进行多窗口操作,可用如下命令操作 split #打开一个水平窗口.新窗口打开也是当前编辑文件 split file1 #打开一个水平窗口.新窗口打开是file1 vsplit #打开一个垂直窗口.新窗口打开也是当前编辑文件 vsplit file1 #打开一个垂直窗口.新窗口打开是file1 diffsplit file2 #水平打开一个窗口编辑file2 ,并且与当前窗口进行比较 vert diffsplit file2 #垂直... 阅读全文
posted @ 2012-12-13 21:50 北海石松 阅读(206) 评论(0) 推荐(0)
摘要:定义1: 原子操作(atomic operation)是不需要synchronized。原子操作是不可分割的,在执行完毕不会被任何其它任务或事件中断。在单处理器系统(UniProcessor)中,能够在单条指令中完成的操作都可以认为是" 原子操作",因为中断只能发生于指令之间。在对称多处理器(Symmetric Multi-Processor)结构中就不同了,由于系统中有多个处理器在独立地运行,即使能在单条指令中完成的操作也有可能受到干扰。Linux下面,整数的自增和自减操作的汇编程序为:自增:movl X(%rip),%eaxAddl $1,%eaxMovl %eax,X 阅读全文
posted @ 2012-11-01 14:11 北海石松 阅读(2069) 评论(0) 推荐(0)
摘要:源码分析版本:glic-2.9spin_lock加锁pthread_spin_lock:intpthread_spin_lock (lock) pthread_spinlock_t *lock;{ asm ("\n" "1:\t" LOCK_PREFIX "decl %0\n\t" //锁总线,开始加锁,在%0 "jne 2f\n\t" //加锁不成功,jns 汇编指令检查 EFLAGS 寄存器的 SF(符号)位,如果为 0,说明 slock 原来的值为 1,则线程获得锁,然后跳到标签 2 的位置结束本次函数调用。 阅读全文
posted @ 2012-09-27 21:04 北海石松 阅读(3155) 评论(0) 推荐(0)
摘要:测试环境:24CPU 2.4GHz ,32G内存实验数据:mutex.cView Code #include <stdio.h>#include <pthread.h>#include <stdlib.h>#include <sys/time.h>#define MAX_LOOP 1000000#define CODE_LEN 10long g_count = 0;int thread_count = 20;int lock_count = 0;int loop_count = 1000000;int code_len = 1;pthread_m 阅读全文
posted @ 2012-09-27 01:48 北海石松 阅读(1545) 评论(0) 推荐(0)
摘要:文件:kthread.c 1 /** 2 * kthread_create - create a kthread. 3 * @threadfn: the function to run until signal_pending(current). 4 * @data: data ptr for @threadfn. 5 * @namefmt: printf-style name for the thread. 6 * 7 * Description: This helper function creates and names a kernel 8 * thread. The ... 阅读全文
posted @ 2012-09-02 23:49 北海石松 阅读(4712) 评论(0) 推荐(0)
摘要:分析linux网络的书已经很多了,包括《追踪Linux TCP/IP代码运行》《Linux内核源码剖析——TCP/IP实现》,这里我只是从数据包在linux内核中的基本流程来分析,尽可能的展现一个主流程框架。内核如何从网卡接收数据,传统的过程:1.数据到达网卡;2.网卡产生一个中断给内核;3.内核使用I/O指令,从网卡I/O区域中去读取数据;我们在许多网卡驱动中(很老那些),都可以在网卡的中断函数中见到这一过程。但是,这一种方法,有一种重要的问题,就是大流量的数据来到,网卡会产生大量的中断,内核在中断上下文 中,会浪费大量的资源来处理中断本身。所以,就有一个问题,“可不可以不使用中断”,这就是 阅读全文
posted @ 2012-06-10 16:20 北海石松 阅读(15403) 评论(1) 推荐(0)