Fork me on GitHub
上一页 1 ··· 54 55 56 57 58 59 60 61 62 ··· 99 下一页
摘要: 接下来我来讲述一下插入排序法。 首先来解释一下插入排序法的原理,它的原理是每插入一个数都要将它和之前的已经完成排序的序列进行重新排序,也就是要找到新插入的数对应原序列中的位置。那么也就是说,每次插入一个数都要对原来排序好的那部分序列进行重新的排序,时间复杂度同样为O(n²)。 这种算法是稳定的排序方 阅读全文
posted @ 2019-10-14 13:42 yooooooo 阅读(595) 评论(0) 推荐(2) 编辑
摘要: 前面分析了伙伴管理算法的初始化,在切入分析代码实现之前,例行先分析一下其实现原理。 伙伴管理算法(也称之为Buddy算法),该算法将所有空闲的页面分组划分为MAX_ORDER个页面块链表进行管理,其中MAX_ORDER定义: 通常该值都是定义为11,而CONFIG_FORCE_MAX_ZONEORD 阅读全文
posted @ 2019-10-14 09:54 yooooooo 阅读(567) 评论(0) 推荐(0) 编辑
摘要: 本文在上述的基础上介绍优先队列的另外一种支持高效合并操作的实现——二项队列。原来在介绍二叉堆和左式堆的时候喜欢从结构性和堆序性两个方面介绍,它们二者都是特殊的二叉树结构,但是二项队列不能单纯的从结构性和堆序性两个方面介绍了因为二项队列并不是我们熟悉的树结构,而是树的集合——森林,本篇文章从二项队列的 阅读全文
posted @ 2019-10-12 14:28 yooooooo 阅读(580) 评论(0) 推荐(0) 编辑
摘要: 一.O(logn)代码小证明 我们先来看下面一段代码: 2. 欧几里得算法 3.幂运算 四.$$库里的log函数 在$$库里有log()函数和log2()函数 log()函数的底数默认为自然对数的底数e log2()函数的底数很显然就是2咯qwq include include include in 阅读全文
posted @ 2019-10-12 10:13 yooooooo 阅读(10759) 评论(0) 推荐(0) 编辑
摘要: 这一次,我们来讲一讲二叉堆的另外一个应用:优先队列 队列的特点是什么? 聪明的小伙伴们都知道,是先进先出(FIFO)。 入队列: 出队列: 那么,优先队列又是什么样子呢? 优先队列不再遵循先入先出的原则,而是分为两种情况: 最大优先队列,无论入队顺序,当前最大的元素优先出队。 最小优先队列,无论入队 阅读全文
posted @ 2019-10-12 09:50 yooooooo 阅读(1164) 评论(0) 推荐(0) 编辑
摘要: 前面已经分析了linux内存管理算法(伙伴管理算法)的准备工作。 具体的算法初始化则回到start_kernel()函数接着往下走,下一个函数是mm_init(): 乍看仅仅是几个函数的调用,实际上这里的事情远远没这么简单。其中page_cgroup_init_flatmem()与cgroup相关, 阅读全文
posted @ 2019-10-07 11:02 yooooooo 阅读(511) 评论(0) 推荐(0) 编辑
摘要: 前面分析了memblock算法、内核页表的建立、内存管理框架的构建,这些都是x86处理的setup_arch()函数里面初始化的,因地制宜,具有明显处理器的特征。而start_kernel()接下来的初始化则是linux通用的内存管理算法框架了。 build_all_zonelists()用来初始化 阅读全文
posted @ 2019-10-07 10:19 yooooooo 阅读(688) 评论(0) 推荐(0) 编辑
摘要: 文件页 内存回收,也就是系统释放掉可以回收的内存,比如缓存和缓冲区,就属于可回收内存。它们在内存管理中,通常被叫做文件页(File backed Page)。大部分文件页,都可以直接回收,以后有需要时,再从磁盘重新读取就可以了。 脏页 那些被应用程序修改过,并且暂时还没写入磁盘的数据(也就是脏页), 阅读全文
posted @ 2019-10-06 23:03 yooooooo 阅读(452) 评论(0) 推荐(0) 编辑
摘要: 先说说cpu的cache,和cpu的cache比起来访问主内存是非常慢的,为了加快速度根据本地性原则,cpu在访问主内存的时候会把附近的一块数据都加载到cpu的cache里,之后读写这块数据都是在cache里做的。 linux本来有伙伴系统分配内存页,为了加快单个内存页的分配linux在每个node 阅读全文
posted @ 2019-10-06 23:00 yooooooo 阅读(513) 评论(0) 推荐(0) 编辑
摘要: 前面已经分析了内存管理框架的构建实现过程,有部分内容未完全呈现出来,这里主要做个补充。 如下图,这是前面已经看到过的linux物理内存管理框架的层次关系。 现着重分析一下各个管理结构体的成员功能作用。 struct zone node_zones[MAX_NR_ZONES]; ——存放该pg_dat 阅读全文
posted @ 2019-10-06 22:55 yooooooo 阅读(371) 评论(0) 推荐(0) 编辑
上一页 1 ··· 54 55 56 57 58 59 60 61 62 ··· 99 下一页