首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    含大量图文解析及例程 | Linux下的ELF文件、链接、加载与库(中)

    该虚拟文件有6列,分别为: vdso的全称是虚拟动态共享库(virtual dynamic shared library),而vsyscall的全称是虚拟系统调用(virtual system call...总体来说,在程序加载过程中,磁盘上的可执行文件,进程的虚拟地址空间,还有机器的物理内存的映射关系如下: Linux下的装载过程 接下来我们进一步探究一下Linux是怎么识别和装载ELF文件的,我们需要深入...Linux内核去寻找答案 (内核实际处理过程涉及更多的过程,我们这里主要关注和ELF文件处理相关的代码)。...而我们用cat /proc/[PID]/maps 来查看这个程序中内存的内容,看到我们之前提到的代码、数据、堆区、堆栈、vvar、vdso、vsyscall都已经被映射进了内存中。.../a.out & cat /proc/12002/maps 输出: 我们看到,除了像静态链接时,进程地址空间中的堆、栈、vvar、vdso、vsyscall等之外,还有了许多动态链接库.so。

    4.2K22

    Nginx的时间管理

    gettimeofday()的开销 在Linux中,Nginx通过gettimeofday()获取系统当前时间; gettimeofday是C库提供的函数(不是系统调用),它封装了内核里的sys_gettimeofday...Linux的系统调用通过int 80h实现,用系统调用号来区分入口函数,步骤大致如下: 1 API将系统调用号存入EAX,然后通过中断调用使系统进入内核态; 2 内核中的中断处理函数根据系统调用号,调用对应的内核函数...3 系统调用完成相应功能,将返回值存入EAX,返回到中断处理函数; 4 中断处理函数返回到API中; 5 API将EAX返回给应用程序 然而除了基本的系统调用外,x86_64还提供了sysenter/vsyscall...方式获取内核态数据,vsyscall在内存中创建内核态的共享页面,用户态也有权访问,可不经过系统中断和陷入内核获取内核信息; gettimeofday()便是通过vsyscall实现了系统调用。

    74410

    【Linux 内核】编译 Linux 内核 ⑤ ( 查看 .config 编译配置文件 | 正式编译内核 )

    文章目录 一、查看 .config 编译配置文件 二、正式编译内核 一、查看 .config 编译配置文件 ---- 在上一篇博客 【Linux 内核】编译 Linux 内核 ④ ( 打开 Linux...内核编译 菜单配置 |菜单配置中的光标移动与选中状态 | 保存配置 | 配置项帮助文档 ) 中 , 已经将编译配置保存到了 .config 文件中 ; 查看 .config 编译配置文件 , 在 linux...等号右侧的 y 表示同意该操作 ; .config 文件内容示例 : 配置文件很多 , 这里只贴出一部分 ; # # Automatically generated file; DO NOT EDIT. # Linux...CONFIG_ARCH_CLOCKSOURCE_DATA=y CONFIG_ARCH_CLOCKSOURCE_INIT=y CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y CONFIG_GENERIC_TIME_VSYSCALL...内核源码根目录 , 执行 sudo make j4 开始编译 Linux 内核 ;

    15.7K40
    领券