自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 资源 (8)
  • 收藏
  • 关注

原创 IP数据包的输入与输出

IP层主要函数之间的调用关系如下图所示:上面的图主要是拷贝的《Linux内核源码剖析----TCP/IP实现上册》中的图11.3,原图中有部分错误,所以这里重新绘制了一下,并且去掉了一些冗余的部分。下面简述一下数据包传递的大致过程:一、IP数据包的输入ip_rcv()是网络层(IPv4,以下同)接收数据包的入口函数,链路层在接收到数据包后调用netif_receiv

2013-08-28 17:42:49 2118

原创 Linux中查看是否是固态硬盘(SSD)

最近在准备测试,需要看看哪些机器挂载的是ssd硬盘,Google了一圈看到了许多方法,但都云里雾里的,不知道怎么确定。ssd硬盘貌似使用的也是scsi接口,所以根据盘符的名称也是判断不出来的。最后群里eric大神告知lsscsi工具,试了一下,非常简单,显示的也很直接,分享一下。废话不多说,直接上图和结果,如下所示:[root@FWD_YF_009_110 ~]# lsscsi

2013-08-26 11:57:31 32066 1

原创 SystemTap----将SystemTap脚本编译成内核模块

当运行SystemTap脚本时,会根据脚本生成一个内核模块,然后插入到系统中执行后退出。这个过程总共分为5个阶段:parse, elaborate, translate, compile, run,对应的编号为1-5.stap命令的-p选项可以用来指定在哪个阶段停止,利用这个选项可以将脚本编译成内核模块。正常情况下,SystemTap脚本只能在部署了SystemTap执行环境(安装内核的开发包

2013-08-25 21:15:24 2934

原创 SystemTap----利用stap命令来查找内核函数定义

我们知道stap命令的-l(或-L)选项可以列出指定的某个probe描述中所有符合的probe点的列表,例如可以使用下面的命令,看到所有可以probe的函数:stap -l 'kernel.function("*")'今天在看书的时候,突然想到可以利用这个选项来找到一些内核函数的定义,例如sys_open()的定义。不管是source insight还是vim+ctag+csc

2013-08-24 19:57:13 7010

原创 SystemTap----thread_indent()函数分析

thread_indent是systemtap中一个非常有用的函数,声明如下:thread_indent:string(delta:long)它可以输出当前probe所处的可执行程序名称、线程id、函数执行的相对时间和执行的次数(通过空格的数量)信息,它的返回值就是一个字符串。参数delta是在每次调用时增加或移除的空白数量。在没有看thread_indent函

2013-08-24 15:15:41 3773

原创 SystemTap----常用变量、宏、函数和技巧

后面会持续更新,方便自己,方便大家.......一、宏1. kderef从指定的地址处读取指定大小的值格式为:kderef(size, address);其中address为要读取的地址值,size是要是读取的值的大小,返回值就是所读取的值。2.kread在嵌入的C代码中安全地读取指针值格式为:kread(&(address))

2013-08-18 18:39:21 7379

原创 SystemTap----嵌入C代码

SystemTap支持guru模式,通过-g选项来以这种模式执行SystemTap脚本。在guru模式下,嵌入的C代码在“%{"和“%}"标记之间,这些代码会原封不动地放到生成的模块中。嵌入的C代码不仅可以作为函数体,还可以出现在SystemTap描述中(例如函数等),示例如下:%{#include linux/in.h>#include linux/ip.h>%}

2013-08-18 10:07:27 3684

原创 SystemTap----初始化和遍历数组

SystemTap数组中的索引项可以是long或者string类型(systemtap的基本类型),访问数组项的方式和C语言类似,数组名[索引]。例如odds[x],odds是数组名,x是索引。下面的示例是以long为索引项,如下所示:global oddsprobe begin {printf("probe begin\n");for (i = 0; i

2013-08-17 22:45:04 3379

原创 netpoll浅析

netpoll只是一种框架和一些接口,只有依赖这个框架和接口实现的netpoll实例,netpoll才能发挥它的功能。类似于kernel中的vfs,vfs本身并不会去做具体的文件操作,只是为不同的文件系统提供了一个框架。netpoll不依赖于网络协议栈,因此在内核网络及I/O子系统尚未可用时,也可以发送或接收数据包。当然netpoll能够处理的数据包类型也很有限,只有UDP和ARP数据包,并且只能

2013-08-15 10:24:11 4833

原创 实战RPM包制作

在开发中经常会用到一些rpm包,但是一直没有自己手动制作过。今天在制作的时候意外地还解决了自己以前一直困惑的问题,就是怎么制作rpm debuginfo包,类似CentOS官网那样的debuginfo包。原来在制作rpm时如果没有特殊设置就会在RPMS目录下同时生成rpm包及对应的debuginfo包。  下面总结一下制作rpm包的流程以及遇到的一些问题的解决。  1、配置工作路径

2013-08-11 22:10:07 9519

原创 CentOS下利用sshpass不用手动输入密码远程执行命令

在测试的时候要同时操作多台机器,每次都要挨个去执行几乎相同的命令或者修改一些设置,这样很影响工作效率也很烦,所以就想写一个脚本,远程自动去做这些操作。远程执行命令很简单,但是不能在执行命令加上命令,还得手动输入,放在脚本里肯定不行。Google一番看到了这篇文章《ssh免输密码自动登录》,上面介绍了三种方法。我选择的是sshpass,简单方便,内网测试,也不用考虑安全的问题。不过CentOS发行版

2013-08-08 11:10:45 5615

原创 为什么服务器程序在部署时需要调度器?

随着互联网规模的不断扩大,服务器承载的压力也不断增加,对服务的质量要求也越来越高。最理想的情况是,使用低成本的服务器,承载更大的压力,并且7x24小时不中断服务。通常使用的方式就是部署集群,调度器+服务器+存储这样的架构。注意,集群不是单指的调度器,它是一个完整的系统,调度器只是集群的入口,起到负载均衡或内容调度的作用。还有一种方式是在服务器程序中加入集群的功能,使服务器节点之间可以通信,实现基于

2013-08-04 09:06:33 2218

深入理解计算机系统

国外经典教程, 经典的讲解操作系统底层原理的好书!

2013-01-15

SQL语句经典大全SQL语句经典大全SQL语句经典大全

SQL语句经典大全 SQL语句经典大全 SQL语句经典大全

2011-04-22

Linux_C高级程序员指南.pdfLinux_C高级程序员指南.pdf

Linux_C高级程序员指南.pdf Linux_C高级程序员指南.pdf Linux_C高级程序员指南.pdf

2011-04-19

经典算法大全,学习算法的好东东

经典的算法大全,对于初学者很好哦。经典的算法大全,对于初学者很好哦。经典的算法大全,对于初学者很好哦。

2011-04-14

C#读取配置文件详细教程

用C#读取配置文件,很详细的哦,而且使用的方法也是比较优化的

2011-04-14

进程线程的概念,讲的很详细

介绍进程线程很详细的资料哦,对学习编程语言很有帮助。面试的时候也会经常被问到这样的问题

2011-04-14

用C#操作数据库用C#操作数据库,很多很全哦

用C#操作数据库,很多很全哦 用C#操作数据库,很多很全哦 用C#操作数据库,很多很全哦

2011-04-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除