自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (6)
  • 收藏
  • 关注

原创 文件编码格式

文件编码格式 utf-8 gbk unicode 编码格式内容

2022-05-13 11:54:02 4741

原创 C语言类型转换的问题

数据类型转换 16进制输出 字符转换为十六进制

2022-05-12 19:50:04 317

原创 数据包零拷贝

下文是对工作中的零拷贝机制进行主要代码注释描述,以便之后能够快速记忆和理清其工作原理。1、物理内存的分配,代码与内核一起编译,内核启动执行do_early_param进行分配__initcall (capmem_init) //相当于module_init,内核启动流程do_initcalls()会遍历.initcall*.init段,依次执行各个级别的函数cap...

2022-01-13 21:50:14 169

原创 Snort框架分析

下面是snort2.0的框架分析,相比snort之后的版本,其结构比较简单、更容易学习和理解,其次是本人对此版本相对比较熟悉一些,可以为初次接触和学习snort的朋友提供帮助,能够快速整体全局性地了解snort的基本框架。下面从四个方面展开描述。一、snort插件snort中的插件有3类,输出插件,预处理插件,规则选项检测插件插件的好处:灵活地选择使用哪些功能开发人员很容易开发第三方插件,易于扩展。1、输出插件InitOutputPlugins //输出插件初始化函数注册1) 注册过.

2022-01-07 17:11:35 1221

原创 dm9000网卡驱动分析

dm9000_probe:ndev = alloc_etherdev(sizeof(struct board_info)); //net_device分配与初始化db = netdev_priv(ndev); //网卡硬件信息初始化db->addr_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);//地址资源获取db->data_res = platform_get_resource(pdev, IORE...

2022-01-05 16:15:09 744

原创 Linux设备模型

kobject ktype kset是设备模型的基础kobject嵌入在其他结构体当中,该结构便拥有了kobject的功能。提供如引用计数、名称、父指针等字段,用于创建对象的层次结构。ktype是为了描述一族kobject所具有的普遍特性。因此,不再需要每个kobject都分别定义自己的特性,而是将这些普遍的特性在ktype结构中一次定义,然后所有同类的kobject都能共享一样的特性。kset是kobject对象的集合体。可以当作一个容器,具有相同ktype的kobject可以分组到不.

2022-01-05 11:10:50 334

原创 ELF文件格式分析与静态链接总结归纳

一、binutils包 binutils包为elf格式文件提供查看、编辑、反汇编等命令 通过yum provides */objdump 或rpm -qif /usr/bin/objdump得到提供objdump命令的安装包为binutils,通过rpm -qpl 查看包内容,得知,binutils除了提供objdump,还提供ar as ld nm readelf size strip objcopy等二进制相关命令。下面提供objdump常用的参数-h 把elf文件各...

2021-12-20 17:52:50 316

原创 linux C/C++运行时库总结归纳

描述c运行库与main函数运行前后的内幕

2021-12-13 18:00:50 2346

原创 Linux虚拟文件系统vfs与文件操作始末

虚拟文件系统(vfs)是Linux内核的子系统,其设计目的是对用户层(系统调用)屏蔽底层(各特定文件系统)实现的复杂性,对底层提供统一的接口与数据结构,使得能衔接各个特定文件系统(如ext2、ext3、fat32等),是用户层与文件系统层之间的抽象层。 与vfs层相关的主要数据结构有以下几个:超级块对象super_block、索引节点对象inode、目录项dentry、文件对象file、文件系统类型file_system_type、挂载的文件系统vfsmount等。 下面简单介...

2021-12-13 15:05:59 792

转载 开源漏洞扫描器合集

