linux進程的加載和啟動過程分析

我們的源代碼通過預處理,編譯,匯編,鏈接后形成可執行文件,那么當我們在終端敲下指令$ ./a.out argv1 argv2 后,操作系統是怎么將我們的可執行文件加載并運行的呢?

首先知道,計算機的操作系統的啟動程序是寫死在硬件上的,每次計算機上電時,都將自動加載啟動程序,之后的每一個程序,每一個應用,都是不斷的 fork 出來的新進程。那么我們的可執行文件,以linux 系統為例,也是由shell 進程 fork 出一個新進程,在新進程中調用exec函數裝載我們的可執行文件并執行。

可執行文件格式ELF

可執行文件需要被內核運行,自然需要遵守一定的規范。

Linux下標準的可執行文件格式是ELF。ELF(Executable and Linking Format)是一種對象文件的格式,用于定義不同類型的對象文件(Object files)中都放了什么東西、以及都以什么樣的格式去放這些東西。它自最早在 System V 系統上出現后,被 UNIX 世界所廣泛接受,作為缺省的二進制文件格式來使用。

但是linux也支持其他不同的可執行程序格式, 各個可執行程序的執行方式不盡相同, 因此linux內核每種被注冊的可執行程序格式都用linux_bin_fmt來存儲, 其中記錄了可執行程序的加載和執行函數。

在這里插入圖片描述

  • st

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/20693.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/20693.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/20693.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python第五次作業

1.請實現一個裝飾器,每次調用函數時,將函數名字以及調用此函數的時間點寫入文件中 # 導入datetime模塊,用于獲取當前時間并格式化輸出 import datetime# 定義一個裝飾器工廠函數log_funcName_time,它接受一個參數time def log_fu…

紅外聽力教學考試系統-紅外語音聽力廣播在大學英語四六級聽力考試中應用

紅外聽力教學考試系統-紅外語音聽力廣播在大學英語四六級聽力考試中的應用 由北京海特偉業科技有限公司任洪卓發布于2024年6月1日 紅外語音聽力廣播(即紅外聽力教學考試系統)在英語四六級聽力考試的應用正日益凸顯出其重要性和優越性。在當前的高等教育…

xcode刪除依賴包package,刪除不必要的依賴項

點擊項目,然后點擊PROJECT項里面的Package DepenDependencies: 選中一個依賴項,然后點擊減號,就可以把依賴項刪除掉了,左側項目下面的Package已經沒有了這個依賴項 TARGET下面的package也要刪除:在這里刪除…

【C++】【Windows】程序加載DLL庫時依次查找哪些目錄

搜索的順序通常如下: 應用程序目錄:首先,系統會在包含可執行文件(EXE)的目錄中查找DLL。系統目錄:接下來,系統會在Windows系統目錄中查找,比如 C:\Windows\System32。16位系統目錄&…

人工智能與未來工作:未來已來,你準備好了嗎?

1. 引言 隨著人工智能技術的飛速發展,它正在逐漸滲透到我們生活的方方面面,尤其是工作領域。本文將探討人工智能的基本概念,它在不同行業的應用,以及它對未來就業市場和教育體系可能帶來的影響。 2. 人工智能的基本概念 2.1 定…

ESP32S3外設學習筆記

GPIO ESP32的GPIO(通用輸入輸出)引腳非常靈活,支持多種工作模式。這些模式可以通過編程來配置,以適應不同的應用需求。以下是ESP32 GPIO引腳的主要工作模式: 1. 輸入模式 普通輸入模式:在這種模式下&…

dubbo復習:(14)通過上下文傳遞附加數據

服務調用和響應時,除了請求的方法和返回的響應,還可以通過上下文(Context)傳遞更多的數據(附加數據) 一、接口定義 package cn.edu.tju.service;public interface ContextService {String invoke(String param); }二、服務端接口實現&#x…

OA前端用什么開發:深入探索技術選型與最佳實踐

OA前端用什么開發:深入探索技術選型與最佳實踐 在開發OA(辦公自動化)系統的前端時,技術選型是至關重要的一步。它不僅決定了系統的外觀和用戶體驗,還直接影響到系統的性能、安全性和可維護性。本文將從四個方面、五個…

nuxt3 api如何透傳(不引第3方庫)

背景: nuxt做為一個vue的服務端渲染框架,本身就具備服務端的功能,理論上可以完整做一個系統功能,包括對數據庫等等操作,但更合理的做法是nuxt應該定位只做服務端渲染的事情,更偏向ui層面,而非數…

