




已閱讀5頁(yè),還剩62頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
www embedu org 本章的要求 第8章 進(jìn)程間通信掌握Linux中管道的創(chuàng)建和讀寫掌握Linux中有名管道的創(chuàng)建和讀寫掌握Linux中信號(hào)的使用掌握Linux中信號(hào)量的使用掌握Linux中共享內(nèi)存的使用掌握Linux中消息隊(duì)列的使用 www embedu org 本章的主要內(nèi)容 8 1Linux下進(jìn)程間通信概述8 2管道8 3信號(hào)8 4信號(hào)量8 5共享內(nèi)存8 6消息隊(duì)列8 7實(shí)驗(yàn) www embedu org 8 1Linux下進(jìn)程間通信概述 www embedu org Linux下進(jìn)程間通信概述 1 Linux下的進(jìn)程通信手段基本上是從UNIX平臺(tái)上的進(jìn)程通信手段繼承而來(lái)的 而對(duì)UNIX發(fā)展做出重大貢獻(xiàn)的兩大主力AT T的貝爾實(shí)驗(yàn)室及BSD 加州大學(xué)伯克利分校的伯克利軟件發(fā)布中心 在進(jìn)程間的通信方面的側(cè)重點(diǎn)有所不同 前者是對(duì)UNIX早期的進(jìn)程間通信手段進(jìn)行了系統(tǒng)的改進(jìn)和擴(kuò)充 形成了 systemVIPC 其通信進(jìn)程主要局限在單個(gè)計(jì)算機(jī)內(nèi) 后者則跳過(guò)了該限制 形成了基于套接口 socket 的進(jìn)程間通信機(jī)制 而Linux則把兩者的優(yōu)勢(shì)都繼承了下來(lái) www embedu org Linux下進(jìn)程間通信概述 2 UNIX進(jìn)程間通信 IPC 方式包括管道 FIFO以及信號(hào) SystemV進(jìn)程間通信 IPC 包括SystemV消息隊(duì)列 SystemV信號(hào)量以及SystemV共享內(nèi)存區(qū) Posix進(jìn)程間通信 IPC 包括Posix消息隊(duì)列 Posix信號(hào)量以及Posix共享內(nèi)存區(qū) www embedu org 進(jìn)程間通信方式的種類 1 1 管道 Pipe 及有名管道 namedpipe 管道可用于具有親緣關(guān)系進(jìn)程間的通信 有名管道 除具有管道所具有的功能外 它還允許無(wú)親緣關(guān)系進(jìn)程間的通信 2 信號(hào) Signal 信號(hào)是在軟件層次上對(duì)中斷機(jī)制的一種模擬 它是比較復(fù)雜的通信方式 用于通知進(jìn)程有某事件發(fā)生 一個(gè)進(jìn)程收到一個(gè)信號(hào)與處理器收到一個(gè)中斷請(qǐng)求效果上可以說(shuō)是一樣的 3 消息隊(duì)列 MessgeQueue 消息隊(duì)列是消息的鏈接表 包括Posix消息隊(duì)列SystemV消息隊(duì)列 它克服了前兩種通信方式中信息量有限的缺點(diǎn) 具有寫權(quán)限的進(jìn)程可以按照一定的規(guī)則向消息隊(duì)列中添加新消息 對(duì)消息隊(duì)列有讀權(quán)限的進(jìn)程則可以從消息隊(duì)列中讀取消息 www embedu org 進(jìn)程間通信方式的種類 2 4 共享內(nèi)存 Sharedmemory 可以說(shuō)這是最有用的進(jìn)程間通信方式 它使得多個(gè)進(jìn)程可以訪問(wèn)同一塊內(nèi)存空間 不同進(jìn)程可以及時(shí)看到對(duì)方進(jìn)程中對(duì)共享內(nèi)存中數(shù)據(jù)的更新 這種通信方式需要依靠某種同步機(jī)制 如互斥鎖和信號(hào)量等 5 信號(hào)量 Semaphore 主要作為進(jìn)程之間以及同一進(jìn)程的不同線程之間的同步和互斥手段 6 套接字 Socket 這是一種更為一般的進(jìn)程間通信機(jī)制 它可用于網(wǎng)絡(luò)中不同機(jī)器之間的進(jìn)程間通信 應(yīng)用非常廣泛 www embedu org 8 2管道 www embedu org 管道概述 無(wú)名管道是Linux中進(jìn)程間通信的一種方式 它只能用于具有親緣關(guān)系的進(jìn)程之間的通信 也就是父子進(jìn)程或者兄弟進(jìn)程之間 它是一個(gè)半雙工的通信模式 具有固定的讀端和寫端 管道也可以看成是一種特殊的文件 對(duì)于它的讀寫也可以使用普通的read 和write 等函數(shù) 但是它不是普通的文件 并不屬于其他任何文件系統(tǒng) 并且只存在于內(nèi)核的內(nèi)存空間中 www embedu org 管道的創(chuàng)建和關(guān)閉 管道是基于文件描述符的通信方式 當(dāng)一個(gè)管道建立時(shí) 它會(huì)創(chuàng)建兩個(gè)文件描述符fds 0 和fds 1 其中fds 0 固定用于讀管道 而fd 1 固定用于寫管道 這樣就構(gòu)成了一個(gè)半雙工的通道 創(chuàng)建管道可以通過(guò)調(diào)用pipe 來(lái)實(shí)現(xiàn) 管道關(guān)閉時(shí)只需使用普通的close 函數(shù)逐個(gè)關(guān)閉各個(gè)文件描述符 www embedu org 父子進(jìn)程之間的管道通信 1 用pipe 函數(shù)創(chuàng)建的管道兩端處于一個(gè)進(jìn)程中 由于管道是主要用于在不同進(jìn)程間通信的 因此這在實(shí)際應(yīng)用中沒(méi)有太大意義 實(shí)際上 通常先是創(chuàng)建一個(gè)管道 再通過(guò)fork 函數(shù)創(chuàng)建一子進(jìn)程 該子進(jìn)程會(huì)繼承父進(jìn)程所創(chuàng)建的管道 www embedu org 父子進(jìn)程之間的管道通信 2 父子進(jìn)程分別擁有自己的讀寫通道 為了實(shí)現(xiàn)父子進(jìn)程之間的讀寫 只需把無(wú)關(guān)的讀端或?qū)懚说奈募枋龇P(guān)閉即可 此時(shí) 父子進(jìn)程之間就建立起了一條 子進(jìn)程寫入父進(jìn)程讀取 的通道 www embedu org 示例 閱讀并運(yùn)行示例8 2 2 www embedu org 標(biāo)準(zhǔn)流管道 1 與Linux的文件操作中有基于文件流的標(biāo)準(zhǔn)I O操作一樣 管道的操作也支持基于文件流的模式 這種基于文件流的管道主要是用來(lái)創(chuàng)建一個(gè)連接到另一個(gè)進(jìn)程的管道 這里的 另一個(gè)進(jìn)程 也就是一個(gè)可以進(jìn)行一定操作的可執(zhí)行文件 例如 用戶執(zhí)行 ls l 或者自己編寫的程序 pipe 等 由于這一類操作很常用 因此標(biāo)準(zhǔn)流管道就將一系列的創(chuàng)建過(guò)程合并到一個(gè)函數(shù)popen 中完成 它所完成的工作有以下幾步 創(chuàng)建一個(gè)管道 fork 一個(gè)子進(jìn)程 在父子進(jìn)程中關(guān)閉不需要的文件描述符 執(zhí)行exec函數(shù)族調(diào)用 執(zhí)行函數(shù)中所指定的命令 www embedu org 標(biāo)準(zhǔn)流管道 2 標(biāo)準(zhǔn)流管道的使用可以大大減少代碼的編寫量 但同時(shí)也有一些不利之處 例如 它不如前面管道創(chuàng)建的函數(shù)那樣靈活多樣 并且用popen 創(chuàng)建的管道必須使用標(biāo)準(zhǔn)I O函數(shù)進(jìn)行操作 但不能使用前面的read write 一類不帶緩沖的I O函數(shù) 與之相對(duì)應(yīng) 關(guān)閉用popen 創(chuàng)建的流管道必須使用函數(shù)pclose 來(lái)關(guān)閉該管道流 該函數(shù)關(guān)閉標(biāo)準(zhǔn)I O流 并等待命令執(zhí)行結(jié)束 www embedu org 標(biāo)準(zhǔn)流管道 3 www embedu org 示例 閱讀并運(yùn)行示例8 2 3 www embedu org 有名管道 1 前面介紹的管道是無(wú)名管道 它只能用于具有親緣關(guān)系的進(jìn)程之間 這就大大地限制了管道的使用 有名管道的出現(xiàn)突破了這種限制 它可以使互不相關(guān)的兩個(gè)進(jìn)程實(shí)現(xiàn)彼此通信 該管道可以通過(guò)路徑名來(lái)指出 并且在文件系統(tǒng)中是可見的 在建立了管道之后 兩個(gè)進(jìn)程就可以把它當(dāng)作普通文件一樣進(jìn)行讀寫操作 使用非常方便 不過(guò)值得注意的是 FIFO是嚴(yán)格地遵循先進(jìn)先出規(guī)則的 對(duì)管道及FIFO的讀總是從開始處返回?cái)?shù)據(jù) 對(duì)它們的寫則把數(shù)據(jù)添加到末尾 它們不支持如lseek 等文件定位操作 有名管道的創(chuàng)建可以使用函數(shù)mkfifo 該函數(shù)類似文件中的open 操作 可以指定管道的路徑和打開的模式 www embedu org 有名管道 2 在創(chuàng)建管道成功之后 就可以使用open read 和write 這些函數(shù)了 與普通文件的開發(fā)設(shè)置一樣 對(duì)于為讀而打開的管道可在open 中設(shè)置O RDONLY 對(duì)于為寫而打開的管道可在open 中設(shè)置O WRONLY 在這里與普通文件不同的是阻塞問(wèn)題 www embedu org 有名管道 3 由于普通文件的讀寫時(shí)不會(huì)出現(xiàn)阻塞問(wèn)題 而在管道的讀寫中卻有阻塞的可能 這里的非阻塞標(biāo)志可以在open 函數(shù)中設(shè)定為O NONBLOCK 對(duì)于讀進(jìn)程 若該管道是阻塞打開 且當(dāng)前FIFO內(nèi)沒(méi)有數(shù)據(jù) 則對(duì)讀進(jìn)程而言將一直阻塞到有數(shù)據(jù)寫入 若該管道是非阻塞打開 則不論FIFO內(nèi)是否有數(shù)據(jù) 讀進(jìn)程都會(huì)立即執(zhí)行讀操作 即如果FIFO內(nèi)沒(méi)有數(shù)據(jù) 則讀函數(shù)將立刻返回0 對(duì)于寫進(jìn)程 若該管道是阻塞打開 則寫操作將一直阻塞到數(shù)據(jù)可以被寫入 若該管道是非阻塞打開而不能寫入全部數(shù)據(jù) 則讀操作進(jìn)行部分寫入或者調(diào)用失敗 www embedu org 示例 閱讀并運(yùn)行示例8 2 3 www embedu org 8 3信號(hào) www embedu org 信號(hào)概述 1 信號(hào)是UNIX中所使用的進(jìn)程通信的一種最古老的方法 它是在軟件層次上對(duì)中斷機(jī)制的一種模擬 是一種異步通信方式 信號(hào)可以直接進(jìn)行用戶空間進(jìn)程和內(nèi)核進(jìn)程之間的交互 內(nèi)核進(jìn)程也可以利用它來(lái)通知用戶空間進(jìn)程發(fā)生了哪些系統(tǒng)事件 它可以在任何時(shí)候發(fā)給某一進(jìn)程 而無(wú)需知道該進(jìn)程的狀態(tài) 如果該進(jìn)程當(dāng)前并未處于執(zhí)行態(tài) 則該信號(hào)就由內(nèi)核保存起來(lái) 直到該進(jìn)程恢復(fù)執(zhí)行再傳遞給它為止 如果一個(gè)信號(hào)被進(jìn)程設(shè)置為阻塞 則該信號(hào)的傳遞被延遲 直到其阻塞被取消時(shí)才被傳遞給進(jìn)程 不可靠信號(hào)和可靠信號(hào) www embedu org 信號(hào)概述 2 一個(gè)不可靠信號(hào)的處理過(guò)程是這樣的 如果發(fā)現(xiàn)該信號(hào)已經(jīng)在進(jìn)程中注冊(cè) 那么就忽略該信號(hào) 因此 若前一個(gè)信號(hào)還未注銷又產(chǎn)生了相同的信號(hào)就會(huì)產(chǎn)生信號(hào)丟失 而當(dāng)可靠信號(hào)發(fā)送給一個(gè)進(jìn)程時(shí) 不管該信號(hào)是否已經(jīng)在進(jìn)程中注冊(cè) 都會(huì)被再注冊(cè)一次 因此信號(hào)就不會(huì)丟失 所有可靠信號(hào)都支持排隊(duì) 而所有不可靠信號(hào)都不支持排隊(duì) 一個(gè)完整的信號(hào)生命周期可以分為3個(gè)重要階段 這3個(gè)階段由4個(gè)重要事件來(lái)刻畫的 信號(hào)產(chǎn)生 信號(hào)在進(jìn)程中注冊(cè) 信號(hào)在進(jìn)程中注銷 執(zhí)行信號(hào)處理函數(shù) www embedu org 信號(hào)概述 3 用戶進(jìn)程對(duì)信號(hào)的響應(yīng)可以有3種方式 忽略信號(hào) 即對(duì)信號(hào)不做任何處理 但是有兩個(gè)信號(hào)不能忽略 即SIGKILL及SIGSTOP 捕捉信號(hào) 定義信號(hào)處理函數(shù) 當(dāng)信號(hào)發(fā)生時(shí) 執(zhí)行相應(yīng)的自定義處理函數(shù) 執(zhí)行缺省操作 Linux對(duì)每種信號(hào)都規(guī)定了默認(rèn)操作 www embedu org 信號(hào)概述 3 www embedu org 信號(hào)發(fā)送與捕捉 1 kill 函數(shù)同讀者熟知的kill系統(tǒng)命令一樣 可以發(fā)送信號(hào)給進(jìn)程或進(jìn)程組 實(shí)際上 kill系統(tǒng)命令只是kill 函數(shù)的一個(gè)用戶接口 這里需要注意的是 它不僅可以中止進(jìn)程 實(shí)際上發(fā)出SIGKILL信號(hào) 也可以向進(jìn)程發(fā)送其他信號(hào) 與kill 函數(shù)所不同的是 raise 函數(shù)允許進(jìn)程向自身發(fā)送信號(hào) www embedu org 信號(hào)發(fā)送與捕捉 2 www embedu org 示例 閱讀并運(yùn)行示例8 3 2 1 www embedu org 信號(hào)發(fā)送與捕捉 3 alarm 也稱為鬧鐘函數(shù) 它可以在進(jìn)程中設(shè)置一個(gè)定時(shí)器 當(dāng)定時(shí)器指定的時(shí)間到時(shí) 它就向進(jìn)程發(fā)送SIGALARM信號(hào) 要注意的是 一個(gè)進(jìn)程只能有一個(gè)鬧鐘時(shí)間 如果在調(diào)用alarm 之前已設(shè)置過(guò)鬧鐘時(shí)間 則任何以前的鬧鐘時(shí)間都被新值所代替 pause 函數(shù)是用于將調(diào)用進(jìn)程掛起直至捕捉到信號(hào)為止 這個(gè)函數(shù)很常用 通??梢杂糜谂袛嘈盘?hào)是否已到 www embedu org 信號(hào)發(fā)送與捕捉 4 閱讀并運(yùn)行示例8 3 3 2 www embedu org signal 1 信號(hào)處理的主要方法有兩種 一種是使用簡(jiǎn)單的signal 函數(shù) 另一種是使用信號(hào)集函數(shù)組 www embedu org signal 2 structsigaction void sa handler intsigno sigset tsa mask intsa flags void sa restore void sa handler是一個(gè)函數(shù)指針 指定信號(hào)處理函數(shù) 這里除可以是用戶自定義的處理函數(shù)外 還可以為SIG DFL 采用缺省的處理方式 或SIG IGN 忽略信號(hào) 它的處理函數(shù)只有一個(gè)參數(shù) 即信號(hào)值 sa mask是一個(gè)信號(hào)集 它可以指定在信號(hào)處理程序執(zhí)行過(guò)程中哪些信號(hào)應(yīng)當(dāng)被屏蔽 在調(diào)用信號(hào)捕獲函數(shù)之前 該信號(hào)集要加入到信號(hào)的信號(hào)屏蔽字中 sa flags中包含了許多標(biāo)志位 是對(duì)信號(hào)進(jìn)行處理的各個(gè)選擇項(xiàng) www embedu org 示例 閱讀并運(yùn)行示例8 3 3 1 www embedu org 信號(hào)集函數(shù)組 1 使用信號(hào)集函數(shù)組處理信號(hào)時(shí)涉及一系列的函數(shù) 這些函數(shù)按照調(diào)用的先后次序可分為以下幾大功能模塊 創(chuàng)建信號(hào)集合 注冊(cè)信號(hào)處理函數(shù)以及檢測(cè)信號(hào) 其中 創(chuàng)建信號(hào)集合主要用于處理用戶感興趣的一些信號(hào) 其函數(shù)包括以下幾個(gè) sigemptyset 將信號(hào)集合初始化為空 sigfillset 將信號(hào)集合初始化為包含所有已定義的信號(hào)的集合 sigaddset 將指定信號(hào)加入到信號(hào)集合中去 sigdelset 將指定信號(hào)從信號(hào)集合中刪去 sigismember 查詢指定信號(hào)是否在信號(hào)集合之中 www embedu org 信號(hào)集函數(shù)組 2 注冊(cè)信號(hào)處理函數(shù)主要用于決定進(jìn)程如何處理信號(hào) 這里要注意的是 信號(hào)集里的信號(hào)并不是真正可以處理的信號(hào) 只有當(dāng)信號(hào)的狀態(tài)處于非阻塞狀態(tài)時(shí)才會(huì)真正起作用 因此 首先使用sigprocmask 函數(shù)檢測(cè)并更改信號(hào)屏蔽字 信號(hào)屏蔽字是用來(lái)指定當(dāng)前被阻塞的一組信號(hào) 它們不會(huì)被進(jìn)程接收 然后使用sigaction 函數(shù)來(lái)定義進(jìn)程接收到特定信號(hào)之后的行為 檢測(cè)信號(hào)是信號(hào)處理的后續(xù)步驟 因?yàn)楸蛔枞男盘?hào)不會(huì)傳遞給進(jìn)程 所以這些信號(hào)就處于 未處理 狀態(tài) 也就是進(jìn)程不清楚它的存在 sigpending 函數(shù)允許進(jìn)程檢測(cè) 未處理 信號(hào) 并進(jìn)一步?jīng)Q定對(duì)它們作何處理 www embedu org 信號(hào)集函數(shù)組 3 www embedu org 信號(hào)集函數(shù)組 4 www embedu org 示例 閱讀并運(yùn)行示例8 3 3 2 www embedu org 8 4信號(hào)量 www embedu org 信號(hào)量概述 1 在多任務(wù)操作系統(tǒng)環(huán)境下 多個(gè)進(jìn)程會(huì)同時(shí)運(yùn)行 并且一些進(jìn)程之間可能存在一定的關(guān)聯(lián) 多個(gè)進(jìn)程可能為了完成同一個(gè)任務(wù)會(huì)相互協(xié)作 這樣形成進(jìn)程之間的同步關(guān)系 而且在不同進(jìn)程之間 為了爭(zhēng)奪有限的系統(tǒng)資源 硬件或軟件資源 會(huì)進(jìn)入競(jìng)爭(zhēng)狀態(tài) 這就是進(jìn)程之間的互斥關(guān)系 進(jìn)程之間的互斥與同步關(guān)系存在的根源在于臨界資源 臨界資源是在同一個(gè)時(shí)刻只允許有限個(gè) 通常只有一個(gè) 進(jìn)程可以訪問(wèn) 讀 或修改 寫 的資源 通常包括硬件資源 處理器 內(nèi)存 存儲(chǔ)器以及其他外圍設(shè)備等 和軟件資源 共享代碼段 共享結(jié)構(gòu)和變量等 訪問(wèn)臨界資源的代碼叫做臨界區(qū) 臨界區(qū)本身也會(huì)成為臨界資源 www embedu org 信號(hào)量概述 2 信號(hào)量是用來(lái)解決進(jìn)程之間的同步與互斥問(wèn)題的一種進(jìn)程之間通信機(jī)制 包括一個(gè)稱為信號(hào)量的變量和在該信號(hào)量下等待資源的進(jìn)程等待隊(duì)列 以及對(duì)信號(hào)量進(jìn)行的兩個(gè)原子操作 PV操作 其中信號(hào)量對(duì)應(yīng)于某一種資源 取一個(gè)非負(fù)的整型值 信號(hào)量值指的是當(dāng)前可用的該資源的數(shù)量 若它等于0則意味著目前沒(méi)有可用的資源 PV原子操作的具體定義為 P操作 如果有可用的資源 信號(hào)量值 0 則占用一個(gè)資源 給信號(hào)量值減去一 進(jìn)入臨界區(qū)代碼 如果沒(méi)有可用的資源 信號(hào)量值等于0 則被阻塞到 直到系統(tǒng)將資源分配給該進(jìn)程 進(jìn)入等待隊(duì)列 一直等到資源輪到該進(jìn)程 V操作 如果在該信號(hào)量的等待隊(duì)列中有進(jìn)程在等待資源 則喚醒一個(gè)阻塞進(jìn)程 如果沒(méi)有進(jìn)程等待它 則釋放一個(gè)資源 給信號(hào)量值加一 www embedu org 信號(hào)量概述 3 使用信號(hào)量訪問(wèn)臨界區(qū)的偽代碼所下所示 設(shè)R為某種資源 S為資源R的信號(hào)量 INIT VAL S 對(duì)信號(hào)量S進(jìn)行初始化 非臨界區(qū) P S 進(jìn)行P操作 臨界區(qū) 使用資源R 只有有限個(gè) 通常只有一個(gè) 進(jìn)程被允許進(jìn)入該區(qū) V S 進(jìn)行V操作 非臨界區(qū) www embedu org 信號(hào)量的使用 1 第一步 創(chuàng)建信號(hào)量或獲得在系統(tǒng)已存在的信號(hào)量 此時(shí)需要調(diào)用semget 函數(shù) 不同進(jìn)程通過(guò)使用同一個(gè)信號(hào)量鍵值來(lái)獲得同一個(gè)信號(hào)量 第二步 初始化信號(hào)量 此時(shí)使用semctl 函數(shù)的SETVAL操作 當(dāng)使用二維信號(hào)量時(shí) 通常將信號(hào)量初始化為1 第三步 進(jìn)行信號(hào)量的PV操作 此時(shí)調(diào)用semop 函數(shù) 這一步是實(shí)現(xiàn)進(jìn)程之間的同步和互斥的核心工作部分 第四步 如果不需要信號(hào)量 則從系統(tǒng)中刪除它 此時(shí)使用semclt 函數(shù)的IPC RMID操作 此時(shí)需要注意 在程序中不應(yīng)該出現(xiàn)對(duì)已經(jīng)被刪除的信號(hào)量的操作 www embedu org 信號(hào)量的使用 2 www embedu org 信號(hào)量的使用 3 www embedu org 信號(hào)量的使用 4 www embedu org 示例 閱讀并運(yùn)行示例8 4 www embedu org 8 5共享內(nèi)存 www embedu org 共享內(nèi)存概述 共享內(nèi)存是一種最為高效的進(jìn)程間通信方式 因?yàn)檫M(jìn)程可以直接讀寫內(nèi)存 不需要任何數(shù)據(jù)的拷貝 為了在多個(gè)進(jìn)程間交換信息 內(nèi)核專門留出了一塊內(nèi)存區(qū) 這段內(nèi)存區(qū)可以由需要訪問(wèn)的進(jìn)程將其映射到自己的私有地址空間 因此 進(jìn)程就可以直接讀寫這一內(nèi)存區(qū)而不需要進(jìn)行數(shù)據(jù)的拷貝 從而大大提高了效率 當(dāng)然 由于多個(gè)進(jìn)程共享一段內(nèi)存 因此也需要依靠某種同步機(jī)制 如互斥鎖和信號(hào)量等 www embedu org 共享內(nèi)存的應(yīng)用 1 共享內(nèi)存的實(shí)現(xiàn)分為兩個(gè)步驟 第一步是創(chuàng)建共享內(nèi)存 這里用到的函數(shù)是shmget 也就是從內(nèi)存中獲得一段共享內(nèi)存區(qū)域 第二步映射共享內(nèi)存 也就是把這段創(chuàng)建的共享內(nèi)存映射到具體的進(jìn)程空間中 這里使用的函數(shù)是shmat 到這里 就可以使用這段共享內(nèi)存了 也就是可以使用不帶緩沖的I O讀寫命令對(duì)其進(jìn)行操作 除此之外 當(dāng)然還有撤銷映射的操作 其函數(shù)為shmdt www embedu org 共享內(nèi)存的應(yīng)用 2 www embedu org 共享內(nèi)存的應(yīng)用 3 www embedu org 示例 閱讀并運(yùn)行示例8 5 2 www embedu org 8 6消息隊(duì)列 www embedu org 消息隊(duì)列 1 消息隊(duì)列就是一些消息的列表 用戶可以從消息隊(duì)列中添加消息和讀取消息等 從這點(diǎn)上看 消息隊(duì)列具有一定的FIFO特性 但是它可以實(shí)現(xiàn)消息的隨機(jī)查詢 比FIFO具有更大的優(yōu)勢(shì) 同時(shí) 這些消息又是存在于內(nèi)核中的 由 隊(duì)列
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 納米結(jié)構(gòu)設(shè)計(jì)-洞察及研究
- 2025屆福建省永安市第三中學(xué)高二下化學(xué)期末聯(lián)考試題含解析
- 山東省肥城市第六高級(jí)中學(xué)2025屆化學(xué)高一下期末質(zhì)量跟蹤監(jiān)視模擬試題含解析
- 河北省秦皇島市新世紀(jì)中學(xué)2025屆高一化學(xué)第二學(xué)期期末聯(lián)考模擬試題含解析
- 環(huán)境適應(yīng)性能提升-洞察及研究
- 航空貨運(yùn)代理業(yè)流程優(yōu)化策略研究-洞察闡釋
- 多點(diǎn)觸控響應(yīng)機(jī)制-洞察及研究
- 跳蚤市場(chǎng)的社交媒體營(yíng)銷策略-洞察闡釋
- 藝術(shù)與技術(shù)的創(chuàng)新教學(xué)模式-洞察闡釋
- 自復(fù)制算法在深度學(xué)習(xí)中的優(yōu)化研究-洞察闡釋
- 開業(yè)美容項(xiàng)目活動(dòng)方案
- 2025至2030高純氯化鉀行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢(shì)及投資規(guī)劃深度研究報(bào)告
- 2025年人教版小學(xué)五年級(jí)下冊(cè)數(shù)學(xué)期末重難點(diǎn)測(cè)評(píng)試題(含答案和解析)
- 2024年天津市應(yīng)急管理局招聘行政執(zhí)法專職技術(shù)檢查員筆試真題
- 2025年度職業(yè)技能鑒定國(guó)家題庫(kù)維修電工高級(jí)技師復(fù)習(xí)題庫(kù)及答案(完整版)
- 《2025年CSCO腎癌診療指南》解讀
- TDT 1083-2023 國(guó)土調(diào)查數(shù)據(jù)庫(kù)更新數(shù)據(jù)規(guī)范
- 固體地球物理學(xué)概論
- 我國(guó)諧波標(biāo)準(zhǔn)
- 危險(xiǎn)化學(xué)品企業(yè)安全生產(chǎn)應(yīng)急管理值班值守制度管理辦法
- 耐張線夾壓接工藝
評(píng)論
0/150
提交評(píng)論