为了技术,我不会停下学习的脚步,我相信我还能走二十年。
发布时间:2014-05-08 09:28:34
Epoll实现分析——作者:lvyilong316通过上一章分析,poll运行效率的两个瓶颈已经找出,现在的问题是怎么改进。首先,如果要监听1000个fd,每次poll都要把1000个fd 拷入内核,太不科学了,内核干嘛不自己保存已经拷入的fd呢?答对了,epoll就是自己保存拷入的fd,它的API就已经说明了这一点——不是 epoll_.........【阅读全文】
发布时间:2014-05-08 09:28:16
0.等待队列在Linux内核中等待队列有很多用途,可用于中断处理、进程同步及定时。我们在这里只说,进程经常必须等待某些事件的发生。等待队列实现了在事件上的条件等待: 希望等待特定事件的进程把自己放进合适的等待队列,并放弃控制全。因此,等待队列表示一组睡眠的进程,当某一条件为真时,由内核唤醒它们.........【阅读全文】
发布时间:2013-12-04 09:53:38
内核编程与应用编程对比作者:gfree.wind@gmail.com博客:blog.focus-linux.net linuxfocus.blog.chinaunix.net微博:weibo.com/glinuxerQQ技术群:4367710我虽然一直比较喜欢研究底层技术,也经常阅读Linux内核源码,但是工作以来,却没有真正从事过内核编程的开发。即使后来做的负载均衡,也是在应用层处理.........【阅读全文】
发布时间:2013-03-01 21:08:55
我们知道,GDB的backtrace命令可以查看堆栈信息。但很多时候,GDB根本用不上。比如说,在线上环境中可能没有GDB,即使有,也不太可能让我们直接在上面调试。如果能让程序自己输出调用栈,那是最好不过了。本文介绍和调用椎栈相关的几个函数。 NAME backt.........【阅读全文】
发布时间:2013-02-28 10:28:26
int open(const char *path, int access,int mode) path 要打开的文件路径和名称 access 访问模式,宏定义和含义如下: &.........【阅读全文】
发布时间:2013-02-26 10:44:05
GRUB 启动分析引言玩Linux的人,肯定会听说过Grub这个神奇的东西,就是开机启动时候下拉一个菜单让我们选操作系统的那个东东。自己比较懒,一直没深入琢磨这个Grub的工作原理流程。最近工作遇到了Grub相关的问题,就花了一些时间学习了一下Grub。闲言少叙。我们首先看下Linux的启动过程流程图:这个流程图是大牛M. Tim.........【阅读全文】
发布时间:2013-02-26 10:38:46
一、管道1、管道(有亲缘关系)及有名管道(无亲缘)、信号、消息队列、共享内存、信号量、套接字。=====无名管道2、管道:是堵塞的;管道的读端存在时向管道中写入数据才有意义。具有固定的读端和写端。3、当一个管道建立pipe(fds)时,它会创建两个文件描述符 fds[0]和 fds[1]。.........【阅读全文】
发布时间:2013-02-25 10:32:25
预科:每个进程都有一个【进程表项】,并且维护一个【文件描述符表】。此表示相当于一个文件描述符数组,每个元素都是一个【文件描述符】。每个文件描述符相当于一个矢量,指向一个【文件表】,文件表也是在进程层次的,每次打开一个文件就会创建一个文件表,并且有文件描述符指向此表。当没有文件描述符指向.........【阅读全文】
发布时间:2013-02-25 10:13:25
一、 什么是ioctl ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的调用个数如下: int ioctl(int fd, ind cmd, …); 其中fd是用户程序打开设备时使用open函数返回的文件标示符,cmd是用户程序对设备的控制命令,至于后面的省略号,那是一些补充参数,一般最多一个,这个参数的有无和cmd的意义相关。 ioctl函数是文件结构中的......【阅读全文】