作者hizuki (入贅桧月家,我妻彩花)
看板CSSE
標題Re: thread (執行緒) definition??
時間Wed Jun 23 17:06:12 2021
前一段時間面試,被問了一堆怪問題,其中一道問題就是要解釋
中的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://webptt.com/m.aspx?n=bbs/CSSE/M.1624439177.A.1A2.html