关闭

Linux阅码场

所属频道 嵌入式 公众号精选
专业的Linux技术社区和Linux操作系统学习平台,内容涉及Linux内核、Linux内存管理、Linux进程管理、Linux文件系统、Linux性能调优,Linux设备驱动,以及Linux虚拟化和云计算等方面。
  • 深入理解Linux电源管理

    计算机运行在物理世界中,物理世界中的一切活动都需要消耗能量。能量的形式有很多种,如热能、核能、化学能等。计算机消耗的是电能,其来源是电池或者外电源。计算机内部有一个部件叫做电源管理芯片(PMIC),它接收外部的电能,然后转化为不同电压的电流,向系统的各个硬件供电。什么硬件需要多少伏的电压,都是由相应的电气标准规定好了的,各个硬件厂商按照标准生成硬件就可以了。上电的过程是由硬件自动完成的,不需要软件的参与。因为硬件不上电的话,软件也没法运行啊。但是当硬件运行起来之后,软件就可以对硬件的电源状态进行管理了。电源管理的内容包括电源状态管理和省电管理。电源状态管理是对整个系统的供电状态进行管理,内容包括睡眠、休眠、关机、重启等操作。省电管理是因为电能不是免费的,我们应该尽量地节省能源,尤其是对于一些手持设备来说,电能虽然并不昂贵但是却非常珍贵,因为电池的容量非常有限。不过省电管理也不能一味地省电,还要考虑性能问题,在性能与功耗之间达到平衡。

  • 使用Ftrace做性能分析和性能优化

    在我仔细研究Linux内核中的ftrace之后,发现ftrace中的各个tracers的作用一直被人们严重低估了, 比如我们会花了大量的时间去理解Linux内核中的一块代码,然后猜测可能的执行流, 但是ftrace会首先直接告诉你整个执行流,然后你再去查看代码,这样无论从效率和准确度来讲都是极大的提升。

  • Linux Kernel运行时安全检测之LKRG-原理篇

    虽然经常更新内核版本通常被认为是一种安全最佳实践,但由于各种原因,尤其是生产环境中的服务器无法这样操作。这就意味着在机器运行时,会存在利用已知的漏洞(当然,还会有一些未知的漏洞)来进行攻击的情况,所以需要某种方法来检测和阻止对这些漏洞的利用,这正是Linux Kernel Runtime Guard(Linux内核运行时保护LKRG)诞生目的所在。

  • Linux Kernel运行时安全检测之LKRG-实践篇

    从文章Linux Kernel运行时安全检测之LKRG-原理篇可以看到,LKRG可以对正在运行的Linux内核进行检测,并希望能够及时响应对正在运行的进程用户id等凭证未经授权的修改(完整性检查)。对于进程凭据,LKRG尝试检测漏洞,并在内核根据未经授权的凭据授予访问权限(例如打开文件)之前采取行动。并且是以可加载的内核模块的形式,检测正在运行的内核是否存在更改情况,以表明正在对其使用某种类型的漏洞利用。除此之外,它还可以检查系统上运行的进程,以查找对各种凭证的未经授权修改,以防止这些更改授予额外的访问权限。

  • 邢孟棒:性能工程师书单推荐与性能工程常见误区

    邢孟棒,曾供职于阿里、网易,目前在腾讯云专职做性能优化方向。Linux 业余爱好者,偏好钻研各类工具源码与底层技术原理。在日常的性能工程实践中,比较注重方法论的探索、优化案例的沉淀。热衷于 eBPF 技术,擅长传统工具与 BPF 工具的结合应用。

  • 深入理解红黑树

    大家都听说过红黑树,也都知道红黑树很厉害,是计算机里面评价非常高的数据结构。但是每当想学习红黑树的时候,却总是找不到通俗易懂很好理解的学习资料。很多书上上来就是红黑树的定义,然后就是红黑树的实现,直接就把人给整晕了。光看红黑树的定义就有5条,为什么要有5条定义,为什么要这么定义,这么定义是什么意思,光定义都让人懵了,更别说实现了。我看最近抖音上有很多人在讲底层逻辑,只要你掌握了底层逻辑,其它的问题都不在话下,今天我们也来讲一讲红黑树的底层逻辑。在讲之前我们先介绍一下红黑树的诞生,红黑树是Rudolf Bayer在1972年首先提出来的,不过当时并不叫红黑树,而是叫对称二叉 B 树(symmetric binary B-trees)。后来在1978年Leo J. Guibas 和 Robert Sedgewick 对此数据结构进行了修改和完善,并重新命名为红黑树。为什么叫红黑树呢?有两种说法,因为红黑树中要对节点连接做两种颜色的区分,一说是因为当时的书写笔只有红色和黑色两种颜色,另一说是当时的打印机只有红和黑两种颜色。

  • 深入理解排序算法

    我们先来说一说什么是排序、为什么要排序。什么是排序,这个很简单,就是把无序的东西按照一定的规则顺序排列成升序或者降序。为什么要排序,有两个原因,一是为了方便后面的查找,如果没有排序的话只能进行线性查找,时间复杂度是O(n),如果排序了就可以进行二分查找,时间复杂度是O(logn),复杂度一下子就大大降低了。我们来说明一下这两种复杂度的差别有多么悬殊(虽然用词错误,但是这么用确实很符合气氛),假设n是10亿的话,O(n)还是10亿,而O(logn)是30多(以2为底,假设系数是1),30多和10亿比都可以忽略不计了。二是为了显示的时候按照顺序显示,人类的习惯就是喜欢看有序的东西。

  • tracers为什么这样设计?整个发展脉络是怎样的?

    在我仔细研究Linux内核中的ftrace之后,发现ftrace中的各个tracers的作用一直被人们严重低估了, 比如我们会花了大量的时间去理解Linux内核中的一块代码,然后猜测可能的执行流, 但是ftrace会首先直接告诉你整个执行流,然后你再去查看代码,这样无论从效率和准确度来讲都是极大的提升。

  • 深入理解Linux进程间通信

    我们先拿人来做个类比,人与人之间为什么要通信,有两个原因。首先是因为你有和对方沟通的需求,如果你都不想搭理对方,那就肯定不用通信了。其次是因为有空间隔离,如果你俩在一起,对方就站在你面前,你有话直说就行了,不需要通信。此时你非要给对方打个电话或者发个微信,是不是显得非常奇怪、莫名其妙。如果你俩不在一块,还有事需要沟通,此时就需要通信了。通信的方式有点烽火、送信鸽、写信、发电报、打电话、发微信等。采取什么样的通信方式跟你的需求、通信量的大小、以及客观上能否实现有关。

  • 万字长文 | 手把手教你加固内核安全配置

    正如Linus Torvalds曾经说过的,大多数安全问题都是bug造成的,而bug又是软件开发过程的一部分,是软件就有bug。至于是安全还是非安全漏洞BUG,内核社区的做法就是尽可能多的测试,找出更多潜在漏洞这样近似于黑名单的做法。Greg Kroah-Hartman说:“一旦我们修复了它,我们就将它放到我们的栈分析规则中,以便于以后不再重新出现这个bug。”如果没有2015年11月5号华盛顿邮报的一篇关于内核安全性的爆炸性专题报道《Net of insecurity the kernel of the argument》,内核社区应该仍会固守“A bug is bug”的理念(虽然如今也没有改变太多)。这篇文章狠狠的批评了内核社区对内核安全的态度,批评Linux “没有一个系统性的机制能在黑客之前发现和解决安全问题,或引入更新的防御技术”,“甚至Linux内核开发社区都没有一个首席安全官”等等。

  • 阅码场训练营:ARM架构与调试调优

    我是从ARM7TDMI开始接触ARM架构的,当时很幸运有DSP的学习基础,同时遇到了把ARM架构和操作系统结合讲解的书籍。这样,结合自己不断的实践,一直可以跟上ARM架构的演进。长期的跟踪也让我容易能看到ARM的趋势,我从Linaro在做ARM NEON指令集优化关注到Linaro,后面持续的关注以Linaro为首ARM生态组织的发展,几年后的2017年,我作为演讲人分享了ARM架构下的一个TLB性能优化方案,实现了从关注到深度参与到过程。

  • 操作系统导论

    我们生活中几乎到处都能接触到计算机,从我们日常使用的手机、平板,到办公使用的笔记本、台式机,到银行的ATM机,到各处可见的监控设备,还有我们平时看不见但是我们浏览的网页其所在的服务器,还有微信、抖音等我们日常所用的APP它们所在的服务器,等等,这些都是计算机。如果没有了计算机,我们的生活将难以想象。那么究竟什么是计算机呢,这个还真不好下定义的,那我们就来看一下百度百科对计算机的定义:计算机俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。计算机的应用非常广泛,从我们日常最常见的台式机、笔记本到手机平板都是计算机,而且大到服务器、超级计算机,小到各种嵌入式设备也都是计算机。现在我们对计算机既有了感性的认识,又知道了的它的权威定义,那么计算机是怎么产生的呢,下面我们来看一看计算机的发展史。

  • Ftrace实战训练营(第3期) | 仅剩最后5个名额~

    在我仔细研究Linux内核中的ftrace之后,发现ftrace中的各个tracers的作用一直被人们严重低估了, 比如我们会花了大量的时间去理解Linux内核中的一块代码,然后猜测可能的执行流, 但是ftrace会首先直接告诉你整个执行流,然后你再去查看代码,这样无论从效率和准确度来讲都是极大的提升。

  • 分歧还是共存?详解Android内核安全

    随着2003年10月安迪鲁宾联合几位朋友创建了Android公司,后来影响众人的智能设备操作系统公司由此而生(2005年被Google收购)。现如今,世界上越来越多的智能终端包括手机、TV、SmartBox和IoT、汽车、多媒体设备等等,均深度使用Android系统,而Android的底层正是Linux内核,这也让Linux内核的安全性对Android产生重大影响。但由于Android由于想绕过商业授权的问题,又研究出来了以bionic取代Glibc、以Skia取代Cairo等类似的方案,使用的不是标准内核和GNU/Linux。由于这些原因,Google在Android内核开源的问题上,理念和Linux内核社区不是十分的匹配,这也导致了Android对内核做了大量的针对性修改,但是无法合入到Upstream上。这也导致了Android内核在安全侧有部分不同于Linux内核,侧重点也存在不同。

  • 以Ftrace为抓手打通软硬件任督二脉:IO和中断

    在我仔细研究Linux内核中的ftrace之后,发现ftrace中的各个tracers的作用一直被人们严重低估了, 比如我们会花了大量的时间去理解Linux内核中的一块代码,然后猜测可能的执行流, 但是ftrace会首先直接告诉你整个执行流,然后你再去查看代码,这样无论从效率和准确度来讲都是极大的提升。