- 論壇徽章:
- 0
|
本帖最后由 bsdc 于 2014-07-06 19:14 編輯
最近被人問了個問題,不知道怎么回他。他先問過用戶態(tài)的了,我告訴他:pipe, msg queue, signal, semaphore,socket之類。
然后他又問我“l(fā)inux或者其他RTOS內(nèi)核的進(jìn)程間通信方式”。從我看過的書,總感覺linux內(nèi)核的所有進(jìn)程/線程(沒有用戶態(tài)存儲空間)應(yīng)該只有一個共享的存儲空間,
也就是clone的地方都帶上CLONE_VM標(biāo)記的(當(dāng)然,每個進(jìn)程應(yīng)該有其自己的task_struct,系統(tǒng)stack),他們之間通信不就是相當(dāng)于用戶態(tài)的一個進(jìn)程內(nèi)的通信么,
并不需要什么IPC機(jī)制,直接調(diào)用函數(shù)或者引用全局非static變量即可。
還有一個,是不是可以認(rèn)為內(nèi)核就是一個”大進(jìn)程“,其內(nèi)部通過kernel_thread(再調(diào)用do_fork)來產(chǎn)生線程,硬要說通信的話,可能就是這些線程間的通信吧。
我的這個問題,主要是來請各位高人給我糾正下我的上面可能錯誤的觀點。其實從總體上來看,對于linux,進(jìn)程和線程(用戶態(tài)進(jìn)程中模擬的線程如pthread除外)就是一個東西,只不過共享的資源不一樣而已?磥砜慈,我有點迷糊了。非常感謝 |
|