linux内核
文章平均质量分 92
已实践操作配合内核源代码分析内核机制
不会写代码的小可爱&&
计算机系统内核层里的小强
展开
-
Linux DRM的基本框架和原理
Linux内核有一个名为fbdev(一个Linux子系统,用于在计算机显示器上显示图形,通常在系统控制台上)的API,用于管理图形适配器()的帧缓冲区,但它无法处理现代基于GPU的3D加速视频硬件的需求。如下图所示:这些设备通常需要在自己的内存中设置和管理命令队列(command queue),以将命令分派到GPU,并且还需要管理该内存中的缓冲区和可用空间。最初,用户空间程序(例如X Server)直接管理这些资源,但它们通常表现得好像它们是唯一可以访问这些资源的程序。原创 2024-07-26 17:11:05 · 1538 阅读 · 0 评论 -
TLB及其工作原理
TLB是地址转换后援缓冲器(Translation Lookaside Buffer)的简称,也可简称为“快表”。首先,MMU的作用是把虚拟地址转换为物理地址。虚拟地址和物理地址的映射关系存储在页表中,而页表又是分级的。64位系统一般都是3~5级,常见的配置是4级页表。在硬件上会有一个叫做页表基地址寄存器,MMU就是根据页表基地址寄存器一路查到PTE,最终找到物理地址(PTE页表中存储物理地址)。原创 2024-05-21 15:54:41 · 2399 阅读 · 0 评论 -
linux内核中的电源管理
linux中为了解决非必要功耗的消耗,提供了多种电源管理方式,诸如休眠(suspend)、关机(power off和shutdown)、复位(reboot和reset)。为了解决运行时不必要的功耗消耗,linux提供了runtime pm、cpu/device dvfs、cpu hotplug、cpu idle、clock gate、power gate、reset等电源管理的机制。为了解决运行时电源管理对性能的影响,linux提供了pm qos的功能,用于平衡性能与功耗,这样既能降低功耗,又不影响性能。原创 2023-11-08 14:00:18 · 1153 阅读 · 0 评论 -
linux内核中的sysrq
在sysrq可以使用的情况下,都可以通过以下节点来实现sysrq的调试功能,这里将始终允许(具有管理员权限的用户)通过`/proc/sysrq触发器`调用任何操作。``0``-`9``设置控制台日志级别,控制哪些内核消息将打印到控制台。``q ``将转储所有已武装hrtimers(但不是常规timer_list timers)的每个CPU列表以及有关所有时钟事件设备的详细信息。``x``由ppc/powerpc平台上的xmon接口使用。``h``将显示帮助(实际上,除了此处列出的任何其他键都将显示帮助。原创 2023-10-25 17:24:24 · 347 阅读 · 0 评论 -
linux内核中的内存管理——buddy system伙伴系统
伙伴系统(buddy system)是操作系统内核中用于管理物理内存的一种算法。所谓伙伴指的是物理内存中地址连续的页块之间互为伙伴。若两个页面块之间可以互为伙伴,则两个页面块可以合并为更大的一个页面块。原创 2023-10-23 18:07:15 · 1083 阅读 · 0 评论 -
linux内核中的内存管理——综述
Linux内存管理是指对系统内存的分配、释放、映射、管理、交换、压缩等一系列操作的管理。在Linux中,内存被划分为多个区域,包括内核空间、用户空间、缓存、交换分区等,每个区域有不同的作用。Linux内存管理的目标是在保证系统的稳定和可靠性的同时,最大限度地利用可用内存。内存管理是计算机系统中负责管理系统内存资源的一种机制,主要包括内存分配、内存释放、内存映射和虚拟内存管理等方面。它是计算机系统中非常重要的一个组成部分,能够有效地提高系统的资源利用率和应用程序的性能。原创 2023-10-23 10:52:27 · 281 阅读 · 0 评论 -
Linux内核中的内存管理——slab
在学习c语言时,我们常常会使用到malloc()去申请一块内存空间,用于存放我们的数据。刚开始我们只要知道申请内存时使用用malloc去申请一块就可以,而其中的原理我们并不关心。但是随着我们对运行环境的要求越来越多样化,复杂化,以及对稳定性以及性能问题的要求逐渐变得越来越重要时,我们往往需要关注到性能问题。而研究性能问问,如果只停留在知道使用malloc()可以去申请一块内存空间是远远不够的,此时我们就需要去研究相关的原理和代码。原创 2023-03-14 15:34:16 · 2200 阅读 · 2 评论 -
cpu时间片原理说明
时间片即CPU分配给各个程序的时间,每个线程被分配一个时间段,称作它的时间片,即该进程允许运行的时间,使各个程序从表面上看是同时进行的。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。而不会造成CPU资源浪费。在宏观上:我们可以同时打开多个应用程序,每个程序并行不悖,同时运行。但在微观上:由于只有一个CPU,一次只能处理程序要求的一部分,如何处理公平,一种方法就是引入时间片,每个程序轮流执行。原创 2023-09-28 17:52:43 · 2036 阅读 · 1 评论 -
Linux内核proc sysctl
sysctl是一个用于运行时配置内核参数的命令,这些内核参数位于/proc/sys目录下。sysctl配置与显示在/proc/sys目录中的内核参数.可以用sysctl来设置或重新设置联网等功能,如IP转发、IP碎片去除以及源路由检查等。用户只需要编辑/etc/sysctl.conf文件,即可手工或自动执行由sysctl控制的功能。1、常见用法。原创 2023-03-02 17:28:22 · 1832 阅读 · 0 评论 -
Linux音频问题——codec寄存器配置
起初,在1992年推出了OSS框架,用于在Unix操作系统中处理音频信号。直至于1998年Gravis Ultrasound所开发的ALSA驱动,ALSA此时一直作为一个单独的软件包开发,LINUX内核一直使用的OSS框架。直到2002年开始,Linux内核2.5版本引进,2.6版本成为Linux内核中默认的标准音频驱动程序集,OSS则被标记为废弃。原创 2023-03-14 11:45:11 · 3897 阅读 · 1 评论 -
Linux网络栈——网络收发包
在开发或使用Linux网络的时候,我们往往会需要了解Linux网络数据是怎么传输的,它的收发包到底是怎样的一个流程。本文将初步整理一下本人的理解和认识。原创 2023-02-28 13:50:37 · 442 阅读 · 0 评论 -
内存ECC问题的分析和实践
不多介绍了,感兴趣自己研究吧。最后得出来的二进制数是:0101,我们会神奇地发现,0101就是10进制5的二进制表现,因此,我们可以准确的知道,5号位上发生了数据的改变,我们只要对5号位进行置反操作即可。首先第一组(1,3,5,7,9,11位):1的个数为6位,不再是奇数个了,因此,我们可以断定,这一组中肯定有某个数据发生了错误,但不能确定是哪一位上发生了错误。接下来,我们检查第二组(2,3,6,7,10,11) ,1的个数为3位,仍然满足“奇校验”,因此我们也可以断定这一组中没有任何一位数据发生了改变。原创 2023-09-28 11:34:03 · 4695 阅读 · 0 评论