码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2018-03-28 01:35:21      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:抽象   位置   内存   语言   版本   实现   ram   执行   机器   

 

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

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

 

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

 

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

 

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

 

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

 

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

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

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

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

标签:抽象   位置   内存   语言   版本   实现   ram   执行   机器   

原文地址:https://www.cnblogs.com/tuhooo/p/8661225.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!