自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

godleading的专栏

关注Linux Kernel/网络协议栈

原创 git使用

git使用 git clone时报如下错误 原因 解决方法 TortoiseGit clone时报错 问题原因 解决方法 git log使用 git回归代码 git使用 本文记录的是工作中git是使用问题,无脑模式,遇到什么记录什么,谨慎阅读。 git clone时报如...

2018-01-08 12:21:11

阅读数 215

评论数 0

翻译 字节序与比特序详解

[TOC]字节序的定义字节序就是说一个对象的多个字节在内存中如何排序存放,比如我们要想往一个地址a中写入一个整形数据0x12345678,那么最后在内存中是如何存放这四个字节的呢?  0x12这个字节值为最高有效字节,也就是整数值的最高位(在本文中0x12=0x12000000),0x78为最...

2017-12-22 20:43:06

阅读数 2525

评论数 0

转载 C语言字节对齐问题详解

C语言字节对齐

2017-10-31 18:07:39

阅读数 345

评论数 0

转载 Linux进程间通信方式

进程与进程通信的概念 进程通信的应用场景 进程通信的几种方式 管道 管道简介 管道原理 管道如何通信 管道如何创建 管道读写实现 管道api与用法 普通管道 流管道 命名管道 实现原理 api与应用 匿名管道和有名管道总结 信号 信号来源 信号生命周期和处理流程 api使用 消...

2017-10-30 11:09:40

阅读数 11179

评论数 4

转载 Linux内核中的各种锁

Linux内核中的各种锁在现代操作系统里,同一时间可能有多个内核执行流在执行,因此内核其实象多进程多线程编程一样也需要一些同步机制来同步各执行单元对共享数据的访问。尤其是在多处理器系统上,更需要一些同步机制来同步不同处理器上的执行单元对共享的数据的访问。在主流的Linux内核中包含了几乎所有现代的...

2017-10-17 14:12:42

阅读数 5952

评论数 0

转载 各种算法复杂度

数据结构 注解: Skip_List:跳跃表 Cartesian_Tree:笛卡尔树是一种特定的二叉树数据结构,可由数列构造,在范围最值查询、范围top k查询(range top k queries)等问题上有广泛应用。 数组排序算法 图操作 堆操作 大O复杂度

2016-11-21 14:27:35

阅读数 446

评论数 0

原创 Linux内核中的软中断、tasklet和工作队列详解

[TOC] 本文基于Linux2.6.32内核版本。引言软中断、tasklet和工作队列并不是Linux内核中一直存在的机制,而是由更早版本的内核中的“下半部”(bottom half)演变而来。下半部的机制实际上包括五种,但2.6版本的内核中,下半部和任务队列的函数都消失了,只剩下了前三者。 ...

2016-10-30 14:26:32

阅读数 13246

评论数 2

转载 理解tcp关闭连接中的time_wait状态

首先看一下tcp关闭连接时的四次握手过程: 1.Client向Server发送FIN包,表示Client主动要关闭连接,然后进入FIN_WAIT_1状态,等待Server返回ACK包。此后Client不能再向Server发送数据,但能读取数据。 2.Server收到FIN包后向Clien...

2016-03-10 19:16:56

阅读数 2728

评论数 0

转载 Linux Shell参数

在shell编程时.可以使用参数。Shell有位置参数和内部参数 1、 位置参数   由系统提供的参数称为位置参数。位置参数的值可以用$N得到,N是一个数字,如果为1,即$1.类似C语言中的数组,Linux会把输入的命令字符串分段并给每段进行标号,标号从0开始。第0号为程序名字,从1开始就表示传递...

2015-06-08 14:17:02

阅读数 433

评论数 0

转载 Linux进程状态

众所周知,现在的分时操作系统能够在一个CPU上运行多个程序,让这些程序表面上看起来是在同时运行的。linux就是这样的一个操作系统。 在linux系统中,每个被运行的程序实例对应一个或多个进程。linux内核需要对这些进程进行管理,以使它们在系统中“同时”运行。linux内核对进程的这种管理分两个...

2015-04-22 19:06:16

阅读数 657

评论数 0

原创 IO多路复用总结

本文基于Linux2.6.32内核版本。 一、基本概念   IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合:   (1)当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。   (2)...

2015-04-14 17:33:19

阅读数 3814

评论数 0

转载 组播MAC地址和各类IP地址

MAC地址是以太网二层使用的一个48bit(6字节十六进制数)的地址,用来标识设备位置。MAC地址分成两部分,前24位是组织唯一标识符(OUI, Organizationally unique identifier),后24位由厂商自行分配。     MAC地址有单播、组播、广播之分。单播地...

