linux内核使用的一些算法和思想(个人总结)

2023-11-17

这里只罗列一些算法,其中有些在我之前的博文中有所涉及,有些没有,后续有时间再详细分析每一个算法。排名不分先后


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等)


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux内核使用的一些算法和思想(个人总结) 的相关文章

  • 小部件预览图像

    My app preview image looks like this 我怎样才能让它看起来像 WhatsApp 聊天预览 小有阴影 我手机中的其他应用程序也使用相同类型的预览 我的小部件 xml
  • Titanium 创建图像文件:file.write(blob) 未创建正确的文件

    我正在尝试使用 Titanium 1 8 1 读取 PNG 文件 这是我读取文件的代码 var f Ti Filesystem getFile Ti Filesystem resourcesDirectory KS nav views pn
  • Android Volley StringRequest 有时不工作

    我使用下面的代码从 API 获取一些本地视频 URL public void getVideoAds String serverURL String url http serverURL video StringRequest string
  • Android 支持 v4 22.2.0 的 Proguard 配置

    更新 Gradle Android 构建的依赖关系后使用com android support support v4 22 2 0从本地 Maven extras 存储库 在 SDK 内 Proguard 开始抛出这些问题 Warning
  • 与 grep 类似地突出显示文本,但不过滤掉文本[重复]

    这个问题在这里已经有答案了 使用 grep 时 它将突出显示与正则表达式匹配的行中的任何文本 如果我想要这种行为 但同时让 grep 打印出所有行怎么办 快速浏览完 grep 手册页后 我发现一无所获 使用确认 看看它的 passthru此
  • ActionBar 上的自定义主页按钮

    我正在使用 ActionBar Sherlock 库 所以 要更改默认的主页按钮 我这样做了 这不起作用 所以 我也添加了这个
  • 当滚动 Recyclerview 单选按钮更改其选择时

    我正在使用 RecyclerView 设置单选按钮 选定的按钮选择在滚动时会更改其位置 请帮助我 Thanx in advance 我的 RecylerView 布局
  • 在 Jenkins 上编译 Android 项目时如何修复此 ZipException?

    我最近将 Jenkins 机器上的 Android SDK 从 rev13 更新到 rev15 并且必须重做一些自定义构建内容build xml以适应 rev14 中所做的更改 我在我的工作站上解决了这个问题 并检查了它 期望一切顺利 相反
  • 推送通知不会弹出带有入门套件的react-native-firebase

    我已经克隆了React Native Firebase 启动器 https github com invertase react native firebase starter并进行了初始设置 然后根据文档重命名项目 然后添加google
  • Android 模拟器出现错误:冷启动:快照不存在

    我在使用 Android 模拟器 7 8 天后就遇到了问题 起初它根本没有运行 现在重新安装模拟器解决了这个问题 但又产生了新的问题 每当我运行模拟器时 都会花费很长时间 大约 5 6 分钟 然后显示错误 Cold Boot Snapsho
  • Android facebook 4.0.0 分享对话框不分享内容

    几个小时以来 我一直在尝试通过 facebook 4 0 0 sdk 分享我的 android 应用程序中的内容 我完全按照Facebook 分享文档 https developers facebook com docs sharing a
  • 具有多个 Item 布局的 ListView 适配器

    我正在考虑向我的 Android 应用程序添加一个带有缩略图的列表视图 左边是缩略图 右边是文字 有没有办法用单独的 xml 文件填充列表视图 例如 我可以为奥地利 英国 美国等提供单独的 xml 并将它们添加到列表视图中吗 我问的原因是
  • 以从左到右的模式启动 Activity

    我面临一个问题 我有三项活动 我需要向左滑动开始新活动 Activity1 Activity2 Activity3 means 当我单击按钮时 新活动不应像 Android 行为那样直接显示 我希望新活动来自右侧并显示在当前屏幕上 任何人都
  • 如何在 Android 应用程序中显示日历 UI? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在我的应用程序中使用日历 如下图所示 我希望在我的活动中使用此日历 UI 我怎样才能做到这一点 呵呵 我们之前已经这样做过 请参阅
  • 通过检测 1.6 目标应用程序是否是 2.1 设备来显示动态壁纸?

    我们正在使用目标 SDK 1 6 构建 Android 应用程序 因此它将在 1 6 及更高版本的设备上运行 我们希望支持动态壁纸 我们知道动态壁纸仅限 2 1 有没有一种方法可以构建一个以 1 6 SDK 作为目标的应用程序 但检测它运行
  • Android AudioRecord 与 MediaRecorder 录制音频

    我想在我的 Android 手机上录制人声 我注意到 Android 有两个类可以做到这一点 录音带 http developer android com reference android media AudioRecord html a
  • Android 每个 Activity 中的通用进度条

    我已经修改了解决方案 我可以获得进度条 但进度条永远不会隐藏 这是创建具有相对布局的进度条的类 public class ProgressBarHandler private ProgressBar mProgressBar private
  • Linux命令:如何仅“查找”文本文件?

    经过几次谷歌搜索后 我得出的结论是 find my folder type f exec grep l needle text exec file grep text 这非常不方便 并且会输出不需要的文本 例如 mime 类型信息 还有更好
  • 在 Linux 上的 makefile 和 Makefile 之间进行选择

    我想在一个目录中同时使用 Makefile 和 makefile 进行 make 默认情况下 它将执行makefile 我可以选择执行 Makefile 吗 提前致谢 最简单的选择是使用 f make f Makefile From man
  • Android:自动重新连接 BLE 设备

    我的目标是让 Android 设备重新连接到之前连接过的 BLE 设备无需用户干预与经典 BT 配对设备的操作方式相同 甚至可以通过电源循环工作 BTLE 设备的想法之一是节省服务 绑定和启用状态 以便重新连接非常快并且在外设上消耗很少的功

