1. 程式人生 > >Unix系統編程()進程和程序

Unix系統編程()進程和程序

初始 調試 ogr 進制 路徑名 目錄 編碼 出了 信號

進程(process)是一個可執行程序(program)的實例。

程序是包含了一系列信息的文件,這些信息描述了如何在運行時創建一個進程,所包括的內容如下所示。

二進制格式標識:每個程序文件都包含用於描述可執行文件格式的元信息(metainformation)。內核(kernel)利用此信息來解釋文件中的其他信息。

歷史上,UNIX可執行文件曾有兩種廣泛使用的格式,分別是最初的a.out(匯編程序輸出)和更加復雜的COFF(通用對象文件格式)。

現在,大多數UNIX實現(包括Linux)采用可執行連接格式(ELF),這一文件格式比老版本格式具有更多優點。

機器語言指令:對程序算法進行編碼。

程序入口地址:標識程序開始執行時的起始指令位置。

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

符號表及重定位表:描述程序中函數和變量的位置及名稱。這些表格有多種用途,其中包括調試和運行時的符號解析(動態鏈接)。

共享庫和動態鏈接信息:程序文件所包含的一些字段,列出了程序運行時需要使用的共享庫,以及加載共享庫的動態鏈接器的路徑名。

其他信息:程序文件還包含許多其他信息,用以描述如何創建進程。

可以用一個程序來創建許多進程,或者反過來說,許多進程運行的可以是同一程序。

現在定義進程是由內核定義的抽象的實體,並為該實體分配用以執行程序的各項系統資源。

從內核角度看,進程由用戶內存空間(user-space memory)和一系列內核數據結構組成,其中用戶內存空間包含了程序代碼及代碼所使用的變量,而內核數據結構則用於維護進程狀態信息。

記錄在內核數據結構中的信息包括許多與進程相關的標識號(IDs)、虛擬內存表、打開文件的描述符、信號傳遞以及處理的有關信息、進程資源使用及限制、當前工作目錄和大量的其他信息。

看來一個進程起來還是包含了好多東西啊。

Unix系統編程()進程和程序