看板 CSSE 關於我們 聯絡資訊
前一段時間面試,被問了一堆怪問題,其中一道問題就是要解釋 中的Process(行程)和thread(執行緒)的區別,附帶解釋 Inter-process-communication 默認作答的作業系統指Android Linux,但是現在回頭想來 在ARM設備中整個演變的蠻厲害的 我最初的回答是Linux中Process只是一個thread group, group之間有獨立Heap和memory map table。 一個Process沒有辦法訪問另外一個Process的Heap,因爲一個 Process中有效的Virtual address在另外一個Process是不同的 位置記憶體或者不存在。 以前Linux的DRM memory share機制,有個是用name的, 這是global都可以訪問的。而現在最常用的Ion和將來的DMAHeap 都是基於dmabuf-fd的,在Linux中任何fd都是只存在current的 fd_table的,是每個行程一個表的。 不過Android作業系統早期我記得是可以在Userspace使用Page 的Address來訪問記憶體的,好死不死,這家正好還有做類似的事情。 Androi要求的PIE功能也應該是有關聯性的,但是我其實不太明白 他的作用。 而關於調度問題,Process是有context switch的成本的,而 我回答的是同一個group中的thread其實只相當於offset, 所以context switch成本很小。這邊好像沒有文本支持我的說法? 另外現在一個Process的threads可以run在不同的CPU core上了, 前面有否定的答案我不確定爲什麼,cache snooping這樣的技術應該 可以解決Cross cores的coherence問題才對。 但是在MCU這樣環境中用的RTOS又沒有Process的概念的樣子,都只有 平級的thread(task)。 -- 你比較喜歡哪一個? 當年不是黨國大老但是被江浙財團捧紅的中國帥哥 跟同樣擁兵一方的諸侯約會裁軍結果半途諸侯們爽約,平常有在寫日記的莊嚴男人開始發飆 在旁邊讀著荒漠甘泉冷眼旁觀看著薔薇戰爭的人,為了中國的事情爭吵 別國調侃是不是中國總統,義正詞嚴的說著我是民族的燈塔的威嚴老先生 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 192.147.44.15 (美國) ※ 文章網址: https://www.ptt.cc/bbs/CSSE/M.1624439177.A.1A2.html