可以說,共享內(nèi)存是一種最為高效的進程間通信方式。因為進程可以直接讀寫內(nèi)存,不需要任何數(shù)據(jù)的復(fù)制。為了在多個進程間交換信息,內(nèi)核專門留出了一塊內(nèi)存區(qū)。這段內(nèi)存區(qū)可以由需要訪問的進程將其映射到自己的私有地址空間。因此,進程就可以直接讀寫這一內(nèi)存區(qū)而不需要進行數(shù)據(jù)的復(fù)制,從而大大提高了效率。
顧名思義,消息隊列就是一些消息的列表。用戶可以從消息隊列中添加消息和讀取消息等。從這點上看,消息隊列具有一定的FIFO特性,但是它可以實現(xiàn)消息的隨機查詢,比FIFO具有更大的優(yōu)勢。同時,這些消息又是存在于內(nèi)核中的,由“隊列ID”來標(biāo)識。
通過編寫有名管道多路通信實驗,讀者可進一步掌握管道的創(chuàng)建、讀寫等操作,同時,也復(fù)習(xí)使用select()函數(shù)實現(xiàn)管道的通信。
本章詳細講解了Linux中進程間通信的幾種機制,包括管道通信、信號通信、消息隊列、信號量以及共享內(nèi)存機制等,并且講解了進程間通信的演進。
前面已經(jīng)提到,進程是系統(tǒng)中程序執(zhí)行和資源分配的基本單位。每個進程都擁有自己的數(shù)據(jù)段、代碼段和堆棧段,這就造成了進程在進行切換等操作時都需要有比較復(fù)雜的上下文切換等動作。為了進一步減少處理機的空轉(zhuǎn)時間,支持多處理器以及減少上下文切換開銷,進程在演化中出現(xiàn)了另一個概念——線程。
“生產(chǎn)者消費者”問題是一個著名的同時性編程問題的集合。通過學(xué)習(xí)經(jīng)典的“生產(chǎn)者消費者”問題的實驗,讀者可以進一步熟悉Linux中的多線程編程,并且掌握用信號量處理線程間的同步和互斥問題。
本章首先介紹了線程的基本概念、線程的分類和特性以及線程的發(fā)展歷程。
Qt/Embedded以原始Qt為基礎(chǔ),并做了許多出色的調(diào)整以適用于嵌入式環(huán)境。Qt/Embedded通過Qt API與Linux I/O設(shè)施直接交互,成為嵌入式Linux端口。同Qt/X11相比,Qt/Embedded很省內(nèi)存,因為它不需要一個X服務(wù)器或是Xlib庫,它在底層拋棄了X lib,采用framebuffer)作為底層圖形接口
目前的桌面機操作系統(tǒng)大多有著美觀、操作方便、功能齊全的GUI(圖形用戶界面),例如KDE或者GNOME。GUI(圖形用戶界面)是指計算機與其使用者之間的對話接口,可以說,GUI是當(dāng)今計算機技術(shù)的重大成就。它的存在為使用者提供了友好便利的界面,并大大地方便了非專業(yè)用戶的使用,使得人們從繁瑣的命令中解脫出來,可以通過窗口、菜單方便地進行操作。
通過編寫一個跳動的“Hello,World”字符串,進一步熟悉嵌入式Qt的開發(fā)過程。
這里要講的線程相關(guān)操作都是用戶空間中的線程的操作。在Linux中,一般pthread線程庫是一套通用的線程庫,是由POSIX提出的,因此具有很好的可移植性。
本章主要講解了嵌入式Linux的圖形編程。首先介紹了幾種常見的嵌入式圖形界面編程機制,并給出了它們之間的關(guān)系。
微軟已經(jīng)成為開源世界的大力支持者,除了購買 GitHub 之外,該公司還繼續(xù)讓 Linux 在 Windows 中運行,并在微軟商店為 Windows 10 用戶提供更多選擇。正如您已經(jīng)知道的那樣,有幾個 Linux 發(fā)行版可以在 Microsoft Store 中下載,其中包括桌面用戶數(shù)量最多的 Canonical Ubuntu。
如果你是位二、三十歲的軟件開發(fā)人員,那么你已經(jīng)成長在一個由 Linux 主導(dǎo)的世界。數(shù)十年來,它一直是數(shù)據(jù)中心的重要參與者,盡管很難找到明確的操作系統(tǒng)市場份額報告,但 Linux 的數(shù)據(jù)中心操作系統(tǒng)份額可能高達 70%,而 Windows 及其變體幾乎涵蓋了所有剩余的百分比。使用任何主流公共云服務(wù)的開發(fā)人員都可以預(yù)期目標(biāo)系統(tǒng)會運行 Linux。近些年來,隨著 Android 和基于 Linux 的嵌入式系統(tǒng)在智能手機、電視、汽車和其他設(shè)備中的應(yīng)用,Linux 已經(jīng)隨處可見。
通常,在做滲透的時候會“運氣好”,碰到某些應(yīng)用上存在遠程命令執(zhí)行漏洞,近來由于java反序列化和二進制類漏洞的層出不窮,也加持著這種漏洞越發(fā)增多。
Linux下的C語言程序設(shè)計與在其他環(huán)境中的C程序設(shè)計一樣,主要涉及到編輯器、編譯鏈接器、調(diào)試器及項目管理工具。(1)編輯器 Linux下的編輯器就如Windows下的word、記事本等一樣,完成對所錄入文字的編輯功能。Lin
華清遠見為您帶來經(jīng)典教程:嵌入式Linux應(yīng)用程序開發(fā)
本文對四種實時操作系統(tǒng)(RTOS)特性進行分析和比較。它們是:Lynx實時系統(tǒng)公司的LynxOS、QNX軟件系統(tǒng)有限公司的QNX以及兩種具有代表性的實時Linux;新墨西哥工學(xué)院的RT-Linux和堪薩斯大學(xué)的KURT-Linux.
目前,物聯(lián)網(wǎng)(Internet of Things,IOT)正呈現(xiàn)飛速發(fā)展的態(tài)勢。本文介紹一種無線多頻段WSN網(wǎng)關(guān),可通過以太網(wǎng)或者移動通信網(wǎng)絡(luò),監(jiān)控多個頻段的無線傳感器子網(wǎng)節(jié)點的運行情況。
為了滿足嵌入式系統(tǒng)的界面設(shè)計需求,給出了一種圖形用戶界面系統(tǒng)SKY-GUI 的設(shè)計思路和其在嵌入式Linux 環(huán)境下的實現(xiàn)方法。SKY-GUI 有四大組成部分:輸入抽象層、顯示抽象層、事件系統(tǒng)和窗口系統(tǒng)。