linux
文章平均质量分 83
小落勇士
这个作者很懒,什么都没留下…
展开
-
我设计的一个线程池
线程池的设计目前线程池主要包含下列部分:1. busy_list当前在处理客户请求的线程队列,即正在进行智能网页分析的线程2. idle_list当前线程池中空闲的线程队列3. request_list当用户请求到达后,发现线程池中已经没有可用线程,同时线程的个数已经达到了最大限制数(可设定的),此时只能将此次请求放入请求队列中原创 2008-08-06 15:42:00 · 1848 阅读 · 0 评论 -
linux软中断的实现原理
中断服务程序往往都是在CPU关中断的条件下执行的,以避免中断嵌套而使控制复杂化。但是CPU关中断的时间不能太长,否则容易丢失中断信号。为此, Linux将中断服务程序一分为二,各称作“Top Half”和“Bottom Half”。前者通常对时间要求较为严格,必须在中断请求发生后立即或至少在一定的时间限制内完成。因此为了保证这种处理能原子地完成,Top Half通常是在CPU关中断的条件下执行的。转载 2008-08-23 11:53:00 · 5127 阅读 · 1 评论 -
linux软中断的小结
一. 软中断概况 软中断是利用硬件中断的概念,用软件方式进行模拟,实现宏观上的异步执行效果。很多情况下,软中断和"信号"有些类似,同时,软中断又是和硬中断相对应的,"硬中断是外部设备对CPU的中断","软中断通常是硬中断服务程序对内核的中断","信号则是由内核(或其他进程)对某个进程的中断"(《Linux内核源代码情景分析》第三章)。软中断的一种典型应用就是所谓的"下半部"(bott转载 2008-08-23 12:01:00 · 7648 阅读 · 0 评论 -
Linux 内核中断内幕
本文对中断系统进行了全面的分析与探讨,主要包括中断控制器、中断分类、中断亲和力、中断线程化与 SMP 中的中断迁徙等。首先对中断工作原理进行了简要分析,接着详细探讨了中断亲和力的实现原理,最后对中断线程化与非线程化中断之间的实现机理进行了对比分析。什么是中断Linux 内核需要对连接到计算机上的所有硬件设备进行管理,毫无疑问这是它的份内事。如果要管理这些设备,首先得和它们互相通信才行,一般转载 2008-08-25 15:31:00 · 1647 阅读 · 0 评论 -
linux的内核调度
调度公平调度(fair-share scheduling)的进程调度算法:一、公平分享的调度策略 Linux 的调度算法是相对独立的一个模块,而且较容易理解。因此很多系统高手都爱对调度算法做改进。但是可以说调度器是一个非常神秘,难以捉摸的精灵。可能通过改变一个关键参数你就可以大大提高系统的效率。 对于一般进程,CPU的使用时间转载 2008-08-29 20:44:00 · 3471 阅读 · 1 评论 -
复合文档的二进制存储格式研究(word,xls,ppt...)
复合文档文件格式研究 前 言 复合文档(Compound Document)是一种不仅包含文本而且包括图形、电子表格数据、声音、视频图象以及其它信息的文档。可以把复合文档想象成一个所有者,它装着文本、图形以及多媒体信息如声音和图象。目前建立复合文档的趋势是使用面向对象技术,在这里,非标准信息如图像和声音可以作为独立的、自包含式对象包含在文档中。Microsoft Windows就是转载 2008-09-03 17:52:00 · 18543 阅读 · 11 评论 -
大小端(little-endian big-endian)问题小结
典故端模式(Endian)的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头开始将鸡蛋敲开的人被归为Littile Endian。小人国的内战就源于吃原创 2008-09-10 12:52:00 · 2504 阅读 · 0 评论 -
连接跟踪的源代码分析
关于连接跟踪 连接跟踪(CONNTRACK),就是跟踪并且记录连接状态。Linux为每一个经过网络堆栈的数据包,生成一个新的连接记录项(Connection entry)。此后,所有属于此连接的数据包都被唯一地分配给这个连接,并标识连接的状态。连接跟踪是防火墙模块的状态检测的基础,同时也是地址转换中实现SNAT和DNAT的前提。 1. 连接跟踪的相关结构Netfil原创 2008-09-16 12:31:00 · 4401 阅读 · 0 评论 -
动态协议跟踪机制的思考
动态协议跟踪机制例如ftp这种动态协议会通过一个控制连接来创建另一个关联连接,而linux操作系统的本身实现上,并没有非常灵活的实现这一点。代码如下所示:static struct ip_conntrack_helper ftp[MAX_PORTS];static int __init init(void){ int i,原创 2008-09-19 12:42:00 · 1636 阅读 · 0 评论