本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,
严禁用于任何商业用途。
msn: yfydz_no1@hotmail.com
来源:http://yfydz.cublog.cn
在内核的lib/ts_bm.c文件中,实现了Boyer-Moore字符串查找算法, 但有一个小BUG:
static unsigned int bm_find(struct ts_config *conf, struct ts_state *state)
{
struct ts_bm *bm = ts_config_priv(conf);
unsigned int i, text_len, consumed = state->offset;
const u8 *text;
int shift = bm->patlen, bs;
...
shift的值应该初始化为:
int shift = bm->patlen-1, bs;
否则的话如果text最前面就匹配了pattern的话,是找不到的, 如:
char text[]="patternsdfsfgsfsf";
char pattern[]="pattern";
按shift = bm->patlen就不能找到.
另外在较老内核版本(如2.6.15)的bm_init函数中, 复制bm->pattern放在compute_prefix_tbl(bm)之后,这也是不对的,应该先拷贝后计算, 不过新点的版本中已经改过来了.
分享到:
相关推荐
2. **进程管理**:Linux内核通过调度算法管理进程的执行,如抢占式调度、实时调度策略等。此外,还包括进程间的通信(IPC)机制,如管道、信号量、消息队列等。 3. **内存管理**:内核负责物理和虚拟内存的分配、...
rq 结构体是 Linux 调度算法中的一个重要数据结构,每个 CPU 都有一个 rq 结构体,它主要存储一些基本的用于调度的信息,包括实时调度的和 CFS 调度的。rq 结构体中包括了 spinlock_t lock、nr_running、cpu_load 等...
《Linux内核设计与实现》侧重于介绍Linux内核的基本架构和主要功能,让读者对内核有一个整体的认识。书中的内容涵盖了进程管理、内存管理、文件系统、设备驱动、网络协议栈等方面,通过实例解析,让读者能够明白各个...
理解Linux内核最好预备的知识点:懂C语言懂一点操作系统的知识熟悉少量相关算法懂计算机体系结构Linux内核的特点:结合了unix操作系统的一些基础概念Linux内核的任务:1.从技术层面讲,内核是硬件与软
《深入理解Linux内核》是Linux系统开发领域的一本经典著作,中文第三版更是更新了大量与现代Linux内核相关的最新知识。这本书旨在帮助读者理解Linux内核的工作原理,为那些想要深入研究操作系统核心机制的人提供了...
《Linux内核精髓-精通Linux内核必会的75个绝技》是一本专为Linux爱好者和专业人员设计的深度学习指南。本书的核心目标是帮助读者深入理解Linux内核的工作原理,掌握其核心功能,并能熟练应用这些知识解决实际问题。...
Linux内核中拥塞控制算法可以分为两类:一种是基于窗口的拥塞控制算法,另一种是基于速率的拥塞控制算法。基于窗口的拥塞控制算法包括Cubic、Htcp、Hybla、Westwood和Veno等,而基于速率的拥塞控制算法包括TCP Vegas...
《Linux内核完全注释》是由著名Linux技术专家赵炯编著的一本深入解析Linux内核的书籍,它为读者提供了全面、详尽的Linux内核知识。这本书因其深入浅出的讲解方式,成为了初学者了解和研究Linux内核的重要参考资料。 ...
Linux内核V3.0是2011年发布的一个重要版本,引入了许多改进和新特性,使得Linux更加适应现代计算环境。 在"Linux内核完全注释V3.0"这本书中,作者详细地解释了内核源代码的各个部分,这对于开发者、系统管理员以及...
linux内核编译2.6.39linux内核编译2.6.39linux内核编译2.6.39linux内核编译2.6.39linux内核编译2.6.39linux内核编译2.6.39linux内核编译2.6.39linux内核编译2.6.39linux内核编译2.6.39linux内核编译2.6.39linux内核...
2. 宏内核架构:Linux遵循宏内核(Monolithic kernel)架构,内核中的所有组件几乎都运行在同一个地址空间,这通常提供了比微内核更好的性能,但也可能导致更复杂的内核代码和管理难度。 3. 进程调度:Linux内核...
3. 文件系统:文件系统是Linux内核中的一个重要组成部分,它负责组织和管理磁盘上的数据。Linux支持多种文件系统,如EXT2、EXT3、EXT4等,每种文件系统都有其特定的设计理念和优化策略。 4. 网络协议栈:Linux内核...
这本书共计942页,旨在通过详细解析Linux内核的数据结构、算法及编程技巧,为读者提供一个深入探索Linux内部运作机制的平台。 ### 内存管理 Linux内核的内存管理是其最核心的部分之一。书中深入探讨了包括文件缓冲...
如果一个页面已经很长时间没有被访问,那么它再次被访问的可能性就很小,因此可以将它从内存中删除。FIFO算法是一种基于先进先出的预取算法,它将新加载的页面放在内存队列的末尾,当内存队列满时,将最早加载的页面...
总的来说,伙伴算法在Linux内核中的应用及其改进是一个持续的研究领域。通过深入理解伙伴算法的工作原理,以及针对实际环境的优化,可以显著提高内存管理的效率,从而提升整个系统的性能和稳定性。对于操作系统...
内存管理是Linux内核中另一个重要的组件,负责管理系统中的内存资源,包括内存分配、内存释放和内存保护。Linux内核使用了分页机制来管理内存,提高了系统的性能和安全性。 文件系统管理: 文件系统管理是Linux...
在Linux中,还有一个非常重要的概念,那就是模块参数。模块参数是指在Linux内核中使用的参数,用于配置内核模块的行为。例如,在Linux中,我们可以使用模块参数来配置网络协议栈的行为。 在Linux中,还有一个非常...
在Linux系统中,就绪态的进程会组织成一个就绪队列,通过调度算法选择下一个运行的进程。 Linux内核的进程调度主要依赖于task_struct结构中的几个关键字段,如policy(调度策略)、priority(静态优先级)、counter...