0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux系統(tǒng)中的進(jìn)程之間通信

GReq_mcu168 ? 來源:IOT物聯(lián)網(wǎng)小鎮(zhèn) ? 作者:道哥 ? 2021-04-12 10:06 ? 次閱讀

一、Linux 系統(tǒng)中的進(jìn)程之間通信(IPC)

二、基于 Socket 通信的優(yōu)點(diǎn)

三、MQTT 消息總線

四、嵌入式系統(tǒng)中如何利用 MQTT 消息總線

五、Mosquitto: 一個(gè)簡單的測試代碼

六、總結(jié)

一、Linux 系統(tǒng)中的進(jìn)程之間通信(IPC)作為一名嵌入式軟件開發(fā)人員來說,處理進(jìn)程之間的通信是很常見的事情。從通信目的的角度來看,我們可以把進(jìn)程之間的通信分成 3 種:

為了進(jìn)程的調(diào)度: 可以通過信號(hào)來實(shí)現(xiàn);

為了共享資源:可以通過互斥鎖、信號(hào)量、讀寫鎖、文件鎖等來實(shí)現(xiàn);

為了傳遞數(shù)據(jù):可以通過共享內(nèi)存、命名管道、消息隊(duì)列、Socket來實(shí)現(xiàn)。

關(guān)于上面提到的這些、操作系統(tǒng)為我們提供的通信原語,網(wǎng)絡(luò)上的各種資料、文章滿天飛,在這里就不啰嗦了。在這些方法中應(yīng)該如何選擇呢?根據(jù)我個(gè)人的經(jīng)驗(yàn),貴精不貴多,認(rèn)真挑選三四樣?xùn)|西就能完全滿足日常的工作需要。

我們今天想討論的問題主要是第 3 個(gè):傳遞數(shù)據(jù),在上面這幾種傳遞數(shù)據(jù)的方法中,我最喜歡、最常用的就是 Socket 通信。

有些小伙伴可能會(huì)說:Socket 通信就是 TCP/IP 的那一套東西,還需要自己管理連接、對(duì)數(shù)據(jù)進(jìn)行組包、分包,也是挺麻煩的。

沒錯(cuò),Socket 通信本身的確需要手動(dòng)來處理這些底層的東西,但是我們可以給 Socket 穿上一層“外衣”:利用 MQTT 消息總線,在系統(tǒng)的各進(jìn)程之間進(jìn)行數(shù)據(jù)交互,下面我們就一一道來。

二、基于 Socket 通信的優(yōu)點(diǎn)這里我就不自己發(fā)揮了,直接引用陳碩老師的那本書《Linux 多線程服務(wù)端編程》這本書中的觀點(diǎn)(第 65 頁,3.4小節(jié)):

1. 跨主機(jī),具有伸縮性

反正都是多進(jìn)程了,如果一臺(tái)機(jī)器的處理能力不夠,就能用多臺(tái)主機(jī)來處理。把進(jìn)程分散到同一臺(tái)局域網(wǎng)的多臺(tái)機(jī)器上,程序改改 Host:Port 配置就能繼續(xù)用。相反,文章開頭部分列出的那些進(jìn)程之間通信方式都不能跨機(jī)器,這就限制了可擴(kuò)展性。

2. 操作系統(tǒng)會(huì)自動(dòng)回收資源

TCP port 由一個(gè)進(jìn)程獨(dú)占,當(dāng)程序意外退出時(shí),操作系統(tǒng)會(huì)自動(dòng)回收資源,不會(huì)給系統(tǒng)留下垃圾,程序重啟之后能比較容易地恢復(fù)。

3. 可記錄、可重現(xiàn)

兩個(gè)進(jìn)程通過 TCP 通信,如果一個(gè)崩潰了,操作系統(tǒng)會(huì)關(guān)閉連接,另一個(gè)進(jìn)程幾乎立刻就能感受到,可以快速 failover。當(dāng)然應(yīng)用層的心跳是必不可少的。(補(bǔ)充:操作系統(tǒng)本身對(duì)于 TCP 連接有一個(gè)?;顣r(shí)間,默認(rèn)是 2 個(gè)小時(shí),而且是針對(duì)全局的。)

