Linux进程空间

函数跳转和栈空间

在进程空间中,有一块名为程序段的区域。进程启动后,会把程序文件加载到进程空间的程序段中。加载到程序段后,每个指令占据一个存储单元,可以通过内存地址来访问。为了实现程序的复用,每个函数在程序段中只会存一次。

在进程开始前,每个函数就已经有确定的地址。当函数调用时,进程跳转到函数指令所在的位置即可。然而,函数返回的地址是不固定的,因为函数可能在不同地方调用,因此为了记录函数调用的可用信息,进程开辟了一块名为栈的内存空间。

栈的工作方式和函数调用方式类似。在main函数运行时,内存中就会有一个对应的内存单元出现,用来记录main函数的可变信息,比如main函数返回时应该跳转的地址。此后有新的函数调用发生时,栈就会向下增加一个帧,对应新的这个函数调用。

从init到进程树

计算机开机时,只启动一个名为init的进程。除了init进程之外的所有进程,都是通过fork机制创建的。fork机制就是从老进程中复制一个新进程。分化出新进程后,老进程继续运行,成为新进程的父进程,新进程成为老进程的子进程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值