
Linux内核
文章平均质量分 83
分享Linux内核的相关技术
量子象限
90后嵌入式工程师,喜欢写作、读书。希望通过文字和大家共同进步!
展开
-
Linux物理内存模型
本文是Linux内存管理系列文章的第一篇,先对一些常见概念有一个基本的认知。Linux内存有哪三大结构?去本文中找答案吧!Multiprocessors系统设计内存架构的两种模式UMANUMALinux物理内存的三大结构Node: CPU和本地内存组成Node, 用 struct pglist_data 表示,放在一个数组里面。原创 2022-10-08 10:38:16 · 807 阅读 · 0 评论 -
kernel启动镜像不是vmlinux,而是它!
上一节我们介绍了vmlinux的编译过程。vmlinux是一个ELF文件,上百M,无法直接flash到板子上。由此可以发现,arm64的启动镜像为压缩后的。再进一步走到boot目录下的Makefile。原创 2022-10-07 17:13:49 · 916 阅读 · 0 评论 -
Linux kernel中.o文件的编译过程
在嵌入式Linux的开发过程中,内核编译是一个永远也绕不开的话题。了解整个内核的构造节省编译时间在编译报错时快速定位问题进一步了解内核的启动本文从Linux kernel中.o文件的编译探索kbuild机制。原创 2022-10-06 20:18:05 · 1757 阅读 · 0 评论 -
如何编译并运行Linux系统?
学习Linux内核是一件振奋人心的事情,而在学习伊始对Linux内核的成功编译并运行也更会燃起更足的动力去钻研。本文从下载并编译Linux内核、编译busybox、制作一个最小的根文件系统,最后用qemu启动你编译好的内核和根文件系统 ,初步感受Linux内核的魅力所在。原创 2022-10-06 20:16:27 · 935 阅读 · 0 评论 -
Linux内核的命令行解析机制
bootargs如何传递给kernel?kernel的cmdline如何解析?这篇文章相信会为你一扫疑惑!原创 2022-06-05 14:56:01 · 1618 阅读 · 1 评论 -
什么是overcommit_memory?
1. 前言在日常的工作中可能我们会经常遇到程序fork失败的问题。遇到fork失败往往有两种可能性:进程数超标:可以通过cat /proc/sys/kernel/threads-max查看内存不足进程数预设值往往很大,几乎不太能超标,所以fork失败的原因大部分都是由于内存不足造成的。我们知道,由于MMU实现了虚拟地址到物理地址的转换,所以我们在申请虚拟地址时往往可以申请一大块内存,这实际上是对资源的有效利用,毕竟只有内存真正被投入使用时(如memset)才会实际分配物理内存,这种允许内存超额原创 2022-01-23 23:05:23 · 2318 阅读 · 0 评论 -
什么是内存乱序访问?
什么是内存乱序访问?文章目录什么是内存乱序访问?1. 编译乱序1.1 编译优化等级1.2 使用volatile1.3 编译器屏障1.4 加锁2. 运行乱序3. 总结不断深挖计算机底层的原理越发觉得有趣,今天聊聊内存乱序执行的话题。首先问个问题:我们写得程序会按照既定的顺序执行么?这似乎毫无疑问。但是了解编译、链接原理的“底层”知识,则不会轻易下定论。特别是在用到多线程涉及到内存共享没有加锁的时候,也会暴露这个问题。所以很遗憾,在某些情况下,程序指令的执行顺序会发生改变,这就产生了我们所说的内存乱序原创 2021-11-20 12:33:28 · 1116 阅读 · 0 评论 -
如何制作文件系统并用qemu运行linux内核
上一文我们介绍了如何编译内核和busybox:如何编译Linux内核源码?本文介绍如何制作一个简版的文件系统、制作fs镜像文件并最终通过qemu将linux内核运行起来!制作一个简版文件系统编译完成后的busybox就安装在源码根目录下的_install目录了,我们进入_install目录,补充一些必要的文件或目录,相关的shell命令如下:$ mkdir -p etc dev mnt proc sys tmp mnt$ mkdir -p etc/init.d/$ mkdir etc dev原创 2021-11-20 08:56:49 · 1413 阅读 · 0 评论