linux内核使用的一些算法和思想(个人总结)
来源:互联网 发布:石化盈科网络大学 编辑:程序博客网 时间:2024/06/14 22:49
这里只罗列一些算法,其中有些在我之前的博文中有所涉及,有些没有,后续有时间再详细分析每一个算法。排名不分先后
1、trie算法,linux网络子系统中取代了之前哈希算法的新路由算法,适合有大、超大规模路由项的应用场景。
2、CFS(completely fair scheduler),说是一种算法,其实更是类似一种思想,基于时间片分割技术。进程调度使用。
3、哈希算法,到处在用,网络、内存、文件系统等子系统都在使用
4、堆排序,内存初始化时使用到
5、红黑树,进程调度树、虚拟内存管、以及管理应用程序虚拟内存区的代码都使用到了红黑树,树的算法在linux内核中使用的频率也较高。
6、链表,数不胜数;双链表是linux内核使用的一个特色,此外还有哈希表和单链表,哈希表使用的也很多,单链表相对较少,但是也有。
7、优先查找树,struct address_space结构体的prio tree使用,用于建立文件中的一个区域与该区域映射到的所有虚拟地址空间的关联。
8、位图算法,内存自举分配器、linux进程的ID号都使用位图管理。
9、内存管理,伙伴算法,是一种思想,比较经典的内存管理算法,linux内核沿用至今。
10、内存管理,slab、slub、slob,基于cache的一种内存管理思想,对提高读写效率很重要,适用于频繁操作且小块的内存。
11、写时复制技术(copy on write),使用fork创建子进程时,为避免无用的赋值而采取的一种技术,只有在父、子进程对区域进行写才会执行真正的复制工作。
12、磁盘块I/O操作,linux使用了电梯算法,基于RAID的数据库运维会遇到,目前数据库发展趋势倾向使用SSD作为存储介质。
linux中更多的不是具体的数学算法,比如位图之类,更多的是思想,比如预读、对nand操做的损耗平衡、网卡多队列等,这些思想贯串linux内核,博大精深。
除了上面比较时髦的一些算法,linux还有一些比较基础的东西。
1、并发和竞态引入的同步算法,信号量、锁等。
2、工作队列、tasklet等。
3、链表操作。
4一些小技巧,比如container_of。
剩下的就是各个子系统需要深究的了。
比如网络系统,网络协议以及网络协议栈代码(一些算法、一些思想)等
比如驱动,module、字符设备、代码中的(misc、cdev等)
- linux内核使用的一些算法和思想(个人总结)
- Linux 内核的一些算法
- Linux 内核的一些算法
- 关于linux内核中断的个人总结
- 个人使用VIM的一些总结
- 个人使用JSPatch的一些小小总结
- 关于Linux内核的一些算法
- 一些个人的总结
- 一些关于概率的算法的个人总结
- 关于一些排序算法的个人总结(初学)
- IAP专题-包含基础知识和经常遇到的一些问题.In App Purchase 个人使用总结
- linux内核和windows内核的一些区别
- linux内核和windows内核的一些区别
- 个人对C/C++使用的一些总结
- 个人总结——一些凌乱代码的使用
- handlebar的一些用法——个人使用总结
- iOS的一些个人总结
- Linux中的一些小技巧(个人总结)
- mysql中SELECT语句的执行顺序
- cocos2d-x-3.xWindows下的环境搭建,包括Android项目的配置
- C++ 中dynamic_cast<>的使用方法
- UML简单介绍(十二)——活动图基本概念与解析
- libEvent库在windows下编译出带调试信息的lib库可以单步进去调试step in
- linux内核使用的一些算法和思想(个人总结)
- 绘制网络分面图—matplotlib,networkx
- 非关系型数据库
- 关于Win8 用不了USB转串口驱动
- Android中的volley_11_Request
- hdoj1089 a+b(1)
- 4.dict和set
- 哪里有电话吸费 加值电话 小投资高回报
- 【深入了解cocos2d-x 3.x】定时器(scheduler)的使用和原理探究(3)