Re: thread (執行緒) definition??

作者: hizuki (ayaka)   2021-06-23 17:06:12
前一段時間面試,被問了一堆怪問題,其中一道問題就是要解釋
中的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)。

Links booklink

Contact Us: admin [ a t ] ucptt.com