linux基本命令行(二)

linux基本命令行(二)

进程-内存-文件
进程

创建进程的的系统调用叫fork,创建一个新的进程,需要一个老进程调用fork来实现,老的进程被称为父进程,新的进程被称为子进程。

  1. 当父进程调用fork创建进程的时候,子进程将拷贝父进程所有的文件。
  2. 针对这种情况我们往往这样处理:对于fork系统调用的返回值,如果当前进程是子进程返回0;如果是父进程就返回子进程的进程号。
  3. 通过if-else判断 进行系统执行,子进程需要请求一个叫execve来执行另一个程序。此时就产生了一个fork。
内存

在操作系统中,每个进程都有独立的内存空间,互相不干扰。

  1. 存放代码部分的内存空间 我们称之为代码段(Code Segment)
  2. 存放进程执行过程中产生数据的部分,我们称之为数据段(Data Segment)
  3. 内存中动态分配的部分,我们称之为堆(heap)
  4. 堆中的内存只有当真正写入数据时才会分配物理内存

摘自:https://sploitfun.wordpress.com/2015/02/11/syscalls-used-by-malloc/

  • brk: brk通过增加程序中断位置获得内存(非0初始化),start(start_brk)和堆段的末尾(brk)是指向同一段地址的。适合较小的内存数量,和原来堆内数据连在一起。
    • 当ASLR关闭时,start_brk和brk将指向数据段/静态内存段(bss segment)结尾(end_data)
    • 当ASLR开启时,start_brk和brk将等于数据段/静态内存段结尾加上随机brk偏移
  • mmap:malloc使用mmap创建一段匿名私有的内存映射,匿名私有的内存映射来分配内存空间并且只被调用进程使用。适合用于分配较大内存数量,重新划分一块内存区域。
文件

linux中一切皆文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值