- 博客(4)
- 资源 (8)
- 收藏
- 关注
原创 以进程的角度分析fork()为什么会“返回两次”?
前言网上很多文章在介绍fork()函数时都会提到,调用一次fork会“返回两次”结果,但又没有深入解释。所以初学者(包括当年的我)看到这句话时就很懵。为什么用fork会返回两次?怎么实现的?为什么需要返回两次?只要能理解程序和进程的区别,以及有Linux下进程空间的概念,这种现象很好解释,并且不需要涉及分析内核源码。先放一个常见的测试例子。 1 #include <unistd.h&...
2018-09-27 14:56:42 1333
原创 Linux系统调用过程中user栈的保存与恢复
Linux系统调用过程中user现场的保存与恢复前言软硬件基础user和svc模式下寄存器的差异lr寄存器用法spsr寄存器用法USER栈的保存USER栈的恢复前言Linux应用程序中使用的open/close等函数属于glibc库提供的系统函数,调用这些函数最后都需要进入内核。所以完整的open实现可分为两部分,一部分在user space的glibc中实现;另一部分在内核中实现。这里只分析...
2018-09-26 23:47:47 1276
原创 匿名映射/线性映射的VMA分配和对应的缺页处理
现在知道elf文件中有PT_LOAD属性的segment最后会被加载到进程的VM中。但是加载之后也只是说segment和虚拟地址关联上了,物理内存此时并没有分配。那VMA和缺页一场如何产生关系呢?...
2018-09-17 23:31:46 1596
原创 Linux ELF文件和VMA间的关系
本来打算跟一下内核do_execve的实现,然后记录一下。但是在看的过程中发现已经有很多人写过非常棒的文章了,比如: https://blog.csdn.net/conansonic/article/details/53740670 写得非常详细了,所以跟代码的文章不写。这篇主要记录静态的二进制代码如何变成一个进程的。这中间会设计编译链接,execve的。Markdown和扩展Markdo...
2018-09-04 23:17:23 2284 4
Indicator-Sysmonitor
2013-08-17
μCOS-II V2.83 从ADS1.2工程移植到MDK4.2源码工程 适用TQ2440开发板
2012-01-04
μCOS-II V2.83 从ADS1.2工程移植到MDK4.2源码工程 使用TQ2440开发板
2012-01-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人