随机推荐

  • cmake 提前结束处理命令: return

    有时候 我们有这样的需求 当处理到某个地方的时候 后面的我们都不想处理或者不需要处理的时候 就可以提前结束当前的处理逻辑 回到父级去处理 在C C 中 我们有break关键字跳出当前循环 continue关键字进入下一次循环 return关
  • 使用Redis作缓存时,怎么保证缓存和数据库的一致性?

    使用Redis作缓存时 怎么保证缓存和数据库的一致性 文章目录 使用Redis作缓存时 怎么保证缓存和数据库的一致性 1 先更新数据库 再更新缓存 2 先删缓存 再更新数据库 3 先更新数据库 再删缓存 其他造成缓存和数据库不一致的原因 方
  • 华为OD机试2022Q4【硬件产品销售方案】97%正确率

    200分的题目 对了97 题目记得不是很清楚了 给定一个amount 代表你这个企业拥有的钱 给定一行 代表一个工厂拥有的所有零件的价格 切库存无限量 例如 100 200 200 300 500 代表工厂有5种零件 每种零件单价为100
  • YARN核心组件功能特性分析

    1 YARN Client YARN Client 提交Application 到ResourceManager 它会首先创建一个Application上下文件对象 并设置ApplicationMaster必需的资源请求信息 然后提交到Re
  • 这个框架真心可以!10分钟就搞定一个网站!

    最近有很多小伙伴问我 有没有能快速能搭建网站的框架 首先我去尝试了低代码 快确实快 但是样式和功能确实差点意思 偶然间 我发现一款神奇的网站框架 VuePress 我尝试部署了下 然后一下爱上了它 我发现很多博主也都是用的这款框架搭建的个人
  • ntp服务器地址是什么协议,ntp服务器地址的介绍与解释

    ntp服务器地址的介绍与解释 分类 云服务资讯 编辑 浏览量 100 2021 07 23 14 43 16 NTP属于运用层协议 依据UDP传输 运用的端口号为123 用来同步网络中分布式时间服务器和客户端之间的时间 使网络中的设备供应依
  • 某宝sign逆向(以商品评论采集为例)

    文章目录 1 目标网址 2 携带参数分析 3 sign值逆向 4 以一个商品为例采集商品评论 往期逆向文章推荐 JS逆向之艺恩数据 JS逆向之今日头条 signature JS逆向之网易云音乐 JS逆向之巨量星图sign签名 JS逆向之巨量
  • Android内存如何优化?阿里技术员工整理亲授,建议收藏

    作者 山鱿鱼说 链接 https juejin cn post 7106289745499521054 基础知识 内存概念 VSS Virtual Set Size 虚拟耗用内存 包含共享库占用的内存 RSS Resident Set Si
  • animation中CrossFade的问题

    之前一个项目在教室中有很多带动画的学生模型 运行中在摄像机视野内的模型动画顺利播放 但是视野外的会卡住 或者在sence视图中能看到的会顺利播放 最后把animation的CrossFade播放改为直接play播放 问题解决 具体原因出在哪
  • ESP32(Micro Python) LVGL 传感器数值显示

    本程序用于显示SR04超声波传感器和BMP280气压温度传感器的读数 由于高度数值类型不符合要求 BMP280改为显示气压和温度值 气压值分两部分显示 分别为千帕值 100 避免超出表盘显示范围 和千帕值的两位小数 由于标签不能显示动态数值
  • uniapp请求数据成功页面未渲染问题

    uniapp 的request请求到数据 但是页面没渲染上 pc端能渲染 app确不能渲染出来问题 思路 一般向后台请求数据会把存在缓存里的数据取出来放data里传给后台 此时要先请求缓存数据再请求后台数据 而uni request是异步获
  • ora01720

    今天 根据业务需要 写了一个视图 即A用户需要查询B用户下的c表 已经进行过授权了 命令 grant select on c to B 在创建视图的时候出错 错误信息为 ORACLE ora 01720 授权选项对于 xxxx 不存在 经查
  • OpenWrt 软路由解析公网IPV6域名访问家庭NAS的教程

    OpenWrt软路由放行IPV6公网访问家庭NAS黑群晖设备的教程 威联通 黑群晖设置阿里云动态解析进行外网 IPV6 域名访问家中 NAS 设置OpenWrt软路由 通过ipv6外网访问家中电脑nas等设备系列教程 学长今天啥也没有干 网
  • Lua代码提示和方法跳转

    前言 当在一个大型工程中编写大量的lua脚本时 代码提示和方法跳转等功能很实用 据我所了解的目前除LuaStudio之外 似乎还没有一个很好的编辑器 但今天讲述的是Idea EmmyLua插件 达到很强大的功能 我的使用环境 idea 20
  • shell 用ip获取网络接口

    一 line expr ifconfig grep ip n awk F print 1 1 ifconfig sed n line p awk print 1 二 ifconfig awk ip print a a 1 以上命令中 ip用
  • 挂马方式研究、挂马检测技术研究

    1 挂马定义 所谓的挂马 就是黑客通过各种手段 包括SQL注入 网站敏感文件扫描 服务器漏洞 网站程序0day 等各种方法获得网站管理员账号 然后登陆网站后台 通过数据库 备份 恢复 或者上传漏洞获得一个webshell 利用获得的webs
  • Java Socket聊天室

    Socket聊天室 1 创建登录判断类UserLogin 2 创建登录服务器LoginServer 3 创建聊天服务器ChatServer 4 创建客户端Client 5 创建服务器用于处理聊天的线程类ChatThread 6 创建客户端C
  • ABAP排序

    SORT
  • RK Android G-EC 调试指南

    RK Android G EC 调试指南 在开发和调试 RK Android G EC General Engine Controller 时 有几个关键的步骤和技巧 本文将介绍这些步骤 并提供相关的源代码示例 环境设置 在开始调试之前 确
  • linux内核使用的一些算法和思想(个人总结)

    这里只罗列一些算法 其中有些在我之前的博文中有所涉及 有些没有 后续有时间再详细分析每一个算法 排名不分先后 1 trie算法 linux网络子系统中取代了之前哈希算法的新路由算法 适合有大 超大规模路由项的应用场景 2 CFS compl