Unix系统编程()进程和程序

Posted tuhooo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unix系统编程()进程和程序相关的知识,希望对你有一定的参考价值。

 

进程(process)是一个可执行程序(program)的实例。

程序是包含了一系列信息的文件,这些信息描述了如何在运行时创建一个进程,所包括的内容如下所示。

 

二进制格式标识:每个程序文件都包含用于描述可执行文件格式的元信息(metainformation)。内核(kernel)利用此信息来解释文件中的其他信息。

 

历史上,UNIX可执行文件曾有两种广泛使用的格式,分别是最初的a.out(汇编程序输出)和更加复杂的COFF(通用对象文件格式)。

 

现在,大多数UNIX实现(包括Linux)采用可执行连接格式(ELF),这一文件格式比老版本格式具有更多优点。

 

机器语言指令:对程序算法进行编码。

 

程序入口地址:标识程序开始执行时的起始指令位置。

数据:程序文件包含的变量初始值和程序使用的字面常量(literal constant)值(比如字符串)。

符号表及重定位表:描述程序中函数和变量的位置及名称。这些表格有多种用途,其中包括调试和运行时的符号解析(动态链接)。

 

共享库和动态链接信息:程序文件所包含的一些字段,列出了程序运行时需要使用的共享库,以及加载共享库的动态链接器的路径名。

 

其他信息:程序文件还包含许多其他信息,用以描述如何创建进程。

 

可以用一个程序来创建许多进程,或者反过来说,许多进程运行的可以是同一程序。

 

现在定义进程是由内核定义的抽象的实体,并为该实体分配用以执行程序的各项系统资源。

 

从内核角度看,进程由用户内存空间(user-space memory)和一系列内核数据结构组成,其中用户内存空间包含了程序代码及代码所使用的变量,而内核数据结构则用于维护进程状态信息。

 

记录在内核数据结构中的信息包括许多与进程相关的标识号(IDs)、虚拟内存表、打开文件的描述符、信号传递以及处理的有关信息、进程资源使用及限制、当前工作目录和大量的其他信息。

 

看来一个进程起来还是包含了好多东西啊。

以上是关于Unix系统编程()进程和程序的主要内容,如果未能解决你的问题,请参考以下文章

Linux_Unix系统编程chapter6 进程

多进程编程

020_Linux的孤儿进程与僵尸进程(Unix系统编程)

Unix系统编程 信号部分学习笔记

Unix系统编程()信号处理器简介

Unix环境高级编程(十三)守护进程