linux嵌入式(進程與線程1)

Linux進程

進程介紹

1. 進程的基本概念

  • 定義:進程是程序的一次執行過程,擁有獨立的地址空間、資源(如內存、文件描述符)和唯一的進程 ID(PID)。

  • 組成

    • 代碼段:程序的指令。

    • 數據段:全局變量和靜態變量。

    • 堆棧段:局部變量和函數調用信息。

    • 進程控制塊(PCB):內核數據結構(如?task_struct),存儲進程狀態、PID、優先級等信息。


2. 進程的生命周期

Linux 進程通常有以下狀態(可通過?ps?命令查看):

  • R (Running):正在運行或可運行(就緒)。

  • S (Sleeping):可中斷的睡眠(等待事件,如 I/O)。

  • D (Uninterruptible Sleep):不可中斷的睡眠(通常等待硬件操作)。

  • T (Stopped):被信號(如?SIGSTOP)暫停。

  • Z (Zombie):已終止但父進程未回收資源。

  • X (Dead):完全終止(不可見)。


3. 進程相關命令

查看進程
  • ps:查看當前進程快照。

    bash

    復制

    下載

    ps aux       # 查看所有進程詳細信息
    ps -ef       # 查看完整格式的進程列表
  • top/htop:動態查看進程資源占用(CPU、內存等)。

  • pstree:以樹形結構顯示進程關系。

管理進程
  • kill:發送信號終止或控制進程。

    bash

    復制

    下載

    kill -9 PID   # 強制終止進程(SIGKILL)
    kill -15 PID  # 優雅終止(SIGTERM)
  • nice/renice:調整進程優先級(Nice 值范圍:-20 到 19,值越低優先級越高)。

  • bg/fg:控制進程后臺/前臺運行。

查找進程
  • pgrep:根據名稱查找 PID。

    bash

    復制

    下載

    pgrep nginx
  • pidof:獲取正在運行的程序的 PID。

    bash

    復制

    下載

    pidof sshd

4. 進程間通信(IPC)

Linux 進程可以通過以下方式通信:

  • 信號(Signals):如?SIGINT(Ctrl+C)、SIGKILL

  • 管道(Pipe):匿名管道(|)或命名管道(mkfifo)。

  • 共享內存:高效的數據共享。

  • 消息隊列:存儲在內核中的消息鏈表。

  • 套接字(Socket):跨網絡通信。


5. 前臺與后臺進程

  • 前臺進程:占用終端,接收輸入(如直接運行?vim)。

  • 后臺進程:不占用終端,以?&?啟動:

    bash

    復制

    下載

    sleep 60 &
  • 切換狀態

    • Ctrl + Z:暫停進程并轉入后臺。

    • jobs:查看后臺作業。

    • fg %n:將后臺作業?n?切換到前臺。


6. 守護進程(Daemon)

  • 長期運行的后臺服務進程(如?sshdnginx)。

  • 特點:

    • 脫離終端(由?init?或?systemd?管理)。

    • 通常以 root 權限運行。

  • 創建方式:通過?fork()?兩次并脫離控制終端。


7. 僵尸進程與孤兒進程

  • 僵尸進程:子進程終止后,父進程未調用?wait()?回收其資源。解決:

    bash

    復制

    下載

    kill -HUP PPID   # 重啟父進程
  • 孤兒進程:父進程先終止,子進程由?init(PID 1)接管。


8. 系統調用與進程管理

Linux 提供以下關鍵系統調用:

  • fork():創建子進程。

  • exec():替換當前進程映像。

  • wait():父進程等待子進程終止。

main函數定義:

多進程代碼示例

system創建子進程

fork ——system底層

execve進程跳轉

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

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

相關文章

智馭未來:NVIDIA自動駕駛安全白皮書與實驗室創新實踐深度解析

一、引言:自動駕駛安全的范式革新 在當今數字化浪潮的推動下,全球自動駕駛技術正大步邁入商業化的深水區。隨著越來越多的自動駕駛車輛走上道路,其安全性已成為整個行業乃至社會關注的核心命題。在這個關鍵的轉折點上,NVIDIA 憑借…

多模態大模型 Qwen2.5-VL 的學習之旅

Qwen-VL 是阿里云研發的大規模視覺語言模型(Large Vision Language Model, LVLM)。Qwen-VL 可以以圖像、文本、檢測框作為輸入,并以文本和檢測框作為輸出。Qwen-VL 系列模型性能強大,具備多語言對話、多圖交錯對話等能力&#xff…

Redis 與 Memcache 全面對比:功能、性能與應用場景解析

