- 博客(762)
- 资源 (16)
- 收藏
- 关注
转载 nginx 0.8.x稳定版对linux aio的支持
本文链接地址: nginx 0.8.x稳定版对linux aio的支持前几天nginx的0.8.x正式成为stable,然后看了下代码,发现0.8加入了linux native aio的支持,我们知道在linux下有两种aio,一种是glibc实现的aio,这个比较烂,它是直接在用户空间用pthread进行模拟的。还有一种就是内核实现的aio,这些系统调用是以io_xxx开始的,而在nginx
2013-07-15 14:45:33 1877
转载 使用异步 I/O 大大提高应用程序的性能
http://www.ibm.com/developerworks/cn/linux/l-async/简介: Linux® 中最常用的输入/输出(I/O)模型是同步 I/O。在这个模型中,当请求发出之后,应用程序就会阻塞,直到请求满足为止。这是很好的一种解决方案,因为调用应用程序在等待 I/O 请求完成时不需要使用任何中央处理单元(CPU)。但是在某些情况中,I/O 请求可能需要与其他进程产生
2013-07-15 14:38:55 635
转载 Linux下高并发socket最大连接数所受的各种限制
http://blog.csdn.net/guowake/article/details/66157281、修改用户进程可打开文件数限制在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。
2013-07-15 14:25:10 577
转载 中断下半部的处理
http://www.cnblogs.com/wang_yb/archive/2013/04/23/3037268.html在前一章也提到过,之所以中断会分成上下两部分,是由于中断对时限的要求非常高,需要尽快的响应硬件。主要内容:中断下半部处理实现中断下半部的机制总结中断下半部的实现中断实现示例 1. 中断下半部处理那么对于一个中断,如何划分上下两部分呢?哪些处理放在上
2013-07-15 14:10:34 566
转载 Linux 2.6中断下半部机制分析
http://blog.csdn.net/yicao821/article/details/6670683 Linux 2.6中断下半部机制分析作者:流星摘要 本文主要从使用者的角度对Linux 2.6内核的下半部机制softirq、tasklet和workqueue进行分析,对于这三种机制在内核中的具体实现并未进行深入分析,倘若读者有兴趣了解,可以直接阅读Linux内核
2013-07-15 14:09:38 404
转载 linux 网络编程:epoll 的实例
http://blog.csdn.net/shanshanpt/article/details/7383400在前面已经经过了PPC、TPC、select之类( TPC就是使用进程处理data,TPC就是使用线程处理 ),前面两个的缺点大家应该都是知道的是吧,对于select( 其实poll和他差不多 ),缺点是能同时连接的fd是在是不多,在linux中一般是1024/2048,对于很大的服务
2013-07-12 14:50:17 2692
转载 Linux中select poll和epoll的区别
http://blog.csdn.net/big_wang5/article/details/9295405在Linux Socket服务器端编程时,为了处理大量客户的连接请求,需要使用非阻塞I/O和复用,select、poll和epoll是Linux API提供的I/O复用方式,自从Linux 2.6中加入了epoll之后,在高性能服务器领域得到广泛的应用,现在比较出名的nginx就
2013-07-12 11:39:41 670
转载 linux内核主要模块图
http://blog.csdn.net/yming0221/article/details/6293988下图清楚的表示了linux内核的主要模块图。
2013-07-11 17:47:58 775
转载 关于vmlinux,vmlinuz,bzImage,zImage的区别和联系
http://blog.csdn.net/yming0221/article/details/6558754vmlinuz是可引导的、压缩的内核。“vm”代表“Virtual Memory”。Linux 支持虚拟内存,不像老的操作系统比如DOS有640KB内存的限制。Linux能够使用硬盘空间作为虚拟内存,因此得名“vm”。vmlinuz是可执行的Linux内核,它位于/boot/vm
2013-07-11 17:41:02 513
转载 linux驱动的等待队列
在Linux驱动程序中,可以使用等待队列(wait queue)来实现阻塞进程的唤醒。wait queue很早就作为一种基本的功能单位出现在Linux内核里了,它以队列位基础数据结构,与进程调度机制紧密结合,能够用于实现内核中异步事件通知机制。等待队列可以用来同步对系统资源的访问。(信号量在内核中也依赖等待队列来实现). Linux-2.6提供如下关于等待队列的操作: (1
2013-07-11 17:20:54 684
转载 Linux 进程状态
http://blog.csdn.net/tianlesoftware/article/details/6457487Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态。 在下文将对进程的R、S、D、T、Z、X 六种状态做个说明。 PROCESS STATE CODES Here are the
2013-07-11 14:10:27 544
转载 kmalloc vmalloc kzalloc malloc 和 get_free_page()
http://www.360doc.com/content/11/1201/10/1317564_168823219.shtmlkmalloc vmalloc kzalloc get_free_page()是内核空间申请内存空间函数malloc是用户空间申请内存函数 一 ,kmalloc() 与 kfree() 和get_free_page的区别1,用于申请较小的、连续的物理
2013-07-10 08:58:31 416
转载 关于kmalloc、vmalloc及kmap
http://blog.csdn.net/gxfan/article/details/27234551、 kmalloc()是内核中最常见的内存分配方式,它最终调用伙伴系统的__get_free_pages()函数分配,根据传递给这个函数的flags参数,决定这个函数的分配适合什么场合,如果标志是GFP_KERNEL则仅仅可以用于进程上下文中,如果标志GFP_ATOMIC则可以用于中断上
2013-07-10 08:55:51 592
转载 kmalloc/kfree,vmalloc/vfree函数用法和区别
http://blog.csdn.net/tigerjb/article/details/6412881kmalloc/kfree,vmalloc/vfree函数用法和区别1.kmalloc1>kmalloc内存分配和malloc相似,除非被阻塞否则他执行的速度非常快,而且不对获得空间清零.tiger说明:在用kmalloc申请函数后,要对起清零用memset()函数对申请
2013-07-10 08:53:26 444
转载 关于ISR中清除中断源的问题
http://www.amobbs.com/thread-4565349-1-1.html一直对中断服务程序中是不是要清除中断源标记疑惑。照理看见书上写的是要清的。但是自己看过的一些代码里确实是没清的。自己也曾经在 三星的一些mcu上试验过不清除的话,明明只有一次中断,却会反复的来。在马潮老师http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=847
2013-07-08 15:41:33 2514
原创 边沿触发与电平触发
两种外部中断触发方式,两种各有优缺点:边沿触发:优点:程序编写简单,不会出现按键按下后就不断的触发中断的情况。设置方法如下:缺点:仅限于仿真中应用,实际应用中,无法防止误触按键的情况。并且按键只能局限于一下一下的按,不能出现长短按键的形式电平触发:优点:通过软件的编写可以防止实际生活中误触按键的情况。基本思路就是在进入中断后先等待,一段时间后再次检测,看
2013-07-08 15:31:01 3596
转载 c语言中的全局数组和局部数组
今天在A一道题目的时候发现一个小问题,在main函数里面开一个int[1000000]的数组会提示stack overflow,但是将数组移到main函数外面,变为全局数组的时候则ok,就感到很迷惑,然后上网查了些资料,才得以理解。对于全局变量和局部变量,这两种变量存储的位置不一样。对于全局变量,是存储在内存中的静态区(static),而局部变量,则是存储在栈区(stack)。这里,顺便普
2013-07-03 09:35:33 5136
原创 tftp上传与下载
上传:在windows下打开tftp进入uboot下setenv serverip PC机IP地址sf空格 probe空额 0sf read 0x82000000 0x100000 0x380000 /*读flash到内存*/tftp 0x82000000 kernel.bin 0x380000 下载:在windows下打开tftp进入uboot下
2013-07-02 15:19:57 603
转载 linux驱动学习之异步通知
http://blog.csdn.net/fontlose/article/details/8257201 异步通知是设备状态改变后主动通知应用程序,这样应用程序就不需要阻塞或查询设备了。应用通过信号来处理内核的异步通知,上次使用poll select来查询设备的可读状态,下面这个例子类似,不同的是当设备有数据时主动通知应用去读数据。 应用的C代码很简单,主要设置对信号的处理方式
2013-07-02 09:21:04 523
转载 小白学Linux之module_param()函数学习
http://blog.csdn.net/tigerjb/article/details/6025305module_param()的学习一.module_param1.为什么引入 在用户态下编程可以通过main()来传递命令行参数,而编写一个内核模块则可通过module_param()来传递命令行参数.2. module_param宏是Linux 2.6内核中新增的,该
2013-07-01 14:39:22 514
转载 misc_register、 register_chrdev 的区别总结
http://blog.csdn.net/lanmanck/article/details/4713978参考:http://longer.spaces.eepw.com.cn/articles/article/item/60415http://imganquan.org/blog/?p=350 网上找的,归纳一下: 杂项设备(misc device)杂项设
2013-07-01 11:32:09 579
原创 linux驱动中地址空间转换
在linux kernel 中,物理地址是不能直接使用的,必须通过转换才可以。转换分为两种, 静态和动态。静态就是下面那种,不过,静态的地址转换,还需要在kernel 初始化的时候作映射。 动态映射是使用 ioremap 函数 。#define SL2312_GPIO_BASE 0x4D000000 #define IO_ADDRESS(x) (((X)&0x0
2013-07-01 11:10:44 2832
转载 phys_to_virt(),ioreamp(),IO_ADDRESS() 的区别
http://blog.csdn.net/linxi_hnh/article/details/8509213针对IO_ADDRESS()函数(静态映射(map_desc)方式):ioreamp();动态映射方式:我们来看看s3c2410是怎么定义map_desc结构体的(即上面s3c2410_map_io函数内的s3c2410_iodesc)。/* ar
2013-07-01 10:42:29 7811
原创 海思3516中断初始化
如果要产生中断,且避免假中断,则必须按照下面的初始化顺序:步骤 1 配置GPIO_IS,选择边沿触发或电平触发。步骤 2 配置GPIO_IEV,选择下降沿/上升沿触发和高电平/低电平触发。步骤 3 如果选择边沿触发,需配置GPIO_IBE,选择单沿或双沿触发方式。步骤 4 保证GPIO 数据线在以上操作过程中保持稳定。步骤 5 向寄存器GPIO_IC 写0xFF,清中断。
2013-07-01 10:15:39 4679
转载 Linux内核驱动模块编写概览-ioctl,class_create,device_create
http://blog.csdn.net/otishiono/article/details/6558383如果你对内核驱动模块一无所知,请先学习内核驱动模块的基础知识。如果你已经入门了内核驱动模块,但是仍感觉有些模糊,不能从整体来了解一个内核驱动模块的结构,请赏读一下这篇拙文。如果你已经从事内核模块编程N年,并且道行高深,也请不吝赐教一下文中的疏漏错误。 本文中我将实现一
2013-06-28 17:39:22 687
转载 linux中驱动异步通知应用程序的方法
http://blog.csdn.net/yjzl1911/article/details/5654893驱动程序运行在内核空间中,应用程序运行在用户空间中,两者是不能直接通信的。但在实际应用中,在设备已经准备好的时候,我们希望通知用户程序设备已经ok,用户程序可以读取了,这样应用程序就不需要一直查询该设备的状态,从而节约了资源,这就是异步通知。好,那下一个问题就来了,这个过程如何
2013-06-28 15:18:54 795
转载 驱动中的异步通知机制
http://blog.csdn.net/longshan_2009/article/details/8730345异步通知机制之前所说的几种方法:1.查询:耗资源2.中断:read()不会返回3.poll:在指定时间read返回 他们的共同特点都是应用程序主动的去read,有没有一种方法驱动去提醒应用程序去读?有,那就是异步通知机制程序之间发信号kil
2013-06-28 15:17:38 788
转载 Linux 内核态 与 用户态传递 实时信号
http://juckyjhon.blog.sohu.com/156355213.html kernel:#include #include #include #include #include #include #include #define SIG_MYINT 33#define PS_PID 30 //
2013-06-28 15:00:22 4398
转载 Linux信号机制分析
http://blog.csdn.net/zhongguoren666/article/details/7012744Linux信号机制分析 Sailor_forever sailing_9806@163.com转载请注明http://blog.csdn.net/sailor_8318/archive/2008/09/27/2990077.aspx 【摘要】本文分析了Lin
2013-06-28 14:55:58 579
原创 信号和信号量
信号是一种处理异步事件的方法,信号量是一种进程同步机制。 信号是指POSIX系统的信号,由硬件和软件触发,再由操作系统内核发给应用程序的中断形式。POSIX规定有一个标准的信号集。信号量是一种POSIX系统的进程间通信工具,在它上面定义了一套操作原语。简单的讲它可以在进程间进行计数。 信号更大一些,是操作系统级别的,而信号量更简单些,主要用来处理同步和互斥。
2013-06-28 14:53:12 683
转载 Linux中的中断处理
http://blog.csdn.net/dlutbrucezhang/article/details/8699776与Linux设备驱动中中断处理相关的首先是申请与释放IRQ的API request_irq()和free_irq(),request_irq()的原型为:int request_irq(unsigned int irq,void (*handler)(int i
2013-06-28 14:23:15 630
转载 信号量学习笔记
http://blog.csdn.net/yongan1006/article/details/6682418对于linux的程序员来说,信号量是一个不能回避的问题。下面我简要地介绍下信号量在不同状态下的使用。一,内核态l 就是写驱动程序时遇到的信号量。1. 定义信号量struct semaphore sem;2. 初始化信号量v
2013-06-28 14:12:14 503
转载 组播
http://blog.csdn.net/passion__/article/details/6820971 概述组播提供了在网络中进行一对多的发送的机制,组播可以是在一个网段内,也可以是跨网段的,不过跨网段需要交换机、路由器等网络设备支持组播。 Hosts可以在任何时间加入或者离开组播组,对于组播组的成员没有所处位置的限制,也没有数量的限制,D类互联网地址是用于组播的:224.0
2013-06-27 14:25:59 586 1
转载 Linux网络编程之多播
http://blog.csdn.net/chenjin_zhong/article/details/72703621.概念单播是用于两个主机之间传送数据,广播是一个主机对局域网内的所有主机发送数据。而多播,又称为组播,它是对一组特定的主机通信。将网络上同一类型业务逻辑上分组,只和组内的成员通信,其它主机没有加入组则不能通信。与单播相同的是,组播允许在Internet上通信,而广播只是同一
2013-06-27 14:22:18 626
转载 sys_reboot
http://blog.csdn.net/muge0913/article/details/7518576系统调用的内容到这里已经讲述了很多,该到去kernel中窥看一个服务例程具体实现的时候了。在linux中关机和重启命令有shutdown,reboot,init,poweroff,halt,telinit。它们都是通过sys_reboot来实现的。在kernel/sys.c中。
2013-06-27 09:53:55 3386
转载 socket :shutdown 与 close 函数 的区别
http://blog.csdn.net/simba888888/article/details/9068059假设server和client 已经建立了连接,server调用了close, 发送FIN 段给client(其实不一定会发送FIN段,后面再说),此时server不能再通过socket发送和接收数据,此时client调用read,如果接收到FIN 段会返回0,但client此时还是
2013-06-27 09:51:45 553
转载 stdin,stderr,stdout
http://blog.csdn.net/babygjx/article/details/5832235stdin是标准输入文件,stdout是标准输出文件,stderr标准出错文件,应用在输出的重新定位上。程序按如下方式使用这些文件: 标准输入是程序可以读取其输入的位置。缺省情况下,进程从键盘读取 stdin 。标准输出是程序写入其输出
2013-06-27 09:03:21 588
转载 EOF简介
http://blog.csdn.net/gaochizhen33/article/details/7260400我学习C语言的时候,遇到的一个问题就是EOF。它是end of file的缩写,表示"文字流"(stream)的结尾。这里的"文字流",可以是文件(file),也可以是标准输入(stdin)。比如,下面这段代码就表示,如果不是文件结尾,就把文件的内容复制到屏幕上。
2013-06-27 08:47:52 497
转载 listen/accept函数的区别
http://blog.csdn.net/ctthunagchneg/article/details/8599766listen函数使用主动连接套接口变为被连接套接口,使得一个进程可以接受其它进程的请求,从而成为一个服务器进程。在TCP服务器编程中listen函数把进程变为一个服务器,并指定相应的套接字变为被动连接。listen函数在一般在调用bind之后-调用accept之前调用,它的函
2013-06-24 11:25:22 1958
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人