Re: [請益] 要如何讓人搞懂Process與Thread

作者: jackyu (孫權)   2014-07-30 13:30:04
這真是令人懷念(?) 的過程啊
撇除一些書卷型的強者, 魯叔我也經歷過這些過程
研究所畢 - 工作1-2年的時間
這個時候對process和thread的概念, 就是內清外糊
心裡知道"大概"是怎麼樣的概念, 程式也都寫的出來
但是搬上臺去和面試官講就是怎麼講他老人家怎麼不滿意
這是因為自己還沒有全然貫通這個觀念, 或是只在user space, 開發所造成
所以要自己去用常日生活去解釋這個認知, 會發生困難
工作4~未滿10年
這時後應該是原PO的狀態
內清外也清, 因為被系統整合操過, 也被G8的bug婊過
所以漸漸的已經把概念性認知轉成實體化認知
不管是哪一個方面的bug切入都游刃有餘
但是對於"錯誤解釋"會完全先套自己已經成型的邏輯去分析對錯
所以會比較無法分析在stage 1的小朋友是真懂還是假懂
這一階段, debug 電腦, 所向批靡
debug 人腦, 還待努力
工作10+年
魯叔我已經快要到這個階段了
在經過硬(ㄙㄞ\)工(ㄓ/)夫(ㄑㄩㄝ)的鍛練下
各種platform都摸過, user/kernel都玩過
原PO的process/thread在我內心區分和定義遭到衝擊
它們的邊界就會越來越灰
就有點像楊過
少年百家雜學, 博而不精
青年剛力重劍, 無堅不摧
中年木劍奇掌, 無劍勝有劍
process/thread在我心中已經只是兩個單字, 兩個變數
我腦中只留四個字: 系統特性
翻成英文叫做: OS depends
回到正題
在stage 1的新手, 應該只是模糊的覺得這兩個都是CPU多工的單位, 有啥不同
那很簡單, 不要硬叫他用日常的例子來舉, 因為他的認知還不到那邊
這時只要寫個linux程式, 要它指出什麼情況下哪些scope的變數會共用, 哪些不會
或是兩個main()在跑是不是資源也會共用, 要怎麼共用
這樣一解釋就算無法舉例, 但是寫出來的code也不至於沒有概念
CS大學教育的通病就是概念/設計型的學科和務實程式認知沒有拉起橋樑
大多老師就程式C就教C, OS就照恐龍本唸
幹這兩個要一起教好不好, 計概請先從其他程式語言先學好嗎...=_=
另外, 小算盤的加減乘除也算thread喔
以前魯叔我的時代要是mouse click event沒有用thread分開的話
按鈕之間可是會互相blocking der~~
這種東西不是教科書, 教授, 你或我說了算
端看你從哪個角度(framework/OS/user ap)去解釋些名辭
說不出來的不一定不懂, 說的出來的不一定會教
以上
※ 引述《xsion (Xsion)》之銘言:
: 某B是小弟的朋友,最近正在求職找資深工程師的職位(目標月薪50K)。不過其求
: 職過程不甚順遂,面試常被慘電。上次面試他被慘電的題目之一是被詢問Process
: 與Thread的差異,小弟指引他被電過的題目要搞懂。過了幾天後有了以下的對話:
: A: 上次的Process 和 Thread搞懂了嗎?
: B: 搞懂了
: A: 說說看 我幫你打個分數 先一百字以內 把你所知塞進一百字以內
: ......四分鐘後......
: B: Process:已經被LOAD到記憶體中準備執行的code,
: 一個多工的作業系統可以同時運行多個process,但CPU一次只能執行一件事
: 因此每個process需要排程; 在同一個preocess下有許多分身就是Thread,而
: Thread共享process的資源,可以存取同一個Process的Gobal變數,而每一個
: Thread可能互搶資源造成Deadlock
: A: 哈哈,這不是網路上的解釋嘛
: ......離題討論到CPU Pipeline stage 中略......
: B: 我的映像中老師是說 process是要去偷時間插入clock中
: A: 你能具體地告訴我 你寫過的程式中,那些是Process 那些是Thread嗎?
: B: 譬如說一個小算盤叫process 他的加減乘除工能就是Thread
: A: 你或許能從網路上找到不錯的解釋應付過去第一層的問題
: B: 但是只要一問下去 就嚴重暴露了你實際上沒有懂得內含了
: A: 小算盤的例子為何你會認為加減乘除是寫成Thread呢?
: 如果我再問你 甚麼時候你會寫成Thread,考量的點是什麼?
: 甚麼時候你會寫成Process?
: B: 我剛舉的例子有問題 我再舉一個來回答你的問題好了
: 用網路遊戲打怪來作利子
: 如果用process來設計 會變成搶怪的人得不到任何經驗值 也無法組隊打怪
: 如果是Thread的話 就可以作到可以共享經驗 一起打怪 然後經驗值根據打怪的
: 輸出不同來分配
: 最後這分數我始終沒有打下去,不知道版上的大大有沒有什們辦法可以幫助小弟
: 的朋友搞清楚觀念啊。他舉的例子我實在聽不懂,幫不上忙。
作者: lovdkkkk (dk)   2014-07-30 13:46:00
推 系統特性
作者: xsion (Xsion)   2014-07-30 13:48:00
大叔你以前該不會每一個event都開thread去處理吧? 照樣能不死結衝突 也算是超強者耶現在在寫沒OS的mcu 啥process thread根本過往雲煙了
作者: jackyu (孫權)   2014-07-30 14:48:00
當然不是啊~~只有response不能確定的才開thread話說有ICE的mcu寫起來比起linux AP爽多惹
作者: xsion (Xsion)   2014-07-30 15:33:00
現在還是常有天兵button click按下去就開始狂算data 搞到視窗畫面都沒辦法更新 Windows回視窗無回應是否要關閉被客訴還死不認定這是bug
作者: bndan (seed)   2014-07-30 15:39:00
剛剛跟上司吃飯才聊到類似題XD 推"系統特性"
作者: typepeter (∵Peter∴笑點)   2014-07-30 18:26:00
作者: loseptt (loseptt)   2014-07-30 20:00:00
thread和process就使用核心資源不一樣 也可以寫一長串
作者: snaketsai (さいでんし)   2014-07-31 01:56:00
推OS depend,Linux表示安安拎北LWP跟其他家都長不一樣

Links booklink

Contact Us: admin [ a t ] ucptt.com