Linux 内核知识
文章平均质量分 76
记录 Linux 内核知识
leon.liao
这个作者很懒,什么都没留下…
展开
-
Linux - 内存 - memblock 分配器
【代码】Linux - 内存 - memblock 分配器。原创 2023-12-13 16:45:54 · 371 阅读 · 0 评论 -
Linux - 系统调用(syscall)
syscall 原理原创 2023-11-25 18:41:12 · 1326 阅读 · 0 评论 -
Linux - 驱动开发 - RNG框架
【代码】Linux - 驱动开发 - RNG框架。原创 2023-11-18 21:47:17 · 604 阅读 · 0 评论 -
Linux - 物理内存管理 - memmap
【代码】Linux - 物理内存管理 - memmap。原创 2023-11-18 12:37:27 · 619 阅读 · 0 评论 -
Linux - 内存 - 预留内存占用分析
【代码】Linux - 内存 - 预留内存占用分析。原创 2023-11-16 18:12:06 · 624 阅读 · 0 评论 -
Linux - 内核 - 安全机制 - 内存页表安全
【代码】Linux - 内核 - 安全机制 - 内存页表安全。原创 2023-11-16 11:49:07 · 573 阅读 · 0 评论 -
Linux - 驱动开发 - watchdog - SMP机制下多核确活
【代码】Linux - 驱动开发 - watchdog - SMP机制下多核确活。原创 2023-11-13 19:26:41 · 636 阅读 · 0 评论 -
Linux性能分析工具 - perf 和火焰图
linux 性能分析工具 perf 和火焰图原创 2022-07-11 16:05:06 · 4300 阅读 · 0 评论 -
linux - 内存 - KO占用
【代码】linux 内存 - KO内存占用。原创 2023-08-08 19:26:50 · 1004 阅读 · 0 评论 -
linux - 内核 - io子系统 - io调度
背景在嵌入式平台实现行车记录仪等产品的录像功能(使用SD卡存储)时,性能普通,研究确认IO调度是否能提升性能。调度说明在linux平台以普通方式(缓存io)读写文件,读写请求并不是直接发给存储设备处理,操作系统会先将请求(包含数据)缓存起来,经过算法调度和处理(合并、排序请求)后,再发送请求到存储设备。为何需要调度算法IO请求较多以及来源(请求发起进程)比较复杂时。为了保证所有IO请求能够以相对公平的方式得到执行,从而产生的优先级问题。为了尽可能的提高性能,需要配合缓存机制实现一原创 2022-03-21 21:45:48 · 954 阅读 · 0 评论 -
内核配置保存
事由调试开发板,想在sigmastar提供的内核配置上做些修改,去掉一些不需要的配置,保存一份自定义的配置,但是配置过程中出现了一些异常和疑惑,理解后,特记录下。异常sigmastar提供的默认配置和编译命令,如下:declare -x ARCH="arm"declare -x CROSS_COMPILE="arm-buildroot-linux-uclibcgnueabihf-"make infinity6_cardv_defconfig //使用配置infinity6_cardv_原创 2020-11-12 20:34:47 · 806 阅读 · 0 评论 -
根文件系统(rootfs)理解
说明最近学习了使用qemu搭建ARM vexpress环境,对rootfs有了一些大致理解并且对rootfs的构建做了些测试验证,特记录下。简介文件系统有两种意思:文件管理系统,例如:ext2、ext3、vfat、ntfs等文件管理和组织结构。一定规模文件的集合,分别起不同作用的文件按照一定结构组合形成系统。显而易见根文件系统不是类似于ntfs等文件管理系统,它属于第2种意思,根表示设备启动后该文件系统将被mount到根目录即路径’/'下。根文件系统不是一种文件管理系统,但是根文原创 2020-11-02 20:43:29 · 2010 阅读 · 0 评论 -
Linux - 安全机制 - 内存地址空间布局随机化(ASLR)
说明学过编译原理可知,C语言程序中所有变量的逻辑地址编译后都是确定了的,但是在linux平台上实际使用中可以发现变量的地址不是固定的,如下:* 示例代码#include <stdio.h>int main(){ int a; printf("%p\n", &a); return 0;}* 运行结果xxx@Lenovo-V110-15IKB:~/$ ./test0x7ffdd2ec0124xxx@Lenovo-V110-15IKB:原创 2020-10-22 21:17:16 · 5668 阅读 · 1 评论 -
VFS 虚拟文件系统
说明硬盘block:硬盘的最小存储单位是"扇区"(Sector),每个扇区512个字节,操作系统操作硬盘时,为了加快效率,将多个连续扇区合并管理,即一次性操作多个扇区,称为一"块"(block),"块"是文件操作的最小单位,最常见的块大小是4KB,即连续八个sector组成一个block。数据划分linux系统把数据分为以下三部分,分别进行管理。文件数据(内容数据)文件信息,也叫元信息,包含文件创建者、创建日期、大小等信息,储存文件元信息的区域就叫做inode,中文译名为"索引节点"。原创 2020-08-13 21:35:05 · 207 阅读 · 0 评论 -
内存碎片问题分析
说明之前在某公司,承担某款 64M小内存IPC产品开发时,出现现象:设备启动后不一会就自动重启,操作设备进行录像的话重启更快。CPU占用快速飙升,飙升进程是系统进程 kworker。重启原因是内核提示oom,应用程序被kill掉后,看门狗重启的设备,崩溃时free看起来还有4~5M内存,足够内存分配(设备上申请内存较小),内核打印信息类似如下,只是数据不同。SysRq : Show MemoryMem-info:Normal per-cpu:CPU 0: hi: 18, b原创 2020-07-22 20:25:51 · 535 阅读 · 0 评论 -
Linux缓存机制
说明为了加快高速设备访问低速设备时的访问速度,缓存机制通过数据备份等方式实现高速设备对低速设备上数据的映射访问,以减少低速设备的访问次数,提高平均访问速度。常见场景CPU/内存CPU速度远远大于内存读取速度,为了提高内存的平均访问速度,CPU硬件上存在一级缓存,二级缓存,甚至三级缓存,读写速度不断下降,但是快于内存访问,缓存部分读写频繁的数据,也叫做CPU Cache。内存/硬盘内存读写速度远远快于硬盘,如果每次读写都去直接操作磁盘,一方面操作速度会被限制,一方面也会降低磁盘使用寿命,原创 2020-07-22 19:48:53 · 436 阅读 · 0 评论 -
常见内存问题
内存泄漏形象描述:内存像气球漏气一样,漏掉部分(不能使用),只剩下整体的部分(能够被使用)。理解栈内存,.data, .bss 等内存段中的内存申请和释放都是由系统处理的,按我当前的理解是不会造成内存泄漏,只有堆内存,是由程序员管理的,出现野指针(指针指向的内存是堆内存,内存申请了但是没有释放,内存地址也被丢失)等会导致内存泄漏。内存溢出形象描述:内存像容器,被加入超过容器容量大小的水(数据),由于没有边界限制,部分水覆盖了其它空间(部分数据覆盖了其它数据的内存空间)。理解内存溢原创 2020-06-22 21:33:52 · 125 阅读 · 0 评论 -
进程与线程
对于运行宿主cpucpu有单核和双核之分,核心是物理概念,可以简单的将双核cpu看做两个cpu。每个cpu核都有独自的一套寄存器和几级缓存,一个cpu核心同时只能运行一个任务,因此操作系统会给每个cpu核心创建一个进程队列来做进程调度。每个核心存在进程队列,因此就有了cpu负载和cpu占用率的区别,cpu负载关注的是进程队列的的进程数量,而cpu占用率关注的是cpu一段时间内的统计工作时间比。进程调度,cpu 分配区别linux是基于时间片对进程进行调度的,每个进程执行一段时间后,再将cpu原创 2020-05-19 20:29:55 · 181 阅读 · 0 评论 -
Linux 可执行程序的分段结构
说明Linux系统下编译产生的二进制程序是以ELF格式存储的,ELF格式是分段的;由于Linux系统采用段式内存管理架构,二进制程序加载进内存后内存也是分段的。windows系统也是类似的。个人理解分段是由编译器和操作系统实现,编译时编译器将不同类型的元素存储到相应的段,以区分处理,利于管理和加快操作效率。分段行为不是固定的,不同编译器,不同平台可能有细微差别,虚拟内存和硬盘都是连续的。程序由数据和处理两部分组成,处理部分(代码)编译后为二进制指令(代码段)比较固定,而数据部分(变量)有多原创 2020-05-15 19:41:57 · 1466 阅读 · 0 评论 -
oom 机制
说明在linux系统上有时内核打印会出现oom信息,并伴随着某个进程被kill掉,在嵌入式设备等低内存设备上容易出现。理解oom 是"out of memry"的缩写,意思是内存资源不足,打印该信息的是操作系统内核中用来保证操作系统在内存不足情况下自身正常运行的一种机制。该机制会时刻给进程评分,当系统可用物理内存低于内核预设阈值时,会kill掉一些评分较高的进程来释放内存,保证操作系...原创 2020-04-25 19:20:00 · 2338 阅读 · 0 评论 -
CPU使用率过高问题定位
说明程序员可以通过top命令实时监测cpu使用情况,cpu剩余项为idle。问题定位通过top可以确认是哪个进程的cpu占用较高,不合理,进程可能是内核进程也有可能是应用层进程。内核进程例如:top 中 发现 5 2 root RW 0 0.0 0 77.9 [kworker/u:0]kworker/u:0 占用cpu较高,pid 为...原创 2020-03-17 21:24:45 · 249 阅读 · 0 评论 -
衡量cpu使用情况 - 占用率和负载
指标外在表现:对于GUI程序而言,用户操作时界面是否卡顿,操作是否有延时,对于非GUI程序而言,程序是否反应及时,这些体现了CPU使用情况。内在指标:指令的运行时长,GUI程序卡顿现象是操作延时过大给人的感觉,这些现象都能通过指令运行时长来解释,运行时间体现了CPU的使用情况。影响程序运行时长和体现cpu使用情况的两个CPU指标:cpu使用率cpu负载使用率cpu 使用率可......原创 2020-03-17 20:40:12 · 4254 阅读 · 0 评论 -
文件 io 知识体系
知识关联底层 硬盘中间层 文件系统上层 文件io硬盘外存(外部存储) 包括软盘和硬盘,软盘已过时了查看硬盘详细信息# fdisk -lDisk /dev/cciss/c0d0: 146.7 GB, 146778685440 bytes255 heads, 63 sectors/track, 17844 cylindersUnits = cylinders of 1606...原创 2019-06-12 20:40:09 · 137 阅读 · 0 评论