4. 跨語言

服務(wù)端和客戶端不必使用同一種編程語言。

1. 陳碩老師描述的是通用的 Socket 通信,因此客戶端和服務(wù)端一般位于不同的物理機(jī)器上。

2. 在嵌入式開發(fā)中,一般都是用同一種編程語言,因此,跨語言這個(gè)有點(diǎn)可以忽略不計(jì)了。

三、MQTT 消息總線1. MQTT 是一個(gè)通信的機(jī)制

對(duì)物聯(lián)網(wǎng)領(lǐng)域熟悉的小伙伴,對(duì)于 MQTT 消息總線一定非常熟悉,目前幾大物聯(lián)網(wǎng)云平臺(tái)(亞馬孫、阿里云、華為云)都提供了 MQTT 協(xié)議的接入方式。

目前,學(xué)習(xí) MQTT 最好的文檔是 IBM 的在線手冊(cè):https://developer.ibm.com/zh/technologies/messaging/articles/iot-mqtt-why-good-for-iot/。

這里,我直接把一些重點(diǎn)信息列出來:

MQTT協(xié)議輕量、簡單、開放和易于實(shí)現(xiàn);

MQTT 是基于發(fā)布 (Publish)/訂閱 (Subscribe)范式的消息協(xié)議;

MQTT 工作在 TCP/IP協(xié)議族上;

有三種消息發(fā)布服務(wù)質(zhì)量;

小型傳輸,開銷很?。ü潭ㄩL度的頭部是 2 字節(jié)),協(xié)議交換最小化,以降低網(wǎng)絡(luò)流量;

MQTT 消息傳輸需要一個(gè)中間件,稱為:Broker,其實(shí)也就是一個(gè) Server。通信模型如下:

09ea9876-9ab6-11eb-8b86-12bb97331649.png

MQTT Broker 需要首先啟動(dòng);

ClientA 和 ClientB 需要連接到 Broker;

ClientA 訂閱主題 topic_1,ClientB 訂閱主題 topic_2;

ClientA 往 topic_2 這個(gè)主題發(fā)送消息,就會(huì)被 ClientB 接收到;

ClientB 往 topic_1 這個(gè)主題發(fā)送消息,就會(huì)被 ClientA 接收到;

基于 topic 主題的通信方式有一個(gè)很大的好處就是解耦,一個(gè)客戶端可以訂閱多個(gè) topic,任何接入到總線的其他客戶端都可以往這些 topic 中發(fā)送信息(一個(gè)客戶端發(fā)送消息給自己也是可以的)。

2. MQTT 的實(shí)現(xiàn)

MQTT 只是一個(gè)協(xié)議而已,在 IBM 的在線文檔中可以看到,有很多語言都實(shí)現(xiàn)了 MQTT 協(xié)議,包括:C/C++、Java、Python、C#、JavaScript、Go、Objective-C等等。那么對(duì)于嵌入式開發(fā)來說,使用比較多的是這幾個(gè)實(shí)現(xiàn):

Mosquitto;

Paho MQTT;

wolfMQTT;

MQTTRoute。

在下面,我們會(huì)重點(diǎn)介紹 Mosquitto 這個(gè)開源實(shí)現(xiàn)的編譯和使用方式,這也是我在項(xiàng)目中使用最多的。

3. 在 MQTT 之上,設(shè)計(jì)自己的通信協(xié)議

從上面的描述中可以看出,MQTT 消息總線就是一個(gè)通信機(jī)制,為通信主體提供了一個(gè)傳遞數(shù)據(jù)的通道而已。

在這個(gè)通道之上,我們可以根據(jù)實(shí)際項(xiàng)目的需要,發(fā)送任何格式、編碼的數(shù)據(jù)。在項(xiàng)目中,我們最常用的就是 json 格式的純文本,這也是各家物聯(lián)網(wǎng)云平臺(tái)所推薦的方式。如果在文本數(shù)據(jù)中需要包含二進(jìn)制數(shù)據(jù),那就轉(zhuǎn)成 BASE64 編碼之后再發(fā)送。