2014-03-17 14:17:30

阅读数 19408

评论数 0

转载 linux iptables实现

Xtables提供的资源   struct  xt_af  xt[]结构数组 该数组用于挂载各个协议的match和target资源。由于写者(添加、删除)和读者(查找)都是在内核空间进程上下文执行,所以它们只需要用xt[n].mutex信号量进行互斥。读者(查找)在将规则关联上一个m...

2014-02-26 14:43:16

阅读数 4977

评论数 0

转载 Linux nf_conntrack连接跟踪的实现

连接跟踪,顾名思义,就是识别一个连接上双方向的数据包,同时记录状态。下面看一下它的数据结构: struct nf_conn {         /* Usage count in here is 1 for hash table/destruct timer, 1 per skb, plus ...

2014-02-26 12:07:30

阅读数 23566

评论数 0

转载 Understanding a Kernel Oops

Understanding a kernel panic and doing the forensics to trace the bug is considered a hacker’s job. This is a complex task that requires sound knowle...

2014-01-27 17:53:57

阅读数 1125

评论数 0

转载 程序的内存分配

一、预备知识—程序的内存分配    一个由C/C++编译的程序占用的内存分为以下几个部分    1、栈区(stack)—   由编译器自动分配释放   ,存放函数的参数值,局部变量的值等。其    操作方式类似于数据结构中的栈。    2、堆区(heap)   —   一般由程序员分配释放,   ...

2014-01-24 11:34:45

阅读数 685

评论数 0

转载 进程栈和内核栈

1.进程的堆栈        内核在创建进程的时候,在创建task_struct的同时,会为进程创建相应的堆栈。每个进程会有两个栈,一个用户栈,存在于用户空间,一个内核栈,存在于内核空间。当进程在用户空间运行时,cpu堆栈指针寄存器里面的内容是用户堆栈地址,使用用户栈;当进程在内核空间时,c...

2014-01-23 17:40:34

阅读数 2995

评论数 0

转载 Linux用户进程内存空间

经常使用top命令了解进程信息,其中包括内存方面的信息。命令top帮助文档是这么解释各个字段的。 VIRT , Virtual Image (kb) RES, Resident size (kb) SHR, Shared Mem size (kb) %MEM, Memory usage(kb) S...

2014-01-23 14:41:50

阅读数 1800

评论数 0

原创 Linux中的地址空间以及I/O地址空间

解惑—Linux中的地址空间(一) 有这么一系列的问题,是否在困扰着你: 1. 用户程序编译连接形成的地址空间在什么范围内? 2. 内核编译后地址空间在什么范围内? 3. 要对外设进行访问,I/O的地址空间又是什么样的? 先回答第一个问题。Linux最常见的可执行文件格式为elf(Executa...

2014-01-23 14:33:43

阅读数 6335

评论数 0

转载 Linux内核bridge浅析

Linux内核bridge浅析  Linux网桥模型:   Linux内核通过一个虚拟的网桥设备来实现桥接的,这个设备可以绑定若干个以太网接口设备,从而将它们桥接起来。如下图所示:   网桥设备br0绑定了eth0和eth1。对于网络协议栈的上层来说,只看得到br0,因为桥接是在数据链路层实现...

2013-05-22 19:53:58

阅读数 4213

评论数 0

转载 LINUX TCP/IP 协议栈的关键数据结构SOCKET BUFFER(SK_BUFF )

sk_buff结构可能是linux网络代码中最重要的数据结构,它表示接收或发送数据包的包头信息。它在中定义,并包含很多成员变量供网络代码中的各子系统使用。 这个结构在linux内核的发展过程中改动过很多次,或者是增加新的选项,或者是重新组织已存在的成员变量以使得成员变量的布局更加清晰。它的成员变...

2013-04-09 15:26:30

阅读数 1740

评论数 0

转载 进程上下文和中断上下文

进程上下文和中断上下文是操作系统中很重要的两个概念,这两个概念在操作系统课程中不断被提及,是最经常接触、看上去很懂但又说不清楚到底怎么回事。造成这种局面的原因,可能是原来接触到的操作系统课程的教学总停留在一种浅层次的理论层面上,没有深入去研究。 处理器总处于以下状态中的一种: 1、内核态,运行...

2013-04-02 16:56:19

阅读数 971

评论数 0

转载 如何安装ccashe

ccache(“compiler cache”的缩写)是一个编译器缓存,该工具会高速缓存编译生成的信息,并在编译的特定部分使用高速缓存的信息, 比如头文件,这样就节省了通常使用 cpp 解析这些信息所需要的时间。如果您编译清单 2 中的文件,假定foobar.h 中包含对其他头文件的引用,cc...

2013-01-18 15:20:50

阅读数 669

评论数 0

原创 svn copy error: Entry has unexpectedly changed special status

最近为项目做了一个自动编译脚本,但是在用svn打tag时却打印如下错误导致无法加tag. svn copy -m "make a tag for trunk" gpon https://192.168.25.4/svn/GPON-subcard/tags/GPON_V...

2013-01-07 15:36:18

阅读数 6479

评论数 0

转载 Linux信号量

一.什么是信号量 信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。 信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为0,说明它被占用,测试的线程要进入睡眠队列中,等待被唤醒。  二.信号量的分类 在学习信号量之前,我们必须先知道——Linux提...

2012-12-14 17:06:56

阅读数 697

评论数 0

转载 setsockopt设置socket详细用法

1. closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket: BOOL bReuseaddr=TRUE; setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,...

2012-10-23 17:02:29

阅读数 4109

评论数 0

转载 内存对齐算法

字节对齐是在分配内存时需要考虑的问题,两个小算法: (1)最容易想到的算法: unsigned int calc_align(unsigned int n,unsigned align) { if ( n / align * align == n) retu...

2012-10-19 18:05:58

阅读数 3260

评论数 0

转载 Linux 系统内核空间与用户空间通信的实现与分析

多数的 Linux 内核态程序都需要和用户空间的进程交换数据,但 Linux 内核态无法对传统的 Linux 进程间同步和通信的方法提供足够的支持。本文总结并比较了几种内核态与用户态进程通信的实现方法,并推荐使用 netlink 套接字实现中断环境与用户态进程通信。 1 引言 Linu...

2012-10-10 17:09:28

阅读数 1075

评论数 0

转载 线程堆栈大小 pthread_attr_setstacksize 的使用

pthread_create 创建线程时,若不指定分配堆栈大小,系统会分配默认值,查看默认值方法如下: # ulimit -s 8192 # 上述表示为8M;单位为KB。 也可以通过# ulimit -a 其中 stack size 项也表示堆栈大小。ulimit -s  value 用来重...

2012-09-19 20:20:57

阅读数 10155

评论数 0

转载 宏定义中的# ## @# \

# (stringizing)字符串化操作符。其作用是:将宏定义中的传入参数名转换成用一对双引号括起来参数名字符串。其只能用于有传入参数的宏定义中,且必须置于宏定义体中的参数名前。 如: #define example(instr) printf("the input string ...

2012-09-13 18:47:14

阅读数 704

评论数 0

转载 内存对齐详解

首先由一个程序引入话题: 1 //环境:vc6 + windows sp2 2 //程序1 3 #include 4 5 using namespace std; 6 7 struct st1 8 { 9 char a ; 10 int b ; 11 ...

2012-08-22 19:26:44

阅读数 895

评论数 0

原创 FireFox与IE不兼容的一个案例:FixFox中无法显示文本框内容

65 to 127 Byte 包数目 下面的一段php代码为该文本框赋值 echo 'document.getElementById("sum_127packets").value = "10...

2012-08-10 16:28:14

阅读数 1826

评论数 0

转载 Linux中select函数分析

select在socket编程中还是比较重要的,可是对于初学socket的人来说都不太爱用select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件...

2012-06-05 17:34:02

阅读数 547

评论数 0

转载 CVS常用命令详解

一.checkout 签出     cvs checkout [-ANPRcflnps] [-r rev| -D date] [-d dir] [-j rev1] [-j rev2] [-k kopt] modules...          -A    重置所有粘性标记/日期/kopt...

2012-05-25 13:31:53

阅读数 578

评论数 0

原创 CVS ERROR:CVS directory without administration files present. Cannot continue until this directory

在CVS上import新加的项目目录时出现标题所示错误。 原因是我新加的目录以前在别的cvs项目工作副本下,移植过来后在该文件夹下存在隐藏的原项目cvs目录,导致问题。删除该目录后重新添加即可。

2012-05-23 10:09:38

阅读数 968

评论数 0

原创 html中嵌套php实现隐藏table中tr

源码如下: <? if(get_custom_info("sub_customer")=="***") { echo ...

2012-05-23 09:56:46

阅读数 3018

评论数 0

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