Redis 和 Memcache 都是常用的內存數據庫,以下是它們在多個方面的能力比較: 一、數據類型 Redis:支持豐富的數據類型,如字符串(String)、哈希(Hash)、列表(List&#x…

Oracle--PL/SQL編程

前言:本博客僅作記錄學習使用,部分圖片出自網絡,如有侵犯您的權益,請聯系刪除 PL/SQL(Procedural Language/SQL)是Oracle數據庫中的一種過程化編程語言,構建于SQL之上,允許編寫包含S…

新增優惠券

文章目錄 概要整體架構流程技術細節小結 概要 接口分析 一個基本的新增接口,按照Restful風格設計即可,關鍵是請求參數。之前表分析時已經詳細介紹過這個頁面及其中的字段,這里不再贅述。 需要特別注意的是,如果優惠券限定了使…

力扣面試經典150題(第二十三題)- KMP算法

問題 給你兩個字符串 haystack 和 needle ,請你在 haystack 字符串中找出 needle 字符串的第一個匹配項的下標(下標從 0 開始)。如果 needle 不是 haystack 的一部分,則返回 -1 。 示例 1: 輸入:haysta…

PostgreSQL 的 MVCC 機制了解

PostgreSQL 的 MVCC 機制了解 PostgreSQL 使用多版本并發控制(MVCC)作為其核心并發控制機制,這是它與許多其他數據庫系統的關鍵區別之一。MVCC 允許讀操作不阻塞寫操作,寫操作也不阻塞讀操作,從而提供高度并發性。 一 MVCC 基本原理 1.1 M…

互聯網大廠Java面試:RocketMQ、RabbitMQ與Kafka的深度解析

互聯網大廠Java面試:RocketMQ、RabbitMQ與Kafka的深度解析 面試場景 面試官:馬架構,您好!歡迎參加我們的面試。今天我們將圍繞消息中間件展開討論,尤其是RocketMQ、RabbitMQ和Kafka。您有十年的Java研發和架構設計經…

《巧用DeepSeek快速搞定數據分析》書籍分享

文章目錄 前言內容簡介作者簡介購書鏈接書籍目錄 前言 隨著大數據時代的到來,數據分析和人工智能技術正迅速改變著各行各業的運作方式。DeepSeek作為先進的人工智能模型,不僅在自然語言處理領域具有廣泛應用,還在數據分析、圖像識別、推薦系…

4.Three.js 中 Camera 攝像機詳解

一、什么是 Camera? 在 Three.js 中,Camera(攝像機)決定了我們如何觀察三維場景。 你可以把它理解為我們“眼睛”的位置和方向,場景中的物體再復雜,如果沒有攝像機,就沒有“觀察角度”&#x…

gem5-gpu教程03 當前的gem5-gpu軟件架構(因為涉及太多專業名詞所以用英語表達)

Current gem5-gpu Software Architecture 這是當前gem5-gpu軟件架構的示意圖。 Ruby是在gem5-gpu上下文中用于處理CPU和GPU之間內存訪問的高度可配置的內存系統 CudaCore (src/gpu/gpgpu-sim/cuda_core.*, src/gpu/gpgpu-sim/CudaCore.py) Wrapper for GPGPU-Sim shader_cor…

負載均衡的實現方式有哪些?

負載均衡實現方式常見的有: 軟件負載均衡、硬件負載均衡、DNS負載均衡 擴展 二層負載均衡:在數據鏈路層,基于MAC地址進行流量分發,較少見于實際應用中 三層負載均衡:在網絡層,基于IP地址來分配流量,例如某…

MyBatis 和 MyBatis-Plus 在 Spring Boot 中的配置、功能對比及 SQL 日志輸出的詳細說明,重點對比日志輸出的配置差異

以下是 MyBatis 和 MyBatis-Plus 在 Spring Boot 中的配置、功能對比及 SQL 日志輸出的詳細說明,重點對比日志輸出的配置差異: 1. MyBatis 和 MyBatis-Plus 核心對比 特性MyBatisMyBatis-Plus定位基礎持久層框架MyBatis 的增強版,提供代碼生…

《數據結構世界的樂高積木:順序表的奇幻旅程》

目錄 1. 線性表 2. 順序表 2.1 概念與結構 2.2 分類 2.2.1 靜態順序表 2.2.2 動態順序表 2.3 動態順序表的實現 1. 線性表 線性表(linear list)是n個具有相同特性的數據元素的有限序列。線性表是?種在實際中?泛使?的數據結構,常?的…

RHCE 練習二:通過 ssh 實現兩臺主機免密登錄以及 nginx 服務通過多 IP 區分多網站

一、題目要求 1.配置ssh實現A,B主機互相免密登錄 2.配置nginx服務,通過多ip區分多網站 二、實驗 實驗開始前需準備兩臺 linux 主機便于充當服務端以及客戶端,兩臺主機 IP 如下圖: 實驗1:配置 ssh 實現 A&#xff0…

第十五屆藍橋杯 2024 C/C++組 好數

題目: 題目描述: 題目鏈接: 好數 思路: 第一種思路詳解: 因為每次檢查數都是從個位開始,所以對于每一個數都是先檢查奇數位再檢查偶數位,即存在先檢查奇數位再檢查偶數位的循環。注意一次完…

展銳Android13狀態欄默認顯示電池電量百分比

展銳Android13電池狀態默認不顯示電池電量百分比&#xff0c;打開 /frameworks/base/packages/SettingsProvider/res/values/defaults.xml 在xml的文件最后&#xff0c;增加一項配置def_show_battery_percent&#xff1a; <?xml version"1.0" encoding"u…

OpenCV 高斯模糊 cv2.GaussianBlur

OpenCV 高斯模糊 cv2.GaussianBlur flyfish cv2.GaussianBlur 是 OpenCV 庫中用于對圖像進行高斯模糊處理的函數。 高斯模糊的含義 高斯模糊是一種常見的圖像濾波技術&#xff0c;它可以對圖像進行平滑處理&#xff0c;減少圖像中的噪聲和細節&#xff0c;使得圖像看起來更…

[密碼學基礎]密碼學發展簡史:從古典藝術到量子安全的演進

密碼學發展簡史&#xff1a;從古典藝術到量子安全的演進 密碼學作為信息安全的基石&#xff0c;其發展貫穿人類文明史&#xff0c;從最初的文字游戲到量子時代的數學博弈&#xff0c;每一次變革都深刻影響著政治、軍事、科技乃至日常生活。本文將以技術演進為主線&#xff0c;…

PostgreSQL認證培訓推薦機構

首先來看一張2025年4月份db-engines上的數據庫排行情況&#xff0c;前三名是雷打不動的Oracle、MySQL、Microsoft SQL Server&#xff0c;排名第四的就是我們今天的主角 - PostgreSQL數據庫&#xff0c;從這張圖上可以看出&#xff0c;PostgreSQL數據庫的上升超非常明顯&#x…