四、嵌入式系統(tǒng)中如何利用 MQTT 消息總線從上面的描述中可以看到,只要在服務(wù)端運(yùn)行著一個(gè) MQTT Broker 服務(wù),每個(gè)連接到總線的客戶端都可以靈活地相互收發(fā)數(shù)據(jù)。

我們可以把這個(gè)機(jī)制應(yīng)用在嵌入式應(yīng)用程序的設(shè)計(jì)中:MQTT Broker 作為一個(gè)獨(dú)立的服務(wù)運(yùn)行在嵌入式系統(tǒng)本地,其他需要交互的進(jìn)程,只要連接到本地的這個(gè) Broker,就可以相互發(fā)送數(shù)據(jù)了。運(yùn)行模型如下:

0a016484-9ab6-11eb-8b86-12bb97331649.png

每一個(gè)進(jìn)程只需要訂閱一個(gè)固定的 topic(比如:自己的 client Id),那么其他進(jìn)程如果想要發(fā)送數(shù)據(jù)給它,就直接發(fā)送到這個(gè) topic 即可。

1. 一個(gè)嵌入式系統(tǒng)的通信框架

我之前開發(fā)過一個(gè)環(huán)境監(jiān)測系統(tǒng),采集大氣中的 PM2.5、PM10等污染物參數(shù),在 Contex A8 平臺(tái)下開發(fā),需要實(shí)現(xiàn)數(shù)據(jù)記錄(數(shù)據(jù)庫)、UI 監(jiān)控界面等功能。

污染物的數(shù)據(jù)采樣硬件模塊是第三方公司提供的,我們只需要通過該模塊提供的串口協(xié)議去控制采樣設(shè)備、接收采樣數(shù)據(jù)即可。最終設(shè)計(jì)的通信模型如下:

0a52cb4e-9ab6-11eb-8b86-12bb97331649.png

UI 進(jìn)程通過消息總線,發(fā)送控制指令給采樣控制進(jìn)程,采樣控制進(jìn)程接收到后通過串口發(fā)送控制指令給采樣模塊;

采樣控制進(jìn)程從串口接收采樣模塊發(fā)來的PM2.5等數(shù)據(jù)后,把所有的數(shù)據(jù)發(fā)送到消息總線上指定的 topic 中;

UI 進(jìn)程程訂閱該 topic,接收到數(shù)據(jù)后,顯示在屏幕上;

數(shù)據(jù)庫進(jìn)程也訂閱該 topic,接收到數(shù)據(jù)后,把數(shù)據(jù)存儲(chǔ)在 SQLite 數(shù)據(jù)庫中;

在這個(gè)產(chǎn)品中,核心進(jìn)程是采樣控制進(jìn)程,負(fù)責(zé)與采樣模塊的交互。通過把 UI 處理、數(shù)據(jù)庫處理設(shè)計(jì)成獨(dú)立的進(jìn)程,降低了系統(tǒng)的復(fù)雜性,即使這 2 個(gè)進(jìn)程崩潰了,也不會(huì)影響到核心的采樣控制進(jìn)程。

比如:如果 UI 進(jìn)程出現(xiàn)錯(cuò)誤崩潰了,會(huì)立刻重啟,啟動(dòng)之后通過緩存信息知道此刻正在執(zhí)行采樣工作,于是 UI 進(jìn)程立刻連接到消息總線、進(jìn)入采樣數(shù)據(jù)顯示界面,繼續(xù)接收、顯示采樣控制進(jìn)程發(fā)出的PM2.5等數(shù)據(jù)。

這個(gè)通信模型還有另外一個(gè)有點(diǎn):可擴(kuò)展性。

在項(xiàng)目開發(fā)的后期,甲方說需要集成一個(gè)第三方的氣體模塊,用來采集大氣中NO、SO2等參數(shù),通信方式是 RS485

