Fork me on GitHub

05 2020 档案

摘要:一、准备环境 1)获取crash工具。注意区分版本(arm/arm64/x86_64)。 2)获取对应软件版本的符号表文件(如vmlinux),可以将该文件放置 crash工具同一目录下。 3)获取sysdump文件,并把所有sysdump文件追加到一个文件sysdump.core中: cat sy 阅读全文
posted @ 2020-05-20 14:25 yooooooo 阅读(2828) 评论(0) 推荐(0) 编辑
摘要:1. SELinux 背景知识 1.1 DAC 与 MAC 在 SELinux 出现之前,Linux 上的安全模型叫 DAC,全称是 Discretionary Access Control,翻译为自主访问控制。 DAC 的核心思想很简单,就是:进程理论上所拥有的权限与执行它的用户的权限相同。比如, 阅读全文
posted @ 2020-05-19 09:40 yooooooo 阅读(989) 评论(0) 推荐(0) 编辑
摘要:内核中常用的分配物理内存页面的接口函数是alloc_pages(),用于分配一个或者多个连续的物理页面,分配页面个数只能是2个整数次幂。相比于多次分配离散的物理页面,分配连续的物理页面有利于提高系统内存的碎片化,内存碎片化是一个很让人头疼的问题。alloc_pages()函数有两个,一个是分配gfp 阅读全文
posted @ 2020-05-16 15:09 yooooooo 阅读(1126) 评论(0) 推荐(0) 编辑
摘要:ARM64架构处理器采用48位物理寻址机制,最大可以寻找到256TB的物理地址空间。对于目前的应用来说已经足够了,不需要扩展到64位的物理地址寻址。虚拟地址也同样最大支持48位支持,所以在处理器的架构设计上,把虚拟地址空间划分为两个空间,每个空间最大支持256TB。Linux内核在大多数体系结构中都 阅读全文
posted @ 2020-05-11 09:06 yooooooo 阅读(5120) 评论(1) 推荐(0) 编辑
摘要:Linux内核在启动时会打印出内核内存空间的布局图,下面是ARM Vexpress平台打印出来的内存空间布局图: 这部分信息打印是在mem_init()函数中实现的。 编译器在编译目标文件并且链接完成之后,就可以知道内核映像文件最终的大小,接下来打包成二进制文件,该操作由 控制,其中也划定了内核的内 阅读全文
posted @ 2020-05-09 14:48 yooooooo 阅读(1987) 评论(0) 推荐(0) 编辑
摘要:在内存系统初始化过程中,有如下代码: 这里,我们看到了神秘的swapper_pg_dir,全局搜索一下,发现了 在head_32.S中,定义了如下的BSS段,BSS段是在内核映像文件中不占空间,但是在内核被加载到内存时,会保留相应的空间。 在BSS段,一共保留了4个页面的空间,分别用initial_ 阅读全文
posted @ 2020-05-04 16:42 yooooooo 阅读(2059) 评论(0) 推荐(0) 编辑
摘要:在32bit中的Linux内核中一般采用3层映射模型,第1层是页面目录(PGD),第2层是页面中间目录(PMD),第3层才是页面映射表(PTE)。 但在ARM32系统中只用到两层映射,因此在实际代码中就要3层映射模型中合并一层 。在ARM32架构中,可以按段(section)来映射,这时采用单层映射 阅读全文
posted @ 2020-05-03 11:19 yooooooo 阅读(2158) 评论(0) 推荐(1) 编辑
摘要:在上一篇文章中,介绍了cpufreq的core层,core提供了cpufreq系统的初始化,公共数据结构的建立以及对cpufreq中其它子部件提供注册功能。core的最核心功能是对policy的管理,一个policy通过cpufreq_policy结构中的governor字段,和某个governor 阅读全文
posted @ 2020-05-01 16:59 yooooooo 阅读(1997) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示