`
jakielong
  • 浏览: 223668 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
参看: http://www.linuxjournal.com/article/6345 http://www.ibm.com/developerworks/cn/java/j-zerocopy/index.html http://blog.chinaunix.net/u/5251/showart_411109.html 1.传统的报文捕获实现过程1.1 协议栈运行机制分析当操作系统协议栈正常工作时,应用程序只 ...
原型: #include <sys/sendfile.h> ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count);  说明: 第 1 个参数 out_fd,在 2.6 内核里,必须指向一个 socket  。第 2 个参数 in_fd,是一个要拷贝文件的文件描述服。第 3 个参数 offset, 是一个偏移量,它在不断的 sendfile 中,这个偏移量会随着偏移增加,直到文件发送完为止,当然在程序中需要用如 while() 这样的语句来控制。第 4 个参数 count,表示要传送的字节 ...
最近在搞zerocopy的东西,看到了这篇文章,拷过来备用! 转自:http://www.groad.net/bbs/simple/?t2276.html   本文整理来自:http://www.linuxjournal.com/article/6345?page=0,0 一、什么是“零拷贝” 零拷贝(zero-copy)基本思想是:数据报从网络设备到用户程序空间传递的过程中,减少数据拷贝次数,减少系统调用,实现CPU的零参与,彻底消除CPU在这方面的负载。实现零拷贝用到的最主要技术是DMA数据传输技术和内存区域映射技术。先看普通网络服务守护进程的一般服务方法:   read(fi ...
队列简介: 队列(Queue)是一种数据结构,可以在队列的一端插入元素而在队列的另一端删除元素。   ( 1 )允许删除的一端称为 队头( Front ) 。   ( 2 )允许插入的一端称为 队尾( Rear ) 。   ( 3 )当队列中没有元素时称为 空队列 。   ( 4 )队列亦称作先进先出( First In First Out )的线性表,简称为 FIFO 表 。 队列的修改是依先进先出的原则进行的。新来的成员总是加入队尾(即不允许 " 加塞 " ),每次离开的成员总是队列头上的(不允许中途离队),即当前 " 最老的 " 成员离队 ...
#include "stdio.h" #include "stdlib.h" #include "string.h" #define SIZE 5; #define LEN sizeof(struct node) typedef struct node { char name[20]; struct node *next; } nodes; nodes *createNewNodes(void) { printf("创建新链表\n"); nodes *p; ...
  相信绝大多数都学习过《数据结构》这门课程,而对这门课程里最熟悉的应该是堆栈和队列。本人前段时间买了一本有关算法(C语言实现)的书,发现其中对循环队列这一结构的算法存在漏洞,故写此文与大家交流探讨。 首先提一下循环队列的概念:队头指针head,队尾指针tail。 很显然,当队列满后,即便全部元素都出队,队列还是满的状态。这种情况就叫做“假溢出”,即数组中明明有可用空间,但却无法使用。   这是由定长数组的特性决定的。但我们可用改变一下思路,当队尾指针指向数组最后一个位置时,如果再有数据入队,并且队头指针没有指向数组的第一个元素,那么就让队为指针绕回到数组头部。这样就形成了一个 ...
  进程是Linux资源分配的对象,Linux会为进程分配虚拟内存(4G)和文件句柄等资源,是一个静态的概念。线程是CPU调度的对象,是一个动态的概念。一个进程之中至少包含有一个或者多个线程。这些线程共享该进程空间的内存和文件句柄资源,多个线程竞争地获得这些资源。为了防止多个线程访问资源的不一致性,多线程编程一个很重要的任务就是控制好线程同步。本文简单介绍一下Linux的同步对象和使用时的一些注意事项。 1、互斥量(Mutex)      互斥量本质上讲是一把锁,该锁保护一个或者一些资源(内存或者文件句柄等数据)。一个线程如果需要访问该资源必须要获得互斥量,并对其加锁。这时如果其他线程如果 ...
自动变量   什么是自动变量呢?自动变量就是指在函数内部定义使用的变量。他只是允许在定义他的函数内部使用它。在函数外的其他任何地方都不能使用的变量。自动变量是局部变量,即它的区域性是在定义他的函数内部 ...
系统 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # hostname # 查看计算机名 # lspci -tv # 列出所有PCI设备 # lsusb -tv # 列出所有USB设备 # lsmod # 列出加载的内核模块 # env # 查 ...
库的作用   大体上库的存在,有两方面的原因,一是代码的复用,二是声明和实现的分离。将功能相近的使用模块封装成库,使代码的复用、管理和分发变得简单了许多,例如著名的开源图形库ncurses,你可以自行编译,更可以直接使用已经编译好的现成的库文件。另外,由于库是二进制文件,某种意义上讲,将功能的实现部分隐藏了起来,这就为商业代码的保护提供了一种方式。  库文件按照链接方式和时机,可以分为动态库和静态库,下面分别介绍它们在Linux环境中的创建和使用方法。 静态链接库   静态库是指在程序的链接阶段,其中被用到的代码会被直接链接到可执行文件中的库。静态链接的可执行程序包含了其所需的全部库 ...
这是一个自动关机的小程序。该程序可以守护进程的方式运行,当用户在一定时间(比如30分钟)没有鼠标和键盘操作后就会自动关机。。  由于需要同时监听鼠标和键盘操作,所以需要采用多线程的方式来实现。其中两个线程分别监视鼠标和键盘,一旦检测到相应动作(鼠标点击和移动、击键等),全局时间戳stamp(time_t)就会被设成当前时间。主线程每隔一定时间(比如1秒)检查stamp,若当前时间值(time(NULL))比stamp大30*60,则执行停机操作(使用system函数执行init 0命令,或者使用reboot函数)。 #include <stdio.h> #includ ...
  几乎所有的 Linux 发行版本都包含 ipcs 命令,该命令可以提供当前加载到系统上的IPC 资源信息。通过 ipcs 可以确定系统的当前 IPC 限制,还可以检查系统当前使用的上述三类IPC资源的状态。例如,假若应用程序启动失败,可以检查系统上的 IPC使用情况来判断是否已超出了某个IPC限制。为了确定系统的IPC资源状态,可以在 root用户权限下执行带有-u 选项的 ipcs 命令。 # ipcs -u ------ Shared Memory Status -------- segments allocated 32 pages allocated 2361 ...

stdarg.h

  stdarg.h是C语言中C标准函数库的头文件,stdarg是由stdandard(标准) arguments(参数)简化而来,主要目的为让函数能够接收不定量参数。 C++的cstdarg头文件中也提供这样的机能;虽然与C的头文件是兼容的,但是也有冲突存在。 不定参 ...
  1 基本解释  extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。  另外,extern也可用来进行链接指定。 2 问题:extern 变量  在一个源 ...
网络编程(7) 7. TCP/IP协议 你也许听说过TCP/IP协议,那么你知道到底什么是TCP,什么是IP吗?在这一章里面,我们一 起来学习这个目前网络上用最广泛的协议. 7.1 网络传输分层 如果你考过计算机等级考试,那么你就应该已经知道了网络传输分层这个概念.在网络上 ,人们为了传输数据时的方便,把网络的传输分为7个层次.分别是:应用层,表示层,会话层 ,传输层,网络层,数据链路层和物理层.分好了层以后,传输数据时,上一层如果要数据的 话,就可以直接向下一层要了,而不必要管数据传输的细节.下一层也只向它的上一层提供 数据,而不要去管其它东西了.如果你不想考试,你没有必 ...
Global site tag (gtag.js) - Google Analytics