此時(shí)擴(kuò)展這個(gè)功能模塊就異常簡單了,直接寫一個(gè)獨(dú)立的氣體參數(shù)進(jìn)程,接入到消息總線上。這個(gè)進(jìn)程通過 RS485,從第三方氣體模塊接收到NO、SO2等氣體參數(shù)時(shí),直接往消息總線上的某個(gè) topic 一丟,UI進(jìn)程、數(shù)據(jù)庫進(jìn)程訂閱這個(gè) topic,就可以立刻接收到氣體相關(guān)的數(shù)據(jù)了。

此外,這個(gè)設(shè)計(jì)模型還有其他一些優(yōu)點(diǎn):

并行開發(fā):每個(gè)進(jìn)程可以由不同的人員并行開發(fā),只要相互之間定義好通信協(xié)議即可;

調(diào)試方便:由于發(fā)送的數(shù)據(jù)都是 manual readable,在開發(fā)階段,可以在 PC 機(jī)上專門寫一個(gè)監(jiān)控程序,接入到嵌入式系統(tǒng)中的 MQTT Broker 之后,這樣就可以接收到所有進(jìn)程發(fā)出的消息;

通信安全:在產(chǎn)品 release 之后,為了防止其他人偷聽數(shù)據(jù)(比如 2 中的調(diào)試進(jìn)程),可以為 MQTT Broker 指定一個(gè)配置文件,只能允許本地進(jìn)程(127.0.0.1)連接到消息總線上。

0a6fa386-9ab6-11eb-8b86-12bb97331649.png

2. 稍微復(fù)雜一點(diǎn)的通信模型

在剛才描述的嵌入式系框架設(shè)計(jì)中,每一個(gè)進(jìn)程都是運(yùn)行在本地的,所有的消息也都是在系統(tǒng)內(nèi)進(jìn)行收發(fā)。那么,如果需要把數(shù)據(jù)傳輸?shù)皆贫恕⒒蛘咝枰獜脑贫私邮找恍┛刂浦噶?,又該如何設(shè)計(jì)呢?

加入一個(gè) MQTT Bridge 橋接模塊即可!也就是再增加一個(gè)進(jìn)程,這個(gè)進(jìn)程同時(shí)連接到云端的 MQTT Broker 和本地的 MQTT Broker,通信模型如下:

0a9d3ca6-9ab6-11eb-8b86-12bb97331649.png

MQTT Bridge 接收到云端發(fā)來的指令時(shí),轉(zhuǎn)發(fā)到本地的消息總線上;

MQTT Bridge 接收到本地的消息時(shí),轉(zhuǎn)發(fā)到云端的消息總線上。

五、Mosquitto: 一個(gè)簡單的測試代碼上面的內(nèi)容主要討論的是設(shè)計(jì)的思想,具體到代碼層面,我一般使用的是 Mosquitto 這個(gè)開源的實(shí)現(xiàn)。

在 Linux 系統(tǒng)中安裝、測試都非常方便,下面就簡單說明一下。

1. 直接通過 apt 來安裝、測試

