[请益] 要如何让人搞懂Process与Thread

楼主: xsion (Xsion)   2014-07-29 17:12:23
某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的话 就可以作到可以共享经验 一起打怪 然后经验值根据打怪的
输出不同来分配
最后这分数我始终没有打下去,不知道版上的大大有没有什们办法可以帮助小弟
的朋友搞清楚观念啊。他举的例子我实在听不懂,帮不上忙。
作者: NDark (溺于黑暗)   2014-07-29 17:25:00
code是炮操手册 cpu是兵 process是跳完砲操 thread是砲管数
作者: lNishan (紫小霓)   2014-07-29 17:26:00
B: 但是只要一问下去 --> 这行主词有误 XD
楼主: xsion (Xsion)   2014-07-29 17:27:00
一楼的比喻当过砲兵的应该会懂 XD
作者: loveflames (咕啾咕啾魔法阵)   2014-07-29 17:27:00
用virtual address space来解释就很很直观啦
作者: damody (天亮damody)   2014-07-29 18:12:00
不要讲那么多譬喻,他感觉就是直接恐龙本K下去就懂的感觉
楼主: xsion (Xsion)   2014-07-29 18:13:00
他的问题在于他认为他懂了 如果我没问他也不会再去学的感觉而且这些基础知识三年前就叫他看了
作者: final01 (牛顿运动定律)   2014-07-29 18:15:00
你干嘛帮他??等他碰到问题再说吧...说再多定义跟几百字
楼主: xsion (Xsion)   2014-07-29 18:16:00
因为最近他在面试 很可能再被问
作者: final01 (牛顿运动定律)   2014-07-29 18:16:00
字描述都是嘴砲吧...
作者: damody (天亮damody)   2014-07-29 18:24:00
http://ppt.cc/CIHc 跟他讲解13~16题吧。
楼主: xsion (Xsion)   2014-07-29 18:28:00
感谢楼上 我给他做做看
作者: whale76109 (杰)   2014-07-29 18:46:00
"小算盘叫process 他的加减乘除功能就是thread" … 难怪你朋友会被惨电
作者: cha122977 (CHA)   2014-07-29 18:55:00
被电过同一题O_Q
作者: lovdkkkk (dk)   2014-07-29 19:37:00
各个 Process 共享 CPU/Memory 的资源然后 Thread 共享 Process 的资源 基本上就这样实际上要不要让你开多个 Thread 还是看系统实作*Thread 共享 -> 同一个 Process 下的 Threads 共享
作者: onear (万一)   2014-07-29 19:45:00
http://programming.im.ncnu.edu.tw/J_Chapter9.htmgoogle第一个的解答就蛮好的了..
作者: leoace (leoace)   2014-07-29 19:53:00
可能会被问到fork跟thread的差别
作者: hidog (.....)   2014-07-29 20:05:00
请他去准备资工所的考试 准备完应该就都会了吧另外好奇问 怎样的工作会考这个阿 通常都是会用为主吧@@
作者: abcdefghi   2014-07-29 20:48:00
考试的目的只是为了分数? 还是为了了解真正的实力?你帮他补习考题, 就算通过面试, 勉强拿到职缺, 可能也只
作者: banjmin (HD)   2014-07-29 20:51:00
Thread分配cpu time对象单位 Process分配resource对象单位
作者: abcdefghi   2014-07-29 20:52:00
是天天被刮而已, 还不如先请他找份简单的工作, 然后把这些CS基本观念搞清楚.
作者: Jockey66666 (往事已成追忆)   2014-07-29 20:57:00
这样要找senior当然会不顺啊..因为junior就会被问了
作者: banjmin (HD)   2014-07-29 20:58:00
都是考研所必背题
楼主: xsion (Xsion)   2014-07-29 21:24:00
面试问这题其实比考研究所难 研究所只要背一下就拿分了 面试可以继续追问下去 不真正理解的话 一问就倒
作者: loveflames (咕啾咕啾魔法阵)   2014-07-29 21:38:00
一件工作需要多工且每个子工作之间需要经常互动,则用thread,互动性太低则用process简单讲就是thread之间沟通容易(但容易碰到同步的问题),而process之间沟通较麻烦
作者: YishengSu (快乐的多多)   2014-07-29 21:49:00
自己写一个可上架的APP就打通了
作者: loveflames (咕啾咕啾魔法阵)   2014-07-29 21:56:00
写socket server也可以
作者: abcdefghi   2014-07-29 22:03:00
既然他都举小算盘为例了, 就让他真的写个小算盘, 然后真的把加减乘除放到不同的thread....
作者: loveflames (咕啾咕啾魔法阵)   2014-07-29 22:07:00
不然也能用linux的存取权限来区分
作者: AzureCoder (AzureCoder)   2014-07-29 22:10:00
不懂这个,大学OS那门科到底是怎过的..
作者: Ting1024 (无)   2014-07-29 22:38:00
大学OS随便背一背就过了。跟企管的课本差不多。
作者: feeya (24 August 升格为乡民)   2014-07-29 23:12:00
Process就是一间房子 Thread是一间厕所
作者: uid88 (uid88)   2014-07-29 23:12:00
比较有兴趣知道原PO自己懂不懂
作者: feeya (24 August 升格为乡民)   2014-07-29 23:13:00
如果只有一个Thread 那两个人拉肚子时就得闹革命了
作者: typepeter (∵Peter∴笑点)   2014-07-30 00:07:00
嗯...我觉得应该要好好学习 这很基本 又要"资深"必定会.
作者: forgmonkey (悲情城市之悲情程式猿)   2014-07-30 00:18:00
大大辛苦了,你确定不劝他不找senior,有点夸张捏?其实我觉得他学习方法有问题,他很像想用背的去学习
楼主: xsion (Xsion)   2014-07-30 02:18:00
其实面试问基本题很常见 像OO三大要素之类的 工作有熟悉过的人回答起来和学生时代制式被课本的答案是很好分辨的 用来当面试的开场也不错feeya大你那厕所的比喻快笑死我了啦 Thread是轻量化的process 厕所还真可以说是简化的房子咧
作者: afafaf (bb)   2014-07-30 12:51:00
.net 还有 Task喔
作者: oicfck (LTEMAN)   2014-07-31 12:14:00
Process=Task 是个实际的程式 需要在compiler load到内存有各自的内存空间 就像一物件或ClassThread 包含在process底下,共用同一组process资源可以多工 但要做些保护才能达成同步且不会死结以小算盘来说 +-x/ 小算盘主程式是个Process 有输入及输出UserA和UserB 可以用不同的Thread 执行同时得到所需的结果例如 UserA 要算1+2 而UserB 要算2*3 则需要用Mutex去控制算UserA时 需等到结果出来 再算UserB 以防输入和输出混乱优点是 同步多工 省时间 而且在多核心环境下 可以平行运算
作者: trovadores (吟游诗人)   2014-08-04 18:50:00
丢给他一本恐龙本

Links booklink

Contact Us: admin [ a t ] ucptt.com