摘要:以下是基于v5.0。 每个进程都有自己的虚拟机地址空间。在task_struct数据结构中有一个mm_struct专门用来描述进程的虚拟地址空间。 struct task_struct { ... struct mm_struct *mm; ... } struct mm_struct { stru
阅读全文
摘要:我们都知道malloc底层是调用brk系统调用实现的,但是不是每次malloc都会调用brk。我们来使用bpftrace验证以下。 写一个malloc的程序。 #include "stdio.h" #include <stdlib.h> int main() { void *p; p = mallo
阅读全文
摘要:早就听说过seccomp,只是知道他是控制syscall的。因为解一个bug,对seccomp了解多了一丢丢,记录一下。 seccomp是linux用来控制用户进程系统调用使用的。有三种模式: SECCOMP_SET_MODE_STRICT: 严格限制系统调用的使用,只允许read,write,_e
阅读全文
摘要:本文以linux 6.5.2为基础,只讨论arm64平台。 当linux kernel从UEFI启动之后尽管boot service退出了但是仍然可以使用runtime service。这就引发了一个问题:存在于uefi内存空间的code如何被kernel调用。 首先找一个调用efi runtime
阅读全文
摘要:linux kernel拿到启动参数一定是在boot阶段,那就必须从start_kernel找起。 asmlinkage __visible __init __no_sanitize_address __noreturn __no_stack_protector void start_kernel(
阅读全文
摘要:MPAM (Memory System Resource Partitioning and Monitoring)是Armv8.4的feature,用于cache和内存带宽的监控和限制。截至现在,该feature在linux kernel的实现还在推进,最新一版参见https://git.kerne
阅读全文