软件开发,安全加密
Linux系统中的init进程(pid=1)是除了idle进程(pid=0,也就是init_task)之外另一个比较特殊的进程,它是Linux内核开始建立起进程概念时第一个通过kernel_thread产生的进程,其开始在内核态执行,然后通过一个系统调用,开始执行用户空间的/sbin...
5. typeof和0指针这个在大名鼎鼎的container_of就有出现,事实上一些面试题有时候也喜欢跟这个沾点边。 点击(此处)折叠或打开 #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) 点击(...
在C中,宏定义的概念虽然简单,但是真要用好却并不那么容易,下面从Linux源码中抽取一些宏定义的使用方法,希望能从中得到点启发:1. 类型检查比如module_init的宏定义: 点击(此处)折叠或打开 #define module_init(initfn) ...
关于Linux内核中的mutex机制,一篇很重要的文档来自内核源码中的Documentation/mutex- design.txt,由Ingo molnar同学起头,标题是"Generic Mutex Subsystem",这篇文档开宗名义,直接将1楼中最后一个问题给端了出来...
看过Linux内核的同学都知道,Linux内核中除了有semaphore之外,还有一个mutex lock。前者我们的操作系统教科书称之为信号量,后者不知道教科书有没有具体的名称,但是在Linux内核中,它的称谓是"互斥锁"或者“互斥体”(总 之,称谓不是问题)。
POSIX 线程是提高代码响应和性能的有力手段。在此三部分系列文章的第二篇中,DanielRobbins 将说明,如何使用被称为互斥对象的灵巧小玩意,来保护线程代码中共享数据结构的完整性。
类UNIX下C/C++开发,代码调试比较麻烦,最原始的加跟踪调试很土,也很费时,特别是一个庞大的项目,代码行数非常大的时候调试起来非常费劲,当core dump时定位也不容易,这里介绍几个常用工具: gdb、dbx调试工具,valgrind内存检查工具(Linux) 。
我们知道,在32位机器上linux操作系统中的进程的地址空间大小是4G,其中0-3G是用户空间,3G-4G是内核空间。其实,这个4G的地址空间是不存在的,也就是我们所说的虚拟内存空间。 那虚拟内存空间是什么呢,它与实际物理内存空间又是怎样对应的呢,为什么有了虚拟内存技术,我们就能运行...
一:列文件清单 1. List (gdb) list line1,line2 二:执行程序 要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出说明符()和外壳通配符(*、?、[、])在内。
MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来。
作者:gfree.wind@gmail.com 博客:blog.focus-linux.net linuxfocus.blog.chinaunix.net 本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝,转载。
前几天在学习内核源码的时候,无意中看到了Linux内核中有中断栈的概念。这个是我以前没有注意到的,为了深入理解这个知识,我查找了一些资料: Linux内核中的中断栈与内核栈的补充说明 《深入Linux内核构架》第14章 内核活动 14.1 中断 P695 这些资料都是针对X86构架的。
对于ARM中内核如何在启动的时候设置高低端内存的分界线(也是逻辑地址与虚拟地址分界线(虚拟地址)减去那个固定的偏移),这里我稍微引导下(内核分析使用Linux-3.0): 首先定位设置内核虚拟地址起始位置(也就是内核逻辑地址末端+1的地址)的文件:init.
在学习Linux内核中断栈的时候发现的资料,备份转载如下: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ http://www.embexperts.
在学习Linux进程内核栈的时候,看到这篇好文,在这里转载下: (注意:数据结构针对的是早期的2.4内核,2.6以后的内核数据结构和处理方法稍有不同,但是基本原理相同) 作者: 曹国辉 南京凌嵌教育嵌入式Linux金牌讲师 专题研究一 进程的深入理解与分析 进程是程序的一次执行过程。
这个坑其实很大很大。。。。。。 虽然这名字很长,但其实就是一码事,试问你做内存跟踪不是为了看泄露?试问你看到了泄露和碎片不回去优化?哈哈 理论知识咱不具备,所以现实点,从实践出发好了。
系统对外提供的Solr查询接口,在来自外部调用的压力加大之后,就会出现solr查询报Read Timed Out的异常,从表面现象上看是此时solr核压力过大,无法响应过多的查询请求。
select()和poll()系统调用的本质一样,前者在BSD UNIX中引入的,后者在System V中引入的。 一、select 应用程序中最广泛用到的是BSD UNIX中引入的select()系统调用,其原型如下: int select(int maxfdp, fd...
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL)); 2.
转自 http://www.cnblogs.com/xuxm2007/archive/2011/08/15/2139809.html http://my.chinaunix.net/space.php?uid=20196318&do=blog&id=366042 http://blog.endlesscode.com/2010/03/27/select-poll-epoll-intro/ linux提供了select、poll、epoll接口来实现IO复用,三者的原型如下所示,本文从参数、实现、性能等方面对三者进行对比。
http://blog.chinaunix.net/uid-26495963-id-3086553.html一:生成当前目录下所有的源文件的目标文件 CC = gcc CFLAGS = -Wall -g #SRCS所有的.
本文链接:http://codingstandards.iteye.com/blog/805778 (转载请注明出处) 用途说明 hexdump命令一般用来查看”二进制“文件的十六进制编码,但实际上它的用途不止如此,手册页上的说法是“ascii, decimal, hexadecimal, octal dump“,这也就是本文标题为什么要将”十六“给引起来的原因,而且它能查看任何文件,而不只限于二进制文件了。
| 参考2.6.14版本中的driver/usb/input/usbmouse.c。鼠标驱动可分为几个部分:驱动加载部分、probe部分、open部分、urb回调函数处理部分。
1 U-Boot简介 U-Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目。从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。
ARM体系结构下面内存和i/o映射区别 (1)关于IO与内存空间: 在X86处理器中存在着I/O空间的概念,I/O空间是相对于内存空间而言的,它通过特定的指令in、out来访问。
http://bbs.2beanet.com/boot-f31/s3c6410-uboot-t3135.html 前章我们已经可以制作出用来启动的SD卡了,并将自己编译的UBOOT烧录到了SD卡中 这份UBOOT代码中的内存配置肯定和手头的开发...
修改:mw [内存地址] [值] [长度]例如:mw 0x02000000 0 128 表示修改地址为0x02000000~0x02000000+128的内存值为0. 显示:md [内存地址] [长度]例如:md 0x02000000 128 表示显示0x02000000的内存数据,长度为128个32bit.
研究内核源码和内核运行原理的时候,很总要的一点是要了解内核的初始情况,也就是要了解内核启动过程。我在研究内核的内存管理的时候,想知道内核启动后的页表的放置,页表的初始化等信息,这促使我这次仔细地研究内核的启动代码。
理解poll_wait poll_wait()是用在select系统调用中的. 一般你的代码会有一个struct file_operations结构, 其中fop->poll函数指针指向一个你自己的函数, 在这个函数里应该调用poll_wait() 当用户调用selec...
static和volatile的用法 volatile volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。
注: u-boot 使用的是打上: http://www.hhcn.com/cgi-bin/topic.cgi?forum=3&topic=651&show=0 上keety大侠提供的补丁生成的u-boot-1.1.3 这段时间不断有人问我u-boot启动内核的问题,记得在上次提供的u-boot源码中提到了go的方案,不过其实u-boot本来有一种更好的方案: bootm花了不少时间,查看了论坛上不少的帖子,认真阅读了bootm的源码,终于使用bootm把内核给跑起来了, 现把解决方法介绍如下: 一、在开始之前先说明一下bootm相关的东西。
作者:gfree.wind@gmail.com 博客:blog.focus-linux.net linuxfocus.blog.chinaunix.net 本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝,转载。
一、udp.c实现的函数 1、void udp_input(struct pbuf *p, struct netif *inp) 说明:处理接收到的udp数据包。 参数:p数据包缓存区;inp网络接口。
1. PBUF_RAM一次性分配size大小的连续内存2. RBUF_ROM只需要分配小小的管理pbuf的控制管理内存3. PBUF_ROOL分配一个链表,链表上每个元素所管理的内存最大不超过PBUF_POOL_BUFSIZE,它更像linux 中的kmem_alloc内存高速缓...
1 简介 I2C 总线仅仅使用 SCL 、 SDA 两根信号线就实现了设备之间的数据交互,极大地简化对硬件资源和 PCB 板布线空间的占用。因此, I2C 总线被非常广泛地应用在 EEPROM 、实时钟、小型 LCD 等设备与 CPU 的接口中。
高性能服务器必须考虑的4个方面:1 数据拷贝2 内存管理3 进程/线程上下文切换4 锁争用 说明:以下文章中会包含一些研究服务器性能的链接,这些链接也是非常重要的文档,本文不再列出,查看下面的文章内容时,可点击文章里面的链接访问。
1. The C10K Problem : 传统的UNIX多进程模型在客户超过10K(即1万)的时候会遇到什么问题,以及解决方案。 (http://www.kegel.com/c10k.html)2. 搜狗实验室关于C10K的介绍(http://www.sogou.com/labs/reports.html):关于如何用epoll解决C10K问题 3. Scalable Network Programming:linux下高性能服务器设计的圣经,媲美stenvens的UNP 4. 如何编写高性能服务器:一个网易的游戏架构师写的,很全面。
如果大家学习了内核中进程的部分就会听说过‘写时复制’ 。 但是从来没有想过在用户态和内核态上‘写时复制’判断的前提条件都不一样。 在进程创建之初,父子进程的数据段和代码段共享并且设置为只读,直到他们之一要将代码和数据段进行修改时才会进行复制即写时复制。
TCP/IP协议族校验和的计算方法相同, 差别在于进行校验的数据. 一 校验和计算方法 1. 将数据流按16bit求和, 存放在32Bit及更大的空间(eg.
ioctl在socket中的一些用法及示例 函数 : ioctl(int fd, int request, void * arg)定义 : 功能 : 控制I/O设备, 提供了一种获得设备信息和向设备发送控制参数的手段.
在分析start_kernel函数的时候,其中有构架相关的初始化函数setup_arch。此函数根据构架而异,对于ARM构架的详细分析如下: void __init setup_arch(char **cmdline_p) { struct machine_desc ...
BootLoader可以向Linux传递参数,编译内核时也可以配置boot options。 调试中使用的U-Boot bootargs如下: noinitrd root=/dev/mtdblock3 rw console=ttySAC0,115200 init=/linuxrc mem=64M 内核版本: 2.
1.查看当前linux是否打开core,方法是执行命令ulimit -a一般会出现如下的结果core file size (blocks, -c) 00表示当前core被关闭 2.
循环缓冲区在一些竞争问题上提供了一种免锁的机制,免锁的前提是,生产者和消费 都只有一个的情况下,否则也要加锁。下面就内核中提取出来,而经过修改后的fifo进 行简要的分析。
一个简单的累加求和程序: 01.TYPE S=0; 02.for(int i = 0;i < SIZE; i++) { 03. S += a[i]; 04.} 很多人都觉得这个程序写得不好,编译器不能生成很好的汇编代码。
http://unix-school.blogspot.in/2011/07/5-important-things-to-follow-to-become.
http://unix-school.blogspot.in/2011/07/5-important-things-to-follow-to-become.
1.支持一个进程打开大数目的socket描述符(FD) select 最不能忍受的是一个进程所打开的FD是有一定限制的,由FD_SETSIZE设置,默认值是2048。对于那些需要支持的上万连接数目的IM服务器来说显 然太少了。
本次移植使用的是U-boot-2009.11。 先来看看源码目录结构,再按照代码的执行顺序简单地分析源码 1.U-boot源码整体框架 源码解压以后,我们可以看到以下的文件和文件夹: cpu 与处理器相关的文件。
源码解压以后,我们可以看到以下的文件和文件夹: cpu 与处理器相关的文件。每个子目录中都包括 cpu.c 和 interrupt.c、start.S、u-boot.lds。