这真是令人怀念(?) 的过程啊
撇除一些书卷型的强者, 鲁叔我也经历过这些过程
研究所毕 - 工作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的话 就可以作到可以共享经验 一起打怪 然后经验值根据打怪的
: 输出不同来分配
: 最后这分数我始终没有打下去,不知道版上的大大有没有什们办法可以帮助小弟
: 的朋友搞清楚观念啊。他举的例子我实在听不懂,帮不上忙。