可以參考這個(gè)文檔(https://www.vultr.com/docs/how-to-install-mosquitto-mqtt-broker-server-on-ubuntu-16-04)來安裝測試。

(1) 安裝

sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppasudo apt-get updatesudo apt-get install mosquittosudo apt-get install mosquitto-clients

(2) 測試

mosquitto broker 在安裝之后會(huì)自動(dòng)啟動(dòng),可以用 netstat 查看 1883 端口來確認(rèn)一下。

接收端:連接到 broker 之后,訂閱 “test” 這個(gè) topic。

mosquitto_sub -t “test”

發(fā)送端:連接到 broker 之后,往 “test” 這個(gè) topic 發(fā)送字符串 “hello”。

mosquitto_pub -m “hello” -t “test”

當(dāng)發(fā)送端執(zhí)行 mosquitto_pub 時(shí),在接收端的終端窗口中,就可以接收到 “hello” 這個(gè)字符串。

2. 通過源碼來手動(dòng)編譯、測試

通過 apt 來安裝主要是用來簡單的學(xué)習(xí)和測試,如果要在項(xiàng)目開發(fā)中使用 Mosquitto,肯定需要手動(dòng)編譯,得到頭文件和庫文件,然后復(fù)制到應(yīng)用程序中使用。

(1) 手動(dòng)編譯、安裝 Mosquitto

我的開發(fā)環(huán)境是:

編譯器:gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609

Mosquitto 版本:mosquitto-1.4.9

mosquitto-1.4.9 可以到官方網(wǎng)站下載,也可以從文末的網(wǎng)盤中下載,你也可以嘗試更高的版本。

編譯、安裝指令:

makemake install prefix=$PWD/install

成功安裝之后,可以在當(dāng)前目錄的 install 文件夾下看到輸出文件:

0ab668e8-9ab6-11eb-8b86-12bb97331649.png

bin:mqtt 客戶端程序;

include:應(yīng)用程序需要 include 的頭文件;

lib:應(yīng)用程序需要鏈接的庫文件;

sbin:mqtt broker 服務(wù)程序。

在編譯過程中,如果遇到一些諸如:ares.h、uuid.h 等依賴文件找不到的錯(cuò)誤,只需要通過 apt 指令安裝響應(yīng)的開發(fā)包即可。

(2) 最簡單的 mosquitto 客戶端代碼

在 mosquitto 源碼中,提供了豐富的 Sample 示例。如果你不樂意去探索,可以直接下載文末的這個(gè)網(wǎng)盤中的 Demo 示例程序,這個(gè)程序連接到消息總線上之后,訂閱 “topic_01” 這個(gè)主題。當(dāng)然,你也可以修改代碼去發(fā)送消息(調(diào)用:mosquitto_publish 這個(gè)函數(shù))。

進(jìn)入 c_mqtt 示例代碼目錄之后,可以看到已經(jīng)包含了 bin、include 和 lib 目錄,它們就是從上面(1)中安裝目錄 install 中復(fù)制過來的。

執(zhí)行 make 指令之后,即可編譯成功,得到可執(zhí)行文件:mqtt_client。

測試過程如下:

Step1: 啟動(dòng) MQTT Broker

在第 1 個(gè)終端窗口中,啟動(dòng) sbin/mosquitto 這個(gè) Broker 程序。如果你在上面測試中已經(jīng)啟動(dòng)了一個(gè) broker,需要先 kill 掉之前的那個(gè) broker,因?yàn)樗鼈兡J(rèn)都使用 1883 這個(gè)端口,無法共存。

Step2: 啟動(dòng)接收端程序 mqtt_client

在第 2 個(gè)終端窗口中,啟動(dòng) mqtt_client 也就是我們的示例代碼編譯得到的可執(zhí)行程序,它訂閱的 topic 是 “topic_01”。

。/mqtt_client 127.0.0.1 1883

參數(shù) 1: Broker 服務(wù)的 IP 地址,因?yàn)槎际窃诒镜叵到y(tǒng)中,所以是 127.0.0.1;

參數(shù) 2: 端口號(hào),一般默認(rèn)是1883。

Step3: 啟動(dòng)發(fā)送端程序 bin/mosquitto_pub

在第 3 個(gè)終端窗口中,啟動(dòng) bin/mosquitto_pub,命令如下:

。/mosquitto_pub -h 127.0.0.1 -p 1883 -m “hello123” -t “topic_01”

參數(shù) -h:Broker 服務(wù)的 IP 地址,因?yàn)槎际窃诒镜叵到y(tǒng)中,所以是 127.0.0.1;參數(shù) -p:端口號(hào) 1883;

參數(shù) -m:發(fā)送的消息內(nèi)容;

參數(shù) -t:發(fā)送的主題 topic。

此時(shí),可以在第 2 個(gè)終端窗口(mqtt_client)中打印出接收到的消息。

六、總結(jié)這篇文章主要介紹了嵌入式系統(tǒng)中的一個(gè)設(shè)計(jì)模式:通過消息總線來實(shí)現(xiàn)進(jìn)程之間的通信,并介紹了 Mosquitto 這個(gè)開源實(shí)現(xiàn)。

