
linux
文章平均质量分 68
tym8865
勤奋工作,刻苦学习,热爱编程
展开
-
鸟哥私房菜笔记一(计算机基础)
计算机的组成计算机是接受用输入的指令和数据,经过中央处理器的数据和逻辑单元元算处理后,以产生或存储为有用的数据。计算机主要分为三大部分:1、输入设备;2、CPU;3、输出设备,示意图如下:注:从图中可以看出数据都是通过内存转出去的CPU的种类:1、精简指令集(RISC);2、复杂指令集(CISC)精简指令集的微指令集较为精简,每个指令的执行时间很短,而复杂指令集花费的时间较长原创 2012-04-07 22:21:53 · 1242 阅读 · 0 评论 -
linux内核学习笔记------iP选项处理(一)
ip首部分为固定部分和选项部分;固定部分为20个字节,而选项部分则是变长的,最长不超过40个字节。选项的格式分为单字节和多字节两种。单字节只包括一个字节的选项类型,而多字节则除一个字节的类型之外,还包括选项长度以及选项数据。包括以下几种ip选项:1、选项列表的结束符此选项标识了选项列表的结束,所有选项的结束,而不是一个选项的结束。如下图000000原创 2013-12-25 21:17:20 · 2808 阅读 · 0 评论 -
linux内核学习笔记------ip数据报的输入处理
链路层接收到数据包后会通过netif_receive_skb将数据包丢给网络层,而网络层处理接口就是ip_rcv。网络层接口都是通过网络层协议号从ptype_base散列表中找到相应的接收函数。ipv4的数据包类型为ip_packet_type,通过dev_add_pack注册到系统的ptype_base中。ip_rcv功能:1、首先会丢弃不是发往本地的数据报;2、如果数据报是一个共享原创 2013-12-24 21:29:22 · 1760 阅读 · 0 评论 -
linux内核学习笔记------ARP:地址解析协议
当发送ARP请求时,发送方填入发送方以太网地址、发送方ip地址以及目标ip地址。目标主机接收到这个ARP广播包时,会在响应报文中填上自己的以太网地址。ARP报文格式如下:硬件类型协议类型硬件地址长度协议地址长度操作码src硬件地址src ip地址dst硬件地址目标ip地址1、硬件类型都是以ARPHDR_开头2、操作码包原创 2014-01-07 20:58:05 · 4685 阅读 · 0 评论 -
linux内核学习笔记------对端信息块
首先,什么是对端信息块?在linux内核源码剖析——tcp/ip实现这本书中是真么介绍的:对端信息块主要用于组装ip数据包时防止分片攻击,在建立tcp连接时检测连接请求段是否有效以及其序列号是否回绕在linux内核中是通过inet_peer结构体描述的:struct inet_peer{ /* group together avl_left,avl_right,v4daddr to原创 2013-12-23 20:38:52 · 1440 阅读 · 0 评论 -
linux内核学习笔记------邻居子系统(一)
在学习之前,可以先读读这两篇博客,特别是第一篇:http://blog.youkuaiyun.com/minghe_uestc/article/details/7794852http://blog.youkuaiyun.com/qy532846454/article/details/6806197邻居子系统的结构由多个数据结构组成:1、neigh_table结构:该结构主要用来存储与邻居协议相关的参数原创 2014-01-05 21:09:36 · 3163 阅读 · 0 评论 -
linux内核学习笔记------ip报文组装
ip报文有分片就会有组装。在接收方,只有报文的所有分片被重新组合后才会提交到上层协议。内核组装ip报文用到了ipq结构体:(注,这系列源码中的注释都来自:http://blog.youkuaiyun.com/justlinux2010)struct ipq { struct inet_frag_queue q; /* * 标识分片来源,取值为IP_DEFRAG_LOCAL_DELIVER等。原创 2014-01-01 21:14:22 · 3095 阅读 · 1 评论 -
linux内核学习笔记------ip报文的分片
对网络比较熟悉的童鞋都知道,当发送的ip报文长度超出了最大的传输单位MTU,且允许分片的情况下,就会对ip报文进行分片。在上层要发送数据时就会调用dst_output,dst_output就会调用ip_output,而ip_output就会调用ip_finish_output,在ip_finish_output把数据发送出去之前就会判断该报文是否进行分片。static int ip_finis原创 2013-12-29 21:09:25 · 9011 阅读 · 0 评论 -
nginx运行期间修改配置文件的处理
今天在群里讨论到一个问题就是:如果在nginx运行期间,修改了配置文件,这个时候是重启nginx还是有别的办法呢?对nginx比较熟的童鞋,脑子立马肯定会有答案。执行下面的命令就好了./nginx -s reload那么nginx是怎么处理reload的呢?是像squid那样停止所有的任务后再重读配置文件还是别的处理呢?nginx是不需要停止服务去读取配置文件的,下面来看nginx具体的处理。原创 2013-12-11 22:14:04 · 8612 阅读 · 0 评论 -
消息队列
消息队列分两种:posix消息队列和system v消息队列。消息队列是随系统内核存在的,也就是说只要系统不重启,已经创建的消息队列是不会消失的。下面一对比的形式来说明posix和system v消息队列。两种消息队列创建的时候指定的路径文件是必须存在的,否则报错创建消息队列:1、posix消息队列:#include mqid_t mq_open(const char原创 2013-04-23 14:25:32 · 1082 阅读 · 0 评论 -
linux fork()函数的解析
fork()基本意思Unix环境高级编程已经讲述的很清楚了,下面来讲下循环创建多个子进程的情况。直接上代码:int main(int argc, char **argv){ int ret, i; pid_t pid; for(i=0; i<2; i++){ pid = fork(); if(pid < 0) return -1; else if(pid ==原创 2013-03-26 14:10:23 · 1134 阅读 · 0 评论 -
rtl8139网卡驱动源码解析
学习应该是一个先把问题简单化,在把问题复杂化的过程。一开始就着手处理复杂的问题,难免让人有心惊胆颤,捉襟见肘的感觉。读Linux网卡驱动也是一样。那长长的源码夹杂着那些我们陌生的变量和符号,望而生畏便是理所当然的了。不要担心,事情总有解决的办法,先把一些我们管不着的代码切割出去,留下必须的部分,把框架掌握了,哪其他的事情自然就水到渠成了,这是笔者的心得。一般在使用的Linux网卡驱动代码动辄3转载 2013-01-28 11:16:54 · 2819 阅读 · 0 评论 -
struct rlimit
1、rlimit介绍在Linux系统中,Resouce limit指在一个进程的执行过程中,它所能得到的资源的限制,比如进程的core file的最大值,虚拟内存的最大值等。Resouce limit的大小可以直接影响进程的执行状况。其有两个最重要的概念:soft limit 和 hard limit。struct rlimit {rlim_t rlim_cur;转载 2012-09-20 18:59:53 · 801 阅读 · 0 评论 -
CPU AFFINITY
cpu 亲和力就是指linux系统中能够将一个或多个进程绑定到一个或者多个处理器上运行。一个进程的cpu亲合力掩码决定了该进程将在哪个或者哪几个CPU上运行,在一个多处理器系统中,设置CPU亲合力的掩码可能会获得更好的性能。一个CPU的亲和力掩码用一个cpu_set_t结构来表示一个CPU集合,下面的几个宏分别对这个掩码集进行操作:1、CPU_ZERO()清空一个集合2、C转载 2012-09-20 18:55:34 · 1149 阅读 · 0 评论 -
va_start, va_end, va_list
1,当无法确定函数的所有实参的类型和数目时,可用省略号指定参数表void foo(int i, ...)printf(fmt, .....)2、函数参数的传递原理函数参数是以数据结构:栈的形式存取的,从右至左入栈#include void fun(int a, ...){ int *tmp = &a; tmp ++; for(int i=0; i<a;转载 2012-09-20 10:30:23 · 1386 阅读 · 0 评论 -
CentOS安装vmware tools
1、在虚拟机下方点击安装vmware tools,这时就会自动下载vmware tools.2、下载好的vmware tools是在cdrom里面,所以需要挂载到/mnt目录下,命令如下:mount /dev/cdrom /mnt/3、复制tar包到根目录下4、执行vmware_install.pl安装过程中遇到的问题及解决办法1、/usr/lib原创 2012-09-16 20:38:03 · 2150 阅读 · 0 评论 -
linux单网卡上配置双IP
linux单网卡上配置双IP/sysconfig/network-scripts在network-scripts下有一个ifcfg-eth0复制ifcfg-eth0 为ifcfg-eth0:1然后用vi编辑进行编辑vi ifcfg-eth0:1# Intel Corporation 82566DC Gigabit Network ConnectionDEVICE=eth转载 2012-07-05 17:42:18 · 4387 阅读 · 0 评论 -
鸟哥私房菜笔记二(硬件设备名及磁盘的分区)
硬件设备名在linux系统中,每个设备都是当做文件来对待的。各设备在linux的文件名如下: 磁盘分区磁盘是由盘片,机械手臂,磁头和主轴马达组成,而数据就是写在盘片上。盘片又可分为扇区和柱面两种单位,其中扇区每个为512bytes。磁盘的第一个扇区是最重要的,因为它会记录两个重要的信息:1、主引导分区(MBR):可以安装引导加载程序的地方,445bytes;2、分区表:原创 2012-04-07 22:48:23 · 1092 阅读 · 0 评论 -
linux内核学习笔记------ip选项处理(二)
在以前的笔记中讲过ip数据报的处理,里面提到过ip_rcv_finish这个函数,这个函数会调用ip_rcv_options来解析并处理iP首部中的ip选项。if (iph->ihl > 5 && ip_rcv_options(skb)) goto drop;在ip_rcv_finish中会判断ip首部长度是否大于5,只有首部长度大于20的情况下才会有ip选项,并调用ip_rcv_opti原创 2013-12-26 21:03:04 · 2406 阅读 · 0 评论