大數據分析統計

大數據分析統計 from datetime import datetimeimport pandas as pd import matplotlib.pyplot as pltpm25files [PM2.5_2021.csv, PM2.5_2022.csv, PM2.5_2023.csv] pm10files [PM10_2021.csv, PM10_2022.csv, PM10_2023.csv]def read_csv_file(files):# 每個文件都有表頭…

C++之類(class)的三種成員修飾符(public、private、protected)總結

1、背景介紹 在C中,類(class)中成員的三種訪問修飾符(access specifiers)用于控制類的成員(屬性和方法)的訪問權限。這些修飾符決定了類成員在類的外部和內部是否可以被訪問。以下是這三種訪問…

macOS上編譯android的ffmpeg及ffmpeg.c

1 前言 前段時間介紹過使用xcode和qt creator編譯調試ffmepg.c,運行平臺是在macOS上,本文擬介紹下android平臺如何用NDK編譯鏈編譯ffmepg庫并使用。 macOS上使用qt creator編譯調試ffmpeg.c macOS上將ffmpeg.c編譯成Framework 大體思路: 其…

信息學奧賽初賽天天練-18-挑戰程序閱讀-最長公共子序列、字符串與數組越界的巧妙應用

PDF文檔公眾號回復關鍵字:20240601 1 2023 CSP-J 閱讀程序2 閱讀程序(程序輸入不超過數組成字符串定義的范圍:判斷題正確填√,錯誤填;除特殊說明外,判斷題1.5分,選擇題3分,共計40分&#xff…

從創意到成功:創業全過程詳解

目錄 創業目標市場的選擇和分析用戶畫像的描繪軟件產品的核心功能和價值主張競爭對手分析及自身競爭優勢目標用戶的具體需求調研初步的產品設計思路或框架技術棧的選擇基于哪些考量如何規劃產品的迭代路線圖預計的商業模式 1. 創業目標市場的選擇和分析 市場選擇的重要性 創…

YOLOv10漲點改進:IoU優化 | Powerful-IoU更好、更快的收斂IoU,效果秒殺CIoU、GIoU等 | 2024年最新IoU

??????本文獨家改進:Powerful-IoU更好、更快的收斂IoU,是一種結合了目標尺寸自適應懲罰因子和基于錨框質量的梯度調節函數的損失函數 ??????MS COCO和PASCAL VOC數據集實現漲點 《YOLOv10魔術師專欄》將從以下各個方向進行創新: 【原創自研模塊】【多組合點優…

spark SQL優化器catalyst學習

一、Catalyst 概述 Catalyst 是 Spark SQL 的優化器,它負責將 SQL 查詢轉換為物理執行計劃。Catalyst 優化器的目標是生成高效的執行計劃,以最小化查詢的執行時間。它使用了多種優化技術,包括基于規則的優化、基于代價的優化和動態規劃等。我…

Dijkstra求最短路篇二(全網最詳細講解兩種方法,適合小白)(python,其他語言也適用)

前言: Dijkstra算法博客講解分為兩篇講解,這兩篇博客對所有有難點的問題都會講解,小白也能很好理解。看完這兩篇博客后保證收獲滿滿。 第一篇博客講解樸素Dijkstra算法Dijkstra求最短路篇一(全網最詳細講解兩種方法,適合小白)(p…

openstack 中如何檢查VLAN 配置: 確保正確配置了兩個 VLAN,并且兩個 VLAN 之間進行了正確的路由。

在 OpenStack 中檢查 VLAN 配置并確保兩個 VLAN 之間進行了正確的路由,可以按照以下步驟進行操作: 查看網絡配置: 登錄到 OpenStack 控制節點上的命令行界面。使用 neutron net-list 命令查看當前存在的網絡列表。找到與你關注的 VLAN 相關的…

計網ppt標黃知識點整理第(2)章節——謝希仁版本、期末復習自用

物理層考慮的是怎樣才能在連接各種計算機的傳輸媒體上傳輸數據比特流,而不是指具體的傳輸媒體。4 個特性: 機械特性:指明接口所用接線器的形狀和尺寸、引線數目和排列、固定和鎖定裝置等。 電氣特性:指明在接口電纜的各條線上出現…

如何在 JS 中快速讀取文件

本文翻譯自 How to read files quickly in JavaScript,作者:Daniel Lemire, 略有刪改。 假設你需要在服務器上使用JavaScript讀取多個文件。在像Node.js這樣的運行時環境中,JavaScript有多種讀取文件的方式。哪一種是最好的呢&…