在實(shí)際的項(xiàng)目中,還需要更加嚴(yán)格的權(quán)限控制,比如:在接入消息總線時(shí)提供用戶名、密碼、設(shè)備證書,客戶端的名稱必須滿足指定的格式,訂閱的 topic 必須符合一定的格式等等。

在下一篇文章中,我們繼續(xù)討論這個(gè)話題,給出一個(gè)更具體、更實(shí)用的 Demo 例程。

原文標(biāo)題:進(jìn)程之間通信方式:最喜歡消息總線

文章出處:【微信公眾號(hào):玩轉(zhuǎn)單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5083

    文章

    19131

    瀏覽量

    305539
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    6034

    瀏覽量

    136037
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11310

    瀏覽量

    209616

原文標(biāo)題:進(jìn)程之間通信方式:最喜歡消息總線

文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    深入解析Linux程序與進(jìn)程

    關(guān)于某個(gè)數(shù)據(jù)集合的一次運(yùn)行活動(dòng)。作為系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位,是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ)。 程序與進(jìn)程的關(guān)系 進(jìn)程的狀態(tài) 基礎(chǔ)進(jìn)程狀態(tài) 創(chuàng)
    的頭像 發(fā)表于 12-18 11:01 ?96次閱讀
    深入解析<b class='flag-5'>Linux</b>程序與<b class='flag-5'>進(jìn)程</b>

    深入Linux進(jìn)程管理:提升效率與穩(wěn)定性的關(guān)鍵方法

    基本概述 2.進(jìn)程狀態(tài) 3.進(jìn)程優(yōu)先級(jí) 4.進(jìn)程命令 5. 控制作業(yè) 6.進(jìn)程通信 7.使用信號(hào)控制進(jìn)
    的頭像 發(fā)表于 11-22 11:05 ?248次閱讀
    深入<b class='flag-5'>Linux</b><b class='flag-5'>進(jìn)程</b>管理:提升效率與穩(wěn)定性的關(guān)鍵方法

    一文搞懂Linux進(jìn)程的睡眠和喚醒

    。通過PPID,可以追蹤進(jìn)程的來源,并了解進(jìn)程之間的關(guān)系。 在PCB記錄的進(jìn)程狀態(tài),不過是一些整數(shù),這個(gè)整數(shù)是多少就代表進(jìn)程此時(shí)處于什么
    發(fā)表于 11-04 15:15

    Linux網(wǎng)絡(luò)基礎(chǔ)知識(shí)總結(jié)

    同 CPU、內(nèi)存以及 I/O 一樣,網(wǎng)絡(luò)也是 Linux 系統(tǒng)最核心的功能。 網(wǎng)絡(luò)是一種把不同計(jì)算機(jī)或網(wǎng)絡(luò)設(shè)備連接到一起的技術(shù),它本質(zhì)上是一種進(jìn)程通信方式,特別是跨
    的頭像 發(fā)表于 10-28 10:42 ?261次閱讀
    <b class='flag-5'>Linux</b>網(wǎng)絡(luò)基礎(chǔ)知識(shí)總結(jié)

    Linux用戶身份與進(jìn)程權(quán)限詳解

    在學(xué)習(xí) Linux 系統(tǒng)權(quán)限相關(guān)的主題時(shí),我們首先關(guān)注的基本都是文件的 ugo 權(quán)限。ugo 權(quán)限信息是文件的屬性,它指明了用戶與文件之間的關(guān)系。但是真正操作文件的卻是進(jìn)程,也就是說用
    的頭像 發(fā)表于 10-23 11:41 ?359次閱讀
    <b class='flag-5'>Linux</b>用戶身份與<b class='flag-5'>進(jìn)程</b>權(quán)限詳解

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-Linux C接口編程入門之文件I/O

    。目錄:目錄也被視為文件,用于組織和存儲(chǔ)其他文件和目錄。通過目錄文件,可以進(jìn)行文件的查找、創(chuàng)建、刪除和移動(dòng)等操作。管道(Pipe)和套接字(Socket):Linux提供了管道和套接字機(jī)制,用于不同進(jìn)程之間
    發(fā)表于 10-10 09:11

    飛凌嵌入式ElfBoard ELF 1板卡-Linux C接口編程入門之文件I/O

    。目錄:目錄也被視為文件,用于組織和存儲(chǔ)其他文件和目錄。通過目錄文件,可以進(jìn)行文件的查找、創(chuàng)建、刪除和移動(dòng)等操作。管道(Pipe)和套接字(Socket):Linux提供了管道和套接字機(jī)制,用于不同進(jìn)程之間
    發(fā)表于 10-09 15:38

    linux系統(tǒng)的設(shè)備驅(qū)動(dòng)一般分幾類

    Linux系統(tǒng)的設(shè)備驅(qū)動(dòng)是操作系統(tǒng)與硬件設(shè)備之間的橋梁,負(fù)責(zé)實(shí)現(xiàn)操作系統(tǒng)與硬件設(shè)備之間
    的頭像 發(fā)表于 08-30 15:13 ?445次閱讀

    深入探討Linux進(jìn)程調(diào)度器

    Linux操作系統(tǒng)作為一個(gè)開源且廣泛應(yīng)用的操作系統(tǒng),其內(nèi)核設(shè)計(jì)包含了許多核心功能,而進(jìn)程調(diào)度器(Scheduler)就是其中一個(gè)至關(guān)重要的模塊。進(jìn)程
    的頭像 發(fā)表于 08-13 13:36 ?955次閱讀
    深入探討<b class='flag-5'>Linux</b>的<b class='flag-5'>進(jìn)程</b>調(diào)度器

    進(jìn)程通信的消息隊(duì)列介紹

    消息隊(duì)列是一種非常常見的進(jìn)程通信方式。
    的頭像 發(fā)表于 04-08 17:27 ?313次閱讀

    如何在Semaphore(信號(hào)量)和Mutex(互斥)之間做選擇?

    在單CPU系統(tǒng),處理器是一個(gè)共享資源。在多個(gè)進(jìn)程之間共享處理器時(shí),處理器的使用由調(diào)度程序控制,不存在競爭問題。
    的頭像 發(fā)表于 03-05 11:35 ?985次閱讀
    如何在Semaphore(信號(hào)量)和Mutex(互斥)<b class='flag-5'>之間</b>做選擇?

    linux管道概述

    一、進(jìn)程通信(IPC)介紹 進(jìn)程通信(IPC,InterProcess Communication)是指在不同進(jìn)程之間傳播或交換信息。
    的頭像 發(fā)表于 02-18 14:51 ?508次閱讀
    <b class='flag-5'>linux</b>管道概述

    HarmonyOS跨進(jìn)程通信—IPC與RPC通信開發(fā)

    一、IPC與RPC通信概述 基本概念 IPC(Inter-Process Communication)與RPC(Remote Procedure Call)用于實(shí)現(xiàn)跨進(jìn)程通信,不同的是前者
    的頭像 發(fā)表于 02-02 17:47 ?1293次閱讀
    HarmonyOS跨<b class='flag-5'>進(jìn)程</b><b class='flag-5'>通信</b>—IPC與RPC<b class='flag-5'>通信</b>開發(fā)

    如何在Linux系統(tǒng)檢查CPU使用率

    首先在Linux系統(tǒng)檢查CPU使用率??梢酝ㄟ^在命令行輸入top或htop命令來查看當(dāng)前系統(tǒng)
    發(fā)表于 01-06 10:42 ?1329次閱讀
    如何在<b class='flag-5'>Linux</b><b class='flag-5'>系統(tǒng)</b><b class='flag-5'>中</b>檢查CPU使用率

    mcu線程和進(jìn)程的區(qū)別是什么

    MCU線程和進(jìn)程是嵌入式系統(tǒng)中常見的并行執(zhí)行的概念,它們之間有許多區(qū)別,包括線程與進(jìn)程的定義、資源管理、通信機(jī)制、執(zhí)行方式等等。下面將詳細(xì)介
    的頭像 發(fā)表于 01-04 10:45 ?763次閱讀