首先,谢谢原作者: (此文为转载的文章,现将原地址贴出如下:http://blog.csdn.net/mypc2010/article/details/77679760)https://github.com/Canbing007/wukong-agentpython redis awvs api nessus api=====================

2018-01-15 14:56:30 11064

转载 Linux 3.x 内核学习笔记——x86 64位内存管理

地址映射64位地址采用4层地址映射,如下图:pgd、pud、pmd、pte各占了9位,加上12位的页内index,共用了48位。即可管理的地址空间为2^48=256T。而在32位地址模式时,该值仅为2^32=4G。另外64位地址时支持的物理内存最大为64T,见e820.c中MAX_ARCH_PFN的定义:# define MAX_ARCH_PFN MAXMEM>>P

2017-01-05 10:09:53 479

原创 tcp标志push与发送窗口的关系

系统调用read与recv读取socket缓存区 发送端系统调用write与push标志位及接收缓存区大小yupush标志位的关系

2016-06-03 13:58:07 2336

转载 Linux 3.x 内核学习笔记——x86 64位内存管理

地址映射64位地址采用4层地址映射,如下图:pgd、pud、pmd、pte各占了9位,加上12位的页内index,共用了48位。即可管理的地址空间为2^48=256T。而在32位地址模式时,该值仅为2^32=4G。另外64位地址时支持的物理内存最大为64T,见e820.c中MAX_ARCH_PFN的定义:# define MAX_ARCH_PFN MAXMEM>>PAGE_

2015-03-11 14:43:44 749

转载 init进程

init 进程 getty rc bash

2015-01-27 16:31:07 1499

转载 Bios读文件与Grub(bootload)和initrd和内核对文件系统驱动的支持

前言本文源于这样一个问题:内核镜像存储在硬盘下特定文件系统中,bootloader必须先加载文件系统驱动,才能读取内核文件。类似的,内核要读取根文件系统中的文件,也需要先加载文件系统驱动。如果文件系统驱动存储在硬盘中,启动时没有驱动无法读硬盘,将导致整个启动过程的失败。那么Grub和内核如何解决这个问题的呢?启动过程中需要读硬盘的时刻:1. BIOS读硬盘中MBR,将控制权交给MB

2014-10-27 15:33:21 736

转载 linux-Tcp IP协议栈源码阅读笔记

2.4 路由初始化(包括neighbour表、FIB表、和路由缓存表的初始化工作)             rtcache表 ip_rt_init()函数 在net/ipv4/ip_output中调用,net/ipv4/route.c中定义             FIB初始化 在ip_rt_init()中调用 在net/ipv4/fib_front.c中定义       

2014-03-20 16:17:32 905

转载 S3C2440与SDRAM NorFlash NandFlash连线分析

http://blog.163.com/zhoufeng332@126/blog/static/62286701201272502756118/一、SDRAM(HY57V561620F)连线分析1、  S3C2440 有27根地址线ADDR[26:0],8根片选信号ngcs0-ngcs7,对应bank0-bank7,当访问bankx 的地址空间,ngcsx引脚为低电平,选中外设。2

2014-03-20 09:50:41 978

转载 S3C2440地址空间的分配及启动过程

S3C2440地址空间的分配及启动过程  一、S3C2440地址空间的分配1.   s3c2440A 的存储器控制器有以下特性:l  大小端(通过软件选择)l  地址空间:每个bank有128M 的字节(总共1G字节/8个banks)l  可编程的访问位宽,bank0(16/32 位),其他bank(8/16/32 位)l  共8个存储器banksl  6

2014-03-20 09:43:29 830

转载 MMU内存管理单元

内存管理单元(MMU)介绍MMU是存储器管理单元的缩写,是用来管理虚拟内存系统的器件。MMU通常是CPU的一部分,本身有少量存储空间存放从虚拟地址到物理地址的匹配表。此表称作TLB(转换旁置缓冲区)。所有数据请求都送往MMU,由MMU决定数据是在RAM内还是在大容量存储器设备内。如果数据不在存储空间内,MMU将产生页面错误中断。MMU的两个主要功能是:1.     将虚地址转换成物理地

2014-03-11 09:49:54 838

转载 sqlite3

使用的过程根据使用的函数大致分为如下几个过程:sqlite3_open()sqlite3_prepare()sqlite3_step()sqlite3_column()sqlite3_finalize()sqlite3_close()这几个过程是概念上的说法,而不完全是程序运行的过程,如sqlite3_column()表示的是对查询获得一行里面的数据的列的各个操作统称,实际上在sqli

2014-02-27 15:27:34 785

转载 iptables

iptables 命令介绍iptables防火墙可以用于创建过滤(filter)与NAT规则。所有Linux发行版都能使用iptables,因此理解如何配置iptables将会帮助你更有效地管理Linux防火墙。如果你是第一次接触iptables,你会觉得它很复杂,但是一旦你理解iptables的工作原理,你会发现其实它很简单。首先介绍iptables的结构:iptab

2014-02-13 16:42:41 500

转载 NetFilter

一、概述1. Netfilter/IPTables框架简介          Netfilter/IPTables是继2.0.x的IPfwadm、2.2.x的IPchains之后,新一代的Linux防火墙机制。Netfilter采用模块化设计,具有良好的可扩充性。其重要工具模块IPTables连接到Netfilter的架构中,并允许使用者对数据报进行过滤、地址转换、处理等操作。   

2014-02-13 16:39:00 586

转载 目录项缓存与散列表

所谓缓存,是指把存在于磁盘中的操作系统运行时频繁使用到的信息读取到内存中去,以提高 CPU 读取这些信息的速度。所以目录项的缓存就是指把存在于磁盘上的目录项信息读取到内存中去,而这些目录信息就是一个个的 dentry 结构。当某个进程运行时用到某个目录项,但在内存中却没有相应的 dentry 结构,就需要在内存中建立 ( 所谓的建立实际是从磁盘上把相应的 dentry 结构读取到内存中去 ) 一个

2013-12-19 16:58:37 542

转载 内核数据结构hlist_head

内核中,使用list_head作为链表,该数据结构本身即使head又是node。如果将它作为hash list的头节点,那么每个头节点会占用8个字节。因此内核中对其优化,使用hlist_head作为hash表的头节点。内核中定义其数据结构为:struct hlist_head { struct hlist_node *first; };struct hlist_node { s

2013-12-19 10:13:02 547

转载 哈希表和哈希算法

散列表,它是基于快速存取的角度设计的,也是一种典型的“空间换时间”的做法。顾名思义,该数据结构可以理解为一个线性表,但是其中的元素不是紧密排列的,而是可能存在空隙。散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。

2013-12-18 17:12:52 1043

转载 路径名解析过程使用到的各种hash函数

d_hash(dentry,hash) 为散列函数 , 它将 dentry 地址和 hash 值相组合 , 映射到 dentry_hashtable 表中 , 返回相应的散列链 ;在底层文件系统的i_op中也有一个同名的d_hash函数,这个函数仅用来计算目录项对应的散列值;d_rehash(dentry) 将 dentry 加入散列表 ;d_drop(dentry) 将 dentry

2013-12-18 10:45:40 588

转载 glib库异步队列和线程池代码分析

本文章主要讲了两部分内容:一是分析了异步队列的原理和实现,二是分析线程池的原理和实现。在多线程程序的运行中,如果经常地创建和销毁执行过程相似而所用数据不同的线程,系统的效率,系统资源的利用率将会受到极大的影响。对于这一问题可用类似glib库中的线程池的解决办法。   我 们可以这样想像线程池的处理,当有新的数据要交给线程处理时,主程序/主线程 就从线程池中找到一个未被使用的线程处理

2013-12-10 14:07:00 1604

转载 Linux 内核sys_open文件系统与设备操作流程分析

Author:  sinisterEmail:  [email protected]:http://www.whitecell.orgDate:    2007-01-23本笔记对 linux kernel 的文件系统操作以及设备操作进行了分析,主要是针对 ext3 文件系统的 open 流程的分析,目的是为了解答心中的几个疑问:1、一个文

2013-12-07 11:15:07 2528 1

关于漏洞扫描原理与技术

扫描程序是自动检测远端或本地主机脆弱性的程序。通过与目标主机TCP/IP端口建立连接并请求某些服务(如TELNET、FTP等),记录目标主机的应答,搜集目标主机相关信息(如匿名用户是否可以登录等),从而发现目标主机某些内在的安全漏洞。对某一类漏洞进行检查的程序成为一个扫描方法。 扫描常用技术包括ping 扫射、端口扫描、操作系统识别、穿透防火墙的扫描

2019-11-18

关于系统调用原理的介绍

应用编程接口(application program interface, API)和系统调用是不同的 API只是一个函数定义 系统调用通过软中断向内核发出一个明确的请求 Libc库定义的一些API引用了封装例程(wrapper routine,唯一目的就是发布系统调用) 一般每个系统调用对应一个封装例程 库再用这些封装例程定义出给用户的API

2019-11-18

linux网络设备驱动

linux网络设备从应用协议层到内核层到驱动层的介绍 linux网络设备详解

2013-12-07

linux设备驱动概述

linux字符设备驱动 设备驱动入门 代码举例 无操作系统设备驱动和带操作系统设备驱动简介和举例

2013-12-07

linux 嵌入式性能详解

linux嵌入式内存优化 linux进程管理 elf格式文件分析 linux内存调试 linux动态库静态库文件分析 编译优化

2013-12-07

linux 协议栈.pdf

有linux操作系统介绍 link scripts 中断及调度管理 linux设备管理 socket系统调用 传输层TCP实现研究

2012-08-17

空空如也

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

TA关注的人

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