自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 资源 (2)
  • 收藏
  • 关注

原创 linux用户程序调用栈打印backtrace

在调试程序的时候,有时候程序跑到一个分支不知道怎么调用到的/在走到不应该走的分支后希望把整个调用栈打印出现,在linux用户程序里面有一个glibc库函数backtrace可以打印出当前进程栈信息:int backtrace(void **buffer, int size);该函数用于获取当前现场的调用堆栈。函数返回值是指针数组中指针的个数,buffer是用来存放指针的指针数组,size是

2015-10-14 22:36:57 5414

原创 虚拟机网络调试

今天要在虚拟机要用yum安装软件,发现一直安装失败,Temporary failure in name resolution网上查询发现是DNS配置错误导致域名解析错误(网址-->ip地址)。然后在虚拟机中ping www.baidu.com,unknown  host,还是DNS有问题!!!换了几个DNS还是同样问题,然后在宿主机上ping www.baidu.com,是可以

2015-10-12 23:27:28 957

转载 C++中的多态和派生继承

本文分别节选转自:http://blog.csdn.net/w3031213101/article/details/5420486http://www.cnblogs.com/fzhe/archive/2012/12/25/2832250.html1.C++中的多态是通过虚函数实现的,即在函数的前面加virtual;虚函数的主要作用是通过基类访问派生类的东西。virtual

2015-10-11 23:08:10 1583

原创 C语言全局变量初始化、数据类型长度

今天在工作中遇到两个问题,记录下来:1. 定义了一个全局变量,然后初始化,编译的时候编译不通过。如下:int a;a = 5;编译的时候一直报错,且说下面的a没有定义类型,默认类似是int。后面才发现全局变量不能再全局初始化,要初始化则在定义的时候初始化,如下:int a=5;不能再全局初始化的原因是:全局初始化语句在开始运行的时候初始化,如果一个变量在全局有两次初始化

2015-10-11 22:54:39 565

原创 分布式CAP理论的理解.

分布式系统:部署在不同的节点,通过网络通信实现协同工作。CAP理解:C:Consistency, all nodes see the same data at the same time;强一致性就是在客户端任何时候看到各节点的数据都是一致的。A:Availability, reads and writes always succeed;高可用性就是在任何时候都可以读写。P:Par

2015-10-10 07:28:58 1934

原创 线程死锁

死锁栈信息:__lll_lock_wait() from_L_lock_1008pthread_mutex_lock()死锁可能情况有两种:1、自己持有锁再去获取锁2、两个线程分别持有锁再去获取另一把锁解决方法步骤:1、查看所有加锁的地方是否释放锁,防止低级错误2、查看持有锁后的流程,是否加锁了再去获取锁,特别是有回调函数的时候。可能被忽略。 gdb调试死锁

2015-08-11 14:21:28 1666

原创 gcc 编译报错

昨晚编译代码,发现报莫名其妙的错误,一些框架定义的东西都不能用,说是没定义,例如:expected specifier-qualifier-list before u32 ,这里意思u32不是一个定义的数据类型。然后不知所措,也在网上找了一些资料,例如:1.头文件没有加#引用,导致出现  include 类似的情况会报错2.有函数定义后面加了; 例如 void  prinf(int

2015-08-11 09:02:05 1095

原创 linux核内外通信——ioctl

ioctl可以通过对内核设备的控制达到核内外通信的目的,即在用户态控制内核动作。从ioctl这个名称上看,本意是针对I/O设备进行的控制操作,但实际并不限制是真正的I/O设备,可以是任何一个内核设备即可。    使用ioctl通信一般是通过字符设备实现的。所以首先要向内核注册一个字符设备,设置字符设备属性:STATIC struct miscdevice test_char_dev={

2014-08-10 21:54:31 1108

原创 非阻塞socket编程

socket编程中可能出现阻塞的情况有

2014-08-06 12:49:15 759

原创 Linux 等待队列

内核中为每个CPU分配了不同的进程链表:

2014-06-15 22:30:20 501

原创 关于linux内存的管理

最近又稍微看了linux内存的管理,又稍微有一点shou

2014-06-14 10:10:57 496

转载 socket基础编程

MiibotreeFun Coding Life目录视图摘要视图订阅2014开源技术大会(读书汇)      OpenStack企业应用之路浅析      专访多信创始人胡泊:将二维码包装成产品 让物体开口说话 linux socket编程之TCP与UDP分类: linux2012-02

2014-04-06 16:26:42 636

转载 linux文件操作函数

linux常见文件及目录操作函数  1、open原型:#include sys/types.h>#include sys/stat.h>#include fcntl.h>int open(const char *pathname, int flags);作用:用flags指定的操作打开pathname指定的文件。成

2014-02-28 14:23:40 564

原创 内核缓冲区slab的管理

刚了下Linux内核情景分析中的内核缓冲区管理,做个小总结。在Linux内核中,对于大块的内存的管理是用伙伴系统算法(buddy )管理。对于小块的内存则用slab管理。在slab方法中,每种重要的数据结构都有自己专用的缓冲区队列。每个队列中的“对象”的个数是动态变化的,不够时可以增添,空闲的时候可以释放,给系统回收。slab中,每种对象的缓冲区队列并非由各种各个对象直接构成,而是由一

2014-02-23 09:05:34 983

转载 Linux 网络编程——select

select系统调用是用来让我们的程序监视多个文件句柄(file descriptor)的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有某一个或多个发生了状态改变。文件在句柄在Linux里很多,如果你man某个函数,在函数返回值部分说到成功后有一个文件句柄被创建的都是的,如man socket可以看到“On success, a file descriptor for

2013-11-24 20:43:04 548

原创 Linux 应用程序多线程编程

#include        int pthread_create(pthread_t *restrict thread,              const pthread_attr_t *restrict attr,              void *(*start_routine)(void*), void *restrict arg);、创建线程,其中:th

2013-11-24 15:43:27 991

转载 TCP长连接与短连接的区别

1. TCP连接当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次握手,所以说每个连接的建立都是需要资源消耗和时间消耗的经典的三次握手示意图:经典的四次握手关闭图:2. TCP短连接我们模

2013-10-29 11:16:13 454

原创 lldp(链路层发现协议)

LLDP(Link Layer Discovery Protocol,链路层发现协议,ieee802.1ab):它提供了一种标准的链路层发现方式,可以将本端设备的的主要能力、管理地址、设备标识、接口标识等信息组织成不同的TLV(Type/Length/Value,类型/长度/值),并封装在LLDPDU(Link Layer Discovery Protocol Data Unit,链路层发现协

2013-10-29 10:19:46 5582

原创 linux僵尸进程

比较形象的比喻:进程在退出后就立刻变成了僵尸,然后等父进程收尸;如果这时它的父进程已经死了,也就是说这个进程是个孤儿,也没问题,它的父进程临死前”托孤“的init进程,也就是它的养父,会帮它收尸。如果这里它的父进程还没死,就要看这个父进程在做什么了?如果这个父进程对正在调用wait或waitpid操作,则表示这个父进程有准备棺材纸钱,这个 进程就可以入土为安了。或者这个父进程设置了SI

2013-10-28 21:27:10 611

原创 linux下core文件调试方法

在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息)。使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数。1.core文件的生成开关和大小限制 (1)使用ulimit -c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能,不会生成core文件。 (2)使用ulimit -c filesize命令,可以限

2013-10-28 12:41:40 482

原创 Linux内核中链表处理

最基本的定义:struct list_head{    struct list_head *next, *prev;};#define container_of(ptr, type, member) ({          \const typeof(((type *)0)->member)*__mptr = (ptr);    \    (type *)((cha

2013-10-27 22:21:45 432

转载 网易游戏2011招聘笔试题+答案解析

转自:http://www.cnblogs.com/jerry19880126/archive/2012/08/07/2626982.html网易游戏2011招聘笔试题+答案解析网易游戏 2011.10.151、对于一个内存地址是32位、内存页是8KB的系统。0X0005F123这个地址的页号与页内偏移分别是多少? 2、如果X大于0并小于65536,用移

2013-10-20 22:07:57 821

转载 华为2012.09.03浙大机试题

转自:http://www.cnblogs.com/jerry19880126/archive/2012/09/08/2676291.html1、通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。比如字符串“abacacde”过滤结果为“abcde”。 要求实现函数: void stri

2013-10-19 22:33:23 466

原创 sizeof 和 strlen

大家对这个关键字都很熟悉,但是有时用起来还是有迷糊。sizeof(a):用来计算a在内存所占字节数,当在计算字符串时包括字符串结束符“\n”,切记!!!! strlen(a):计算字符的长度,应该是有效,字符串时不包括结束符。  void func(char arg[10]){ sizeof(arg);}此处的arg即当作一个指针就可以了。

2013-10-19 21:26:58 453

转载 手动释放linux系统缓存

linux的内存查看:[root@localhost 0.1.0]# free -m                   total       used       free     shared    buffers     cachedMem:          4032        694       3337          0          0        

2013-10-17 09:18:43 575

原创 一个static引发的血案

今天在调试 一个内核模块,一个文件要引用另外一个文件的接口。我就和通常一样,先在本文件用exetern外面引用接口,但是当我放在设备上调试时这个模块怎么都加载不起来。后来搞了半天才发现该接口定义时加了static,外部引用不了。看似很简单的知识点,一疏忽就浪费了不少时间调试它。。。。。。。

2013-10-11 12:27:43 548

原创 linux 中skb结构

sk_buff是内核网络机构的基础,下面是通过看代码划出的大概的指针指向;

2013-10-07 22:25:20 1231

转载 L2数据链路层的数据包处理详细流程

标签:网卡驱动 Linux 数据包原文出处:http://lvzg2005.blog.51cto.com/2015450/1240892 在Linux kernel中,由网卡驱动完成L1物理层和L2数据链路层的工作。首先看函数net_dev_initstatic int __init net_dev_init(void)

2013-09-30 13:56:32 1792

转载 IP报文发送

原文出处: http://lvzg2005.blog.51cto.com/2015450/1240867IP报文的发送的入口函数是ip_output,这个函数一般是挂载到dst->output上。在发送IP报文时,都需要进行路由查找,得到dst,然后通过dst->output来发送数据包。对于IPv4来说,一般情况下,dst->output都是指向ip_output。

2013-09-30 13:54:35 1268

转载 网络数据包收发流程(4):协议栈之packet_type

标签:网络 linux 模型 以太网 数据包原文出处:http://blog.chinaunix.net/uid-24148050-id-1994898.html 进入函数netif_receive_skb()后,skb正式开始协议栈之旅。先上图,协议栈大致过程如下所示:跟OSI七层模型不同,linux根据包结构对网络进行分层。比如,arp头和ip头都是

2013-09-30 13:52:54 930

转载 网络数据包收发流程(3):E1000网卡和DMA

标签:数据包 以太网 数据流原文出处:http://blog.chinaunix.net/uid-24148050-id-1667017.html 一、硬件布局每个网卡(MAC)都有自己的专用DMA Engine,如上图的 TSEC 和 e1000 网卡intel82546。上图中的红色线就是以太网数据流,DMA与DDR打交道需要其他模块的协助,如TSEC,

2013-09-30 13:51:50 1388

转载 网络数据包收发流程(2):不配置NAPI的情况

标签:数据包 网络原文出处:http://blog.chinaunix.net/uid-24148050-id-473352.html 上一篇讲的是内核配置成NAPI的情况,那也是绝大多数内核使用的配置现在讲讲内核不配置成NAPI时的情况一、no NAPI 数据结构不配置NAPI的时候,网络设备不使用自己的napi_struct结构,所有网络设备

2013-09-30 13:51:11 672

转载 网络数据包收发流程(1):从驱动到协议栈

标签:控制器 以太网 数据包 网络 流量原文出处:http://blog.chinaunix.net/uid-24148050-id-464587.html 一、硬件环境intel82546:PHY与MAC集成在一起的PCI网卡芯片,很强大bcm5461: PHY芯片,与之对应的MAC是TSECTSEC: Three Speed Ethernet Con

2013-09-30 13:50:21 870 2

转载 Linux内核实践 - 如何添加网络协议

标签:Linux 网络 协议 kernel原文出处:http://blog.csdn.net/qy532846454/article/details/6627536http://blog.csdn.net/qy532846454/article/details/6646122http://blog.csdn.net/qy532846454/article/det

2013-09-30 13:49:18 1337

转载 Linux IPv4代码分析系列(2)

标签:Linux IPv4代码分析原文出处:http://blog.chinaunix.net/uid-23392781-id-2426603.html  在(一)中分析了inet_init的初始化部分,但在这之前还是有一部分的初始化需要说明一下,这个就是/net/socket.c/sock_init()。它的初始化在inet_init之前,详解对应函数的定义。

2013-09-30 13:47:28 634

转载 Linux IPv4代码分析系列(1)

标签:IPv4 kernel原文出处:http://blog.chinaunix.net/uid-23392781-id-2426602.html 最近一直在看linux(2.6.32)ipv4部分的代码。之前对linux/net目录下的代码一直没有头绪,不知从何处下手。现在稍微理了一下,觉得有必要做个记录。看代码之前先理清思路是必要的,linux的代码一坨坨,如果没有

2013-09-30 13:46:41 1171

转载 linux网络报文接收发送浅析

标签:报文 linux转载出处:http://hi.baidu.com/_kouu/item/6cf8c62998da170a42634ad0  对于linux内核来说,网络报文由网络设备来进行接收。设备驱动程序从网络设备中读取报文,通过内核提供的网络接口函数,将报文传递到内核中的网络协议栈。报文经过协议栈的处理,或转发、或丢弃、或被传送给某个进程。网络报文

2013-09-30 13:45:44 835

转载 linux kernel completion

Linux 的 completion机制分类: Linux kernel2010-09-06 16:29 2010人阅读 评论(0) 收藏 举报linuxstructsignalup数据结构null一、定义:linux/include/linux/completion.h 13struct completion { 14

2013-05-22 11:12:06 761

转载 samba服务器配置

1、先现在RedHat enterprise6.3 在虚拟机上安装好全部的系统2、rpm –qa | grep samba[root@localhost samba]# rpm -qa | grep sambasamba-client-3.5.10-125.el6.i686samba-winbind-clients-3.5.10-125.el6.i686samba-comm

2013-05-05 21:59:57 549

转载 Linux操作系统的开机过程详解

Linux操作系统的开机过程详解,由于操作系统正在变得越来越复杂,所以开机引导和关机下电的过程也越来越智能化。从简单的DOS系统转移到 Windows NT系统,人们已经亲身感受到了这些变化——这已不仅仅是核心操作系统的启动引导和关闭了,还包括必须要同时启动或者关闭相当数量的服务项目。类似于Windows NT,Linux系统启动过程需要打开的服务项目也是数量极大的。这里,我们假设大家已经熟悉

2013-05-05 20:53:01 455

linux协议处理全流程

要了解linux中关于数据报文处理全过程的可以了解下

2013-09-25

很好的Linux介绍ppt

Linux入门必读,ppt简洁明了,能够让你对Linux有个大体把握进而循序渐进

2013-06-15

空空如也

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

TA关注的人

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