自定义博客皮肤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)
  • 资源 (8)
  • 收藏
  • 关注

转载 多播(组播)原理分析

为什么要使用多播:        网卡从网络上接收到目标物理地址对应的所有bit位都为1的数据报时,会收到这条消息并将其上传给驱动程序,网卡的这种工作模式称为广播模式,网卡的缺省工作模式包含直接模式和广播模式。利用这一特性,UDP(用户数据报协议)还提供了向多个目标地址发送广播数据包的能力。广播数据即数据从一个工作站上发出,只要将数据包的目标物理地址对应的所有bit位都设为1,局域网内的所有工

2014-07-09 13:20:26 2021

转载 LSPCI详解分析

一、PCI简介     PCI是一种外设总线规范。我们先来看一下什么是总线:总线是一种传输信号的路径或信道。典型情况是,总线是连接于一个或多个导体的电气连线,总 线上连接的所有设备可在同一时间收到所有的传输内容。总线由电气接口和编程接口组成。本文讨论Linux 下的设备驱动,所以,重点关注编程接口。     PCI是Peripheral Component Interconnect(外围设

2014-03-22 08:53:22 6506

转载 ata驱动框架

这里所说的ATA Disk包含两大类:一类是传统的并行ATA(PATA),即IDE接口;另一类是目前流行的串行ATA(SATA)。对于IDE的驱动,Linux-2.6.28还进行了保留,其可以驱成传统的HD设备,也可以驱成流行的SD设备。对于SATA设备,Linux的标准做法是驱成SD设备,下面对传统ATA的驱动架构和目前流行ATA的驱动架构进行对比分析说明。        传统ATA

2014-03-21 09:39:36 4394

原创 glibc编译及makefile机制

本文只列出glibc的makefile中比较难以找出的一些规则,一些细节可以详细阅读glibc的makefile系统。 I.编译[redhat@localhost build]$ ../glibc-2.16.0/configure --disable-sanity-checks[redhat@localhost build]$ make | tee make.logi.

2013-12-26 22:59:01 6502 1

原创 perl hexdump

#!/usr/bin/perl#author : morphad#date : 2013-12-26use warnings;use strict;use IO::File;use Fcntl;sub hexdump{ my $data = shift; my $offset = shift; my @darray

2013-12-26 11:30:56 1270

原创 gdb tracepoint 使用demo

gdb对tracepoint的描述In some applications, it is not feasible for the debugger to interruptthe program's execution long enough for the developer to learn anythinghelpful about its behavior. If the

2013-12-13 23:28:53 4690

原创 redhat 添加DVD作为yum本地源

1.挂载DVD[root@localhost yum.repos.d]# cat /etc/fstab# user defined/home/redhat/pack/rhel-server-6.2-x86_64-dvd.iso /mnt/rhel iso9660 defaults,loop 0 0[root@localhost yum.repos.d]# mount -a

2013-11-30 09:31:36 3042

原创 Wireshark自定义协议RPUDPDL-同序号包统计插件

rpudpdl-stat-ssidsn.lua-- reference "Wireshark User's Guide - Chapter 11. Lua Support in Wireshark"-- This program will register a menu that will open a window with a count of occurrences-- of

2013-11-29 13:22:23 1994

原创 Wireshark自定义协议RPUDPDL(UDP下载)插件 (c版)

/* packet-rpudpdl.c * * RecordPlayer UDP Download Protocol *//* include files */#include "config.h"#include #include #include #include #include #include #include #inc

2013-11-29 12:42:50 1919

原创 linux下静态库.a与.o生成动态库.so

项目中需要用到时间同步,直接使用开源项目ntp中的ntpdate作为客户端来同步时间。但是又不想直接使用ntpdate这个命令,而是以动态库的形式使用。 1 生成ntpdate.so在编译ntpdate可执行程序时,可以看到ntpdate依赖libntp.a, version.o, ntpdate.o。所以ntpdate.so需要由libntp.a, version.o, nt

2013-11-21 22:14:35 1627

原创 linux下查看TCP端口所属进程/线程

在linux下面经常会需要“进程打开了哪些端口,某端口是哪个进程打开的”相关信息,下面来看下如何获取这些信息。注:"进程打开了哪些端口"与“某个端口属于哪个进程/线程”过程相近,只看“某个端口属于哪个进程/线程”1 netstat查看端口及进程用以下命令(需要root权限)查看端口及对应的进程[redhat@localhost ~]$ su密码:[root@localh

2013-11-21 20:20:36 27402 1

原创 查看Wireshark编译器版本

编译Wireshark插件,一般得与编译Wireshark的版本保持一致,这样才能直接将编译生成的dll插件放入Wireshark/plugins中后直接使用,而不用重新编译整个Wireshark。Wireshark Version 1.10.1 1 使用PEiD确定可以看到Linker Info为:10.0VS的Linker版本对应关系为VC6.0   :   6.0

2013-11-21 12:31:13 4074

原创 Wireshark自定义协议RPUDPDL(UDP下载)插件 (lua版)

-- reference "Wireshark User's Guide - Chapter 11. Lua Support in Wireshark"-- RP UDP Download protocoldo-- Proto local p_udpdl = Proto("udpdl","RecordPlayer UDP Download")-- ProtoFiel

2013-11-15 18:58:54 2039

原创 linux aio 实现概览

----------kernel version : 2.6.32.60----------I.aioAsynchronous I/O帮助用户程序提高CPU和IO设备的利用率和提高程序性能,特别是在高负载的IO操作下。比如各种代理服务器,数据库,流服务器等等。AIO可以一次性发出大量的read/write调用并且通过通用块层的IO调度来获得更好的性能,用户程序也可以减少

2013-11-04 20:42:32 4447

原创 ecb 布局配置 (emacs-ecb-cust-layout.el)

emacs-ecb-cust-layout.el; -*- mode: Lisp -*-;; reference path-to-ecb/ecb-layout-defs.el(ecb-layout-define "leftright-sa-m" left-right "This function creates the following layout: --

2013-10-27 21:24:38 1662

原创 aio 运用demo

aio.c#include #include #include #include #define error() printf("error [%s : %d]\n", __FILE__, __LINE__)#define BUFF_SIZE 51#define BUFF_CNT 50/* * 异步读取BUFF_CNT次__FILE__文件,每次大小

2013-10-23 15:10:28 1392

原创 c++ STL 红黑树实现

红黑树是一种自平衡二叉查找树,它的操作有着良好的最坏情况运行时间,并且在实践中是高效的: 它可以在O(log n)时间内做查找,插入和删除,这里的n是树中元素的数目。 红黑树应用:1.linux内核中,进程的虚拟地址区间由红黑树组织管理2.nginx中,超时时间由红黑树组织管理3.C++ STL中,C++中set,multiset,map,multimap集合模板类都是在STL

2013-08-06 23:02:20 2105

原创 linux 系统调用epoll_create epoll_ctl epoll_wait

epoll是Linux内核为处理大批量句柄而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。epoll主要涉及epoll_create epoll_ctl epoll_wait三个基本系统调用,及增加功能的epoll_create1,epoll_pwait epoll相对poll

2013-07-23 19:35:55 4310

原创 linux 当前处理信号自动屏蔽

当某个信号被处理时(即正在执行信号处理handler),内核会自动阻塞该信号的再次传递(再次传递会导致信号处理handler的嵌套);当信号处理返回后,内核会自动恢复该信号到调用信号处理handler之前的阻塞状态;如信号SIGUSR1在调用handler之前未被阻塞,在调用handler时被阻塞,handler执行完后恢复未被阻塞状态;信号SIGUSR2在调用handler之前被阻塞

2013-07-08 20:13:31 1324

原创 c++ 单例模式多线程竞态条件

单例模式在类只允许一个实例时用到以下是摘自“Design Patterns Elements of Reusable Object-Oriented Software”一书中单例模式实现:class Singleton {public: static Singleton* Instance();protected: Singleton(){};private: st

2013-07-06 15:29:54 2898

原创 linux signal传递(处理)

内核版本:2.6.32.60linux信号传递阶段发生在异常/中断返回到用户态时;当内核由内核态返回到用户态时,如果有信号pending到当前进程,内核就将信号传递给进程并做信号处理I.异常/中断返回i.信号传递由以下注释可以看出异常/中断或系统调用(特殊的中断)退出时,都会去检测pending的信号并做处理/* arch/x86/kernel/entry_32.S */

2013-07-05 23:03:58 2471

原创 linux signal产生(发送)

不论是内核发送信号(硬件异常-SIGSEGV等、软件通知-SIGPIPE等、终端键-SIGINT等),还是用户进程发送信号(kill系统调用),都要由内核将信号记录到相应(轻量级)进程描述符中的信号相关结构中、唤醒被阻塞的目标进程等。在信号发送阶段,内核将信号添加到信号pending队列中;在信号传递阶段,内核将信号从pending队列中取出,并处理(包括调用用户自定义处理、SIG_DFL默认

2013-07-04 23:07:19 4988

原创 linux 信号signal实现

信号是发送给进程或进程组的非常小的消息,通常只包含信号编号;现在的系统可以附带siginfo信息,见sigaction的SA_SIGINFO标识。信号主要有以下两个目的:1.让进程知道出现某异步事件2.出现异步事件,让进程能做出相应的处理(通过提供信号处理函数,由内核自动调用) I.信号生命周期i.信号生命周期1.信号产生:内核更新目标进程数据结构,表示出现某异步事件

2013-07-03 19:16:25 2760

原创 vim配置(~/.vimrc)

vim配置文件.vimrc set number" 缩进set smartindentset shiftwidth=4set softtabstop=4set expandtab" 代码跳转set tags=~/icssvn/tags" 自动补齐filetype plugin on

2013-07-02 23:34:49 913

原创 emacs配置(.emacs.d/init.el)

emacs配置文件.emacs;;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^;;Basic;;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

2013-07-02 23:30:27 7800

原创 linux 系统调用pipe

linux的管道是在pipefs上实现的,pipefs实现见linux pipe文件系统(pipefs)注:  pipe会在挂载到内核上的pipefs上创建虚拟管道文件(文件对象superblock,dentry,inode,file都是内核内存中);FIFO是在物理文件系统(ext4/ext3/nfs等)中创建管道文件,物理存储中有对应的文件(如文件inode) I.原型

2013-07-02 18:50:21 4783

原创 linux 有名管道FIFO

linux文件主要有4种:普通文件、目录文件、设备文件(字符设备文件/块设备文件)、管道文件 管道文件(p表示管道文件)[redhat@localhost tmp]$ mkfifo fifo[redhat@localhost tmp]$ ll fifoprw-rw-r--. 1 redhat redhat 0 7月 1 22:06 fifo文件系统(ext4/ext3/

2013-07-01 23:01:40 1647

原创 linux pipe文件系统(pipefs)

linux的pipe,FIFO(named pipe)都是基于pipe文件系统(pipefs)的。linux的pipe和FIFO都是半双工的,即数据流向只能是一个方向;pipe只能在pipe的创建进程及其后代进程(后代进程fork/exec时,通过继承父进程的打开文件描述符表)之间使用,来实现通信;FIFO是有名称的pipe,即可以通过名称查找到pipe,所以没有“只能在pipe的创建

2013-07-01 21:31:29 8263

原创 fork & exec时打开文件的变化

在分析linux系统调用fork,linux系统调用execve时,已经知道:1.fork时,子进程会复制父进程的打开文件描述符表2.exec时,进程的打开文件描述符表保持不变 用以下代码观察fork,exec打开文件的变化情况:父进程fork子进程,睡眠一定时间(方便命令行查看打开文件);子进程fork孙进程,睡眠一定时间;孙进程exec新程序,新程序也睡眠一定时间

2013-06-30 16:53:53 2107

原创 linux 系统调用fork vfork clone

fork:通过fork创建新进程vfork:主要用于马上执行exec的情况,因为马上就exec装入新的程序,所以可以去掉fork中分配新的地址空间等操作,进而加速进程创建clone:功能更强,参数更多;主要用于创建线程/父子进程资源共享等,可以通过设置相应的参数实现fork、vfork的功能 I.系统调用i.系统调用arch/x86/kernel/syscall_table

2013-06-29 12:02:18 2812

原创 c++ 虚函数表

c++中的虚函数作用主要是实现多态,用父类指针指向子类实例,通过父类指针调用子类成员函数,而这个成员函数在父类中被声明为虚函数。要实现父类指针调用子类成员函数,主要满足以下两个条件:1、子类实例指针转换成父类指针时,指针所指的子类实例内容必须与父类内容完全一致(成员及顺序);主要是通过在子类继承父类时,按继承顺序将父类内容与子类成员组成子类内容来实现,将子类实例指针偏移一定量就能得到父类指

2013-06-27 22:08:43 1191

原创 linux 虚拟文件系统VFS

与其它系统完美共存是linux的成功之处之一,linux可以透明挂载其它系统文件格式的磁盘或分区,如Windows的FAT32、NTFS等;linux使用虚拟文件系统VFS(Virtual Filesystem Switch)来支持多种类型的文件系统。VFS的思想是:将不同类型文件系统信息存放到内核中,linux所有文件系统支持的每个操作都有一个域与之对应,当读、写或其它功能调用时内核

2013-06-24 18:51:52 1884

原创 linux SysV IPC msg消息队列实现

消息队列是由存放在内核中的消息组成的链表,由IPC id标识。由msgget创建新队列或打开已经存在的队列由msgsnd将消息添加到消息队列尾,每个消息包括正整数标识的类型,非负的长度,及数据。由msgrcv从消息队列中取消息,不必按FIFO取消息,可以通过类型字段取相应的消息。 I.数据结构i.msg_queue 87 /* one msq_queue structu

2013-06-22 11:48:06 3199

原创 linux SysV IPC shm共享内存实现

共享内存可以使多个进程共享某段内存,由于不需要进程间数据复制,所以是速度最快的IPC。多个进程访问共享内存时需要同步机制,如进程A往共享内存中写数据时,进程B不能使用共享内存;通常采用信号量同步多进程访问共享内存。共享内存实现主要有以下几点:1.分配物理内存2.将物理内存映射到进程的地址空间;通过修改进程的页表,可以虚拟地址直接访问物理内存3.进程不再使用共享内存时,取消物理内

2013-06-21 21:41:30 4166

原创 linux SysV IPC sem信号量实现

信号量值是一个计数器,用于控制多进程对共享资源的访问;进程获取共享资源需要以下步骤:1.检查资源的信号量值2.如果信号量值是正,进程可以访问资源;进程将信号量值减1,表示进程已经使用了一个资源3.如果信号量值是0,进程被阻塞直到信号量值大于0;被阻塞进程被唤醒时重复执行步骤1注:检查信号量值和减1必须为原子操作 SysV信号量有以下特征:1.信号量是一个信号量值集合,在

2013-06-20 23:18:11 3401

原创 semop SEM_UNDO标识

当操作信号量(semop)时,sem_flg可以设置SEM_UNDO标识;SEM_UNDO用于将修改的信号量值在进程正常退出(调用exit退出或main执行完)或异常退出(如段异常、除0异常、收到KILL信号等)时归还给信号量。如信号量初始值是20,进程以SEM_UNDO方式操作信号量减2,减5,加1;在进程未退出时,信号量变成20-2-5+1=14;在进程退出时,将修改的值归还给信号量,信号

2013-06-19 21:45:59 5002

原创 linux SysV IPC实现

IPC(Interprocess Communication)表示进程间通信机制;System V IPC机制主要有消息队列、共享内存、信号量,linux中实现了SysV IPC。 I.SysV IPC创建/获取消息队列、共享内存、信号量的创建/获取API原型如下:int msgget(key_t key, int msgflg);int shmget(key_t key, s

2013-06-14 20:44:52 2491

原创 linux cred管理

I.credential管理linux系统中,一个对象操作另一个对象时通常要做安全性检查。如一个进程操作一个文件,要检查进程是否有权限操作该文件。linux内核中,credential机制的引入,正是对象间访问所需权限的抽象;主体提供自己权限的证书,客体提供访问自己所需权限的证书,根据主客体提供的证书及操作做安全性检查。证书管理术语:客体:指用户空间程序直接可以操作的系统对象,如进

2013-06-13 20:43:43 7455

原创 linux idr机制

I.idr机制i.idr介绍系统许多资源都用整数ID来标识,如进程ID、文件描述符ID、IPC ID等;资源信息通常存放在对应的数据结构中(如进程信息存放在task_struct中、ipc信息存放在ipc_perm中),id与数据结构的关联机制有不同的实现,idr机制是其中的一种。idr,id radix的缩写。idr主要用于建立id与指针(指向对应的数据结构)之间的对应关系。idr用

2013-06-07 21:45:23 8175 1

原创 linux TCP超时重传

TCP超时重传是保证TCP可靠性传输的机制之一,当超时后仍没有收到应答报文,就重传数据包并设置超时时钟(超时时间一般增大到原超时时间2倍);直到收到应答报文或超过最大重试次数。linux TCP超时重传是通过设置重传超时时钟icsk_retransmit_timer来实现的。零窗探测超时时钟与重传超时时钟共用icsk_retransmit_timer,根据icsk_pending是IC

2013-06-04 11:16:48 23191 3

C99标准(英文版)

C99是标准ISO/IEC 9899:1999的简称。 c99是在c89的基础上发展起来的,增加了基本数据类型,关键字和一些系统函数等。

2014-03-15

存储技术原理分析:基于Linux_2.6内核源代码.zip

<> 与 <> 一起解压获得完整的pdf.

2014-03-14

存储技术原理分析:基于Linux_2.6内核源代码(部分)

与存储技术原理分析:基于Linux_2.6内核源代码.z01 与 存储技术原理分析:基于Linux_2.6内核源代码.zip 解压获得完整的pdf

2014-03-14

The Second Extended File System

This book is intended as an introduction and guide to the Second Extended File System, also known as Ext2. The reader should have a good understanding of the purpose of a file system as well as the associated vocabulary (file, directory, partition, etc). Implementing file system drivers is already a daunting task, unfortunately except for tidbits of information here and there most of the documentation for the Second Extended Filesystem is in source files. Hopefully this document will fix this problem, may it be of help to as many of you as possible.

2013-12-08

Beamer v3.0 with PSTricks

Beamer v3.0 with PSTricks KiJoo Kim (a.k.a. Daisyweb) November 4, 2004

2013-12-08

Beamer 快速入门

Beamer 快速入门 Rouben Rostamian [著] 黄旭华 [译]

2013-12-08

Beamer v3.0 Guide

Beamer v3.0 Guide KiJoo Kim (a.k.a. Daisyweb)

2013-12-08

python cookbook

This book is aimed at more experienced Python programmers who are looking to deepen their understanding of the language and modern programming idioms. Much of the material focuses on some of the more advanced techniques used by libraries, frameworks, and applications. Throughout the book, the recipes generally assume that the reader already has the necessary background to understand the topic at hand (e.g., general knowledge of computer science, data structures, complexity, systems programming, concurrency, C programming, etc.). Moreover, the recipes are often just skeletons that aim to provide essential information for getting started, but which require the reader to do more research to fill in the details. As such, it is assumed that the reader knows how to use search engines and Python’s excellent online documentation. Many of the more advanced recipes will reward the reader’s patience with a much greater insight into how Python actually works under the covers. You will learn new tricks and techniques that can be applied to your own code.

2013-12-08

空空如也

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

TA关注的人

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