多进程01-程序与进程

186 阅读1分钟

一、程序

程序按一定格式编辑的好的文件(如linux elf)。操作系统可以通过加载此文件执行。程序中一般包含程序格式,协议,入口地址,各段的位置。

1、ELF文件种类

  • exec可执行文件
  • rel 可重定位文件
  • 共享目标文件 (动态库文件)
  • core dump文件

2、elf文件以及结构

  • 基本都有代码段和数据段
  • elf文件结构 elf header
    • .text 代码
    • .data 数据
    • .rodata 只读
    • .bss 未初始化
    • 。。。
  • 相关指令
file    获取文件了类型
readelf 查看elf文件的信息
objdump 查看elf文件的具体信息
type    命令的类型

二、如何启动一个程序

操作系统lib exec系列函数库。加载程序并执行。

运行起来的程序就是进程

1、启动进程的过程

  • 程序加载器。 program loader
  • 调用exec加载一个可执行文件,同时给他传递 命令行参数(argv之类的) 和环境参数表
  • 使用 strace 查看过程,size查看程序大小

image-20210528231423756.png

三、php解释器工作原理

先加载php解释器,然后传入脚本名称,php解释器解释执行。

  1. os加载php解释器
  2. php脚本传入给php解释器
  3. php解释器读取php脚本内容,解释执行
  4. 退出程序,运行到最后,或者exit。通过echo $? 可以获取退出状态码
print_r($argv);
echo 123;
exit(12);

image-20210528232123616.png

image-20210528232144578.png