
Linux内核
广敏
程序写出来是给人看的
展开
-
【转】Linux内存管理
摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存的使用方法。力求从外到内、水到渠成地引导网友分析Linux的内存管理与使用。在本章最后,我们给出一个内存映射的实例,帮助网友们理解内核内存管理与用户内存管理之间的关系,希望大家最终能驾驭Linux内存管理。前言内存管理一向是所有操作系统书籍不惜笔墨重点讨论的内容,无论市...转载 2018-10-24 13:29:22 · 310 阅读 · 0 评论 -
内核数据结构之linux哈希表实现分析
1、内核哈希表冲突解决方法hash 最重要的是选择适当的hash函数,从而平均的分配关键字在桶中的位置,从而优化查找 插入和删除所用的时间。然而任何hash函数都会出现冲突问题。内核采用的解决哈希冲突的方法是:拉链法,拉链法解决冲突的做法是:将所有关键字为同义词的 结点链接在同一个链表中。若选定的散列表长度为m,则可将散列表定义为一个由m个头指针(struct hlist_head name)...原创 2019-01-21 21:39:59 · 1080 阅读 · 0 评论 -
内核数据结构之认识哈希表
关于哈希表散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数(哈希函数),存放记录的数组叫做散列表。Hash的四大优点如下所示:事先不需要排序。 搜寻速度与数据多少无关。 数字签名的密码技术保密性(Security)高。 可做数据...原创 2019-01-16 16:20:06 · 589 阅读 · 0 评论 -
数据结构之内核队列record使用例子
关于kfifo的实现参考 数据结构之内核队列kfifo例子来自内核下的samples/kfifo/record-example.c /* * Sample dynamic sized record fifo implementation * * Copyright (C) 2010 Stefani Seibold <stefani@seibold.net> * ...原创 2019-01-14 17:12:45 · 550 阅读 · 0 评论 -
数据结构之内核队列kfifo
kfifo概述据wiki介绍,环形缓冲区(ring buffer),也称作圆形队列(circular queue),圆形缓冲区(circular buffer),循环缓冲区(cyclic buffer),是一种用于表示一个固定尺寸、头尾相连的缓冲区的数据结构,适合缓存数据流。圆形缓冲区的一个有用特性是:当一个数据元素被用掉后,其余数据元素不需要移动其存储位置。相反,一个非圆形缓冲区(例如一...原创 2019-01-10 16:40:27 · 3534 阅读 · 0 评论 -
数据结构之内核链表
内核链表设计的非常巧妙,但也不是什么难理解的内容,关于内核链表的介绍网上有很多,这里就不赘述了,来个使用的例子吧。list.h#ifndef HS_KERNEL_LIST_H#define HS_KERNEL_LIST_H#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)#define co...原创 2018-12-13 12:39:13 · 166 阅读 · 0 评论 -
数据结构之深入理解红黑树
概述本文将会透彻理解什么是红黑树,有什么特点、优点与缺点,与其它树结构(二叉查找树、平衡二叉树、2-3-4树)有什么区别和联系。写作本文的目的旨在加深自己的理解,文中许多内容参考了网络上的文章并根据自己的理解进行了整理。第一部分:什么是红黑树红黑树(英语:Red–black tree),一种二叉查找树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。红黑树,作为一...原创 2018-11-08 17:58:25 · 307 阅读 · 0 评论 -
数据结构之-平衡二叉树(AVL)
背景不同结构的二叉查找树,查找效率有很大的不同。如何解决这个问题呢?关键在于如何最大限度的减小树的深度。正是基于这个想法,平衡二叉树出现了。前言平衡二叉搜索树(英语:Balanced Binary Tree)是一种结构平衡的二叉搜索树。 它能在O(log n)时间内完成插入、查找和删除操作。它除了具备二叉查找树的基本特征之外,还具有一个非常重要的特点:它的左子树和右子树都是平衡二叉树,...原创 2018-10-24 12:42:37 · 436 阅读 · 0 评论 -
Linux内核的虚拟地址、逻辑地址、线性地址、物理地址的区别
概述分页机制在段机制之后进行,以完成线性—物理地址的转换过程。段机制把逻辑地址转换为线性址页机制进一步把该线性地址再转换为物理地址 几种地址的解释分析linux内存管理机制,离不了上述几个概念,在介绍上述几个概念之前,先从《深入理解linux内核》这本书中摘抄几段关于上述名词的解释: 首先一、《深入理解linux内核》的解释逻辑地址(Logical Address) ...转载 2018-10-22 13:17:20 · 1114 阅读 · 0 评论 -
Linux内核微观设计——语句表达式和max/min/container_of宏(学习了!!!)
语句表达式的定义GNU C 对 C 标准作了扩展,允许在一个表达式里内嵌语句,允许在表达式内部使用局部变量、for 循环和 goto 跳转语句。这样的表达式,我们称之为语句表达式。语句表达式的格式如下:({ 表达式1; 表达式2; 表达式3; })语句表达式最外面使用小括号()括起来,里面一对大括号{}包起来的是代码块,代码块里允许内嵌各种语句。语句的格式可以是 “表达式;”这种一...原创 2019-01-16 17:49:35 · 323 阅读 · 0 评论