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