w*******e 发帖数: 395 | 1 最近面试一个与file system有关系的公司,业界内的大公司,junior的职位(工作经
验3年),onsite有俩阿三(总共5个
人)。
其中一个阿三非常严肃,黑着个脸,下面是面试过程中两个问题以及他对我的feedback:
问题一:为什么context switch有big overhead?
我的回答如下:
Because context switch needs to invalidate caches, flush TLB, registers, and
store process related data, which all require a lot of cpu cycles. The new
process also takes time to warm up the cache and TLB.
他后来的feedback是:我对context switch的基本概念不了解 。。。
问题二:
why does the system call need to copy the file name into kernel space when
you call read()/wirte()/open()?
My answer:
User procs and kernel threads work in different address modes. User procs
cannot access kernel address which is in a protected mode. Kernel address
mode is mapped to either high or low 1GB of the user proc' VM. By coping the
file name into its own space, it will be more efficient from the
perspective of memory access.
Another reason may be to prevent the passed file names from being changed in
user space by somebody else.
后来他的feedback是:我对system call以及kernel address mode不了解
另一个阿三很nice,非常热情,先问了我一些问题,全都很顺利,后来coding,后来因
为时间有点不够(最后一个coding只留了15分钟,题目比较繁琐),在解释了主函数的
算法和corner case后,经的他同意省掉了一个辅助函数的coding。当时感觉非常好,
阿三也笑容满面,说well done。
后来的feedback说coding不熟练。
以前总还觉得身边的阿三还不错,这次就是亲身经历。工作很match,白人manager也有
有兴趣,结果被阿三这么一说,全都玩完了。onsite 5个人里有一个国人,但是却无能
为力。 |
y*****d 发帖数: 4451 | |
w*******e 发帖数: 395 | 3 例如?
【在 y*****d 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 你的回答非所问啊
|
K******g 发帖数: 1870 | 4 如果给出的feedback真的是这么直接的话,那第一个阿三是毫无疑问的在黑你
and
new
【在 w*******e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 最近面试一个与file system有关系的公司,业界内的大公司,junior的职位(工作经 : 验3年),onsite有俩阿三(总共5个 : 人)。 : 其中一个阿三非常严肃,黑着个脸,下面是面试过程中两个问题以及他对我的feedback: : 问题一:为什么context switch有big overhead? : 我的回答如下: : Because context switch needs to invalidate caches, flush TLB, registers, and : store process related data, which all require a lot of cpu cycles. The new : process also takes time to warm up the cache and TLB. : 他后来的feedback是:我对context switch的基本概念不了解 。。。
|
c****m 发帖数: 824 | 5 第一个你说的没有问题,老印明显就是想fail你让他自己人进去。欲加之罪何患无辞 |
c****m 发帖数: 824 | 6 我遇到过很多第三个老印,都是笑面虎。找一个巨复杂的题目故意让你遍不完。然后
fail尼,feedback你还没话讲,确实没写完。 |
z**q 发帖数: 41 | 7 做file system的team里, 老印比例很高啊, 为啥老中做storage的少?老印这问法,
和flg的general hire完全不是一个套路啊。现在也很茫然。。。 |
f********e 发帖数: 325 | 8 难道面试者只能这样任人宰割?
有没有办法向HR投诉?
只要有一次把这个做成新闻和官司搞大,这些人就再不敢这样嚣张
and
new
【在 w*******e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 最近面试一个与file system有关系的公司,业界内的大公司,junior的职位(工作经 : 验3年),onsite有俩阿三(总共5个 : 人)。 : 其中一个阿三非常严肃,黑着个脸,下面是面试过程中两个问题以及他对我的feedback: : 问题一:为什么context switch有big overhead? : 我的回答如下: : Because context switch needs to invalidate caches, flush TLB, registers, and : store process related data, which all require a lot of cpu cycles. The new : process also takes time to warm up the cache and TLB. : 他后来的feedback是:我对context switch的基本概念不了解 。。。
|
w*******e 发帖数: 395 | 9 怎么投诉?面试电话录音?无论怎么样,都搞不过interviewer。你和interviewer争执
,只能说你和potential colleague合不来,人家更加不会招你。
【在 f********e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 难道面试者只能这样任人宰割? : 有没有办法向HR投诉? : 只要有一次把这个做成新闻和官司搞大,这些人就再不敢这样嚣张 : : and : new
|
j********p 发帖数: 9680 | 10 没什么可抱怨的.
中国人和印度人本来就是敌人关系.
我已经几次深入敌营了解过了.
不过国人能帮你的也不会太多,
你只能狠练内功,把自己提高到顶级的江湖水平.
干印度人干不了的活.这样你就能平趟北美了. |
|
|
l******r 发帖数: 1642 | 11 这是啥话
顶级的能有几个?
再顶级你周围一堆阿三有啥意思?
为啥阿三鬼混的就没问题
到中国人这吃碗饭还要顶级了?
再说了,马工那些东西有啥顶级不顶级的
就是混碗饭吃,又不是jobs
【在 j********p 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 没什么可抱怨的. : 中国人和印度人本来就是敌人关系. : 我已经几次深入敌营了解过了. : 不过国人能帮你的也不会太多, : 你只能狠练内功,把自己提高到顶级的江湖水平. : 干印度人干不了的活.这样你就能平趟北美了.
|
s***e 发帖数: 403 | |
c****m 发帖数: 824 | 13 因为中国人不团结。团结的民族就可以鬼混,不团结只能挨打
【在 l******r 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 这是啥话 : 顶级的能有几个? : 再顶级你周围一堆阿三有啥意思? : 为啥阿三鬼混的就没问题 : 到中国人这吃碗饭还要顶级了? : 再说了,马工那些东西有啥顶级不顶级的 : 就是混碗饭吃,又不是jobs
|
f******o 发帖数: 1505 | 14 Context Switch needs to flush TLB ?? 我没有听错吧。
如果每次 context switch 到另外一个 process 就需要清空 TLB, 那还要 virtual
memory management 干嘛 ...
你的说法就好比说一辆巴士,到每一站上下人的时候统统要求把全车人赶下车再重新上
车一样。
我操,服了. 哥们,我说过这样的话,我说如果是我面试老中,除非他是极品我一定让
他过关。看到你的帖子我犹豫了。。。 |
x*****c 发帖数: 284 | 15 硅谷已成印度谷,以后老中日子异常艰难,做成这个的原因不在老中,而在美国政府,
为啥拼命让他们来,项目去印度毛都 不会说啥技术泄漏,英文,什么都不是理由。 |
f******o 发帖数: 1505 | 16 哥们,我真的想帮你,也很同情你的遭遇,不过。。。
再回去练练。
【在 f******o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : Context Switch needs to flush TLB ?? 我没有听错吧。 : 如果每次 context switch 到另外一个 process 就需要清空 TLB, 那还要 virtual : memory management 干嘛 ... : 你的说法就好比说一辆巴士,到每一站上下人的时候统统要求把全车人赶下车再重新上 : 车一样。 : 我操,服了. 哥们,我说过这样的话,我说如果是我面试老中,除非他是极品我一定让 : 他过关。看到你的帖子我犹豫了。。。
|
p*****d 发帖数: 126 | 17 你的第一个问题其实答的不够专业,如果我在1年前去答也会大概这么答,但是1年后的
今天,已经被微软的内核搞得焦头烂额的我,如果看到你这个回答,出于都是同胞,我
会再换一种方式问你(烙印肯定不会了):告诉我context switch的过程。
其实invalid/flush cache是很快的,而且都有专门的coprocessor去做,跑os的核发个
指令就可以忙其他的了,TLB的处理也非常快速,MMU会取代主核取干事情。
真正花费时间的事我觉得是决定去做context switch的过程 和决定哪个thread去接盘
cpu 的过程。
决定去做context switch的过程 :
这部分必定伴随着异常,异常意味着要从用户模式先切换到系统模式,然后处理可能到
来的时钟中断(用来判断quantum is over,进而要去进入中断模式,处理完时钟中断要
返回系统模式),然后处理reschedule的命令,处理完reschedule的命令要从系统模式
返回用户模式,里外里切换了很多次模式;
决定哪个thread去接盘cpu 的过程:
在处理reshedule 命令的时候,大部分时间不是用在swap寄存器了,而是用在判断哪个
thread 应该被swap进cpu上了。我了解得微软的内核是有一个备选线程,同时还有一个
32个元素的hash表,表里的元素都是线程,不同优先级的线程。context switch会拿备
选线程的优先级和hash表里的线程还有当前正在跑得线程作比较,判断出优先级最高的
能跑得线程,然后再去swap 新线程的register(其实这部分时间少的可怜,倒是另外一
部分时间长--“维护线程数据结构”,因为线程的数据结构里有很多信息很多是关于他
为什么要sleep,在等哪个event,他前面是哪个线程,后面是哪个线程,他的event 都被
那几个其他线程等,等等等等, 这一块我也稀里糊涂的)
不是碰到很多微软内核的问题,我还正不知道这么多,今天既然看到你问这个问题了,
我就把我最近看到的都说说,对我自己也是个总结。 |
j********p 发帖数: 9680 | 18 说的有道理,
有条件的话尽量找啊三少的公司.
明知道那么多阿三在那,还要去,就没意思了.
国人又不团结,又不互相帮忙.
只能苦练内功,你还有什么其他比较好的方法?
【在 l******r 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 这是啥话 : 顶级的能有几个? : 再顶级你周围一堆阿三有啥意思? : 为啥阿三鬼混的就没问题 : 到中国人这吃碗饭还要顶级了? : 再说了,马工那些东西有啥顶级不顶级的 : 就是混碗饭吃,又不是jobs
|
j********p 发帖数: 9680 | 19 说的有道理,
有条件的话尽量找啊三少的公司.
明知道那么多阿三在那,还要去,就没意思了.
国人又不团结,又不互相帮忙.
只能苦练内功,你还有什么其他比较好的方法?
【在 l******r 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 这是啥话 : 顶级的能有几个? : 再顶级你周围一堆阿三有啥意思? : 为啥阿三鬼混的就没问题 : 到中国人这吃碗饭还要顶级了? : 再说了,马工那些东西有啥顶级不顶级的 : 就是混碗饭吃,又不是jobs
|
p*****d 发帖数: 126 | 20 楼主估计是没做过这方面的东西。
维护TLB是MMU的事情,从cpu里访问的都是virtual的,mmu负责把
va通过TLB转成pa
你说的也不全对,TLB的维护在context switch的过程中是发生的,
只不过不是在跑os 的核里,而是在mmu里做
【在 f******o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : Context Switch needs to flush TLB ?? 我没有听错吧。 : 如果每次 context switch 到另外一个 process 就需要清空 TLB, 那还要 virtual : memory management 干嘛 ... : 你的说法就好比说一辆巴士,到每一站上下人的时候统统要求把全车人赶下车再重新上 : 车一样。 : 我操,服了. 哥们,我说过这样的话,我说如果是我面试老中,除非他是极品我一定让 : 他过关。看到你的帖子我犹豫了。。。
|
|
|
w*******e 发帖数: 395 | 21 说flush TLB可能不够准确,但是context switch过程中必定会invalidate很多TLB
entry.在你的比喻中,如果巴士不够大,或者巴士新目的地的乘客过多,的确就是需要
赶下所有人,因为巴士的目的地不同了。
瞧你这哥们的口气,还极品,也太自以为是了吧
另外,这个面试又不是做OS内核的,这些东西都只需要知道概念就好了。
【在 f******o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : Context Switch needs to flush TLB ?? 我没有听错吧。 : 如果每次 context switch 到另外一个 process 就需要清空 TLB, 那还要 virtual : memory management 干嘛 ... : 你的说法就好比说一辆巴士,到每一站上下人的时候统统要求把全车人赶下车再重新上 : 车一样。 : 我操,服了. 哥们,我说过这样的话,我说如果是我面试老中,除非他是极品我一定让 : 他过关。看到你的帖子我犹豫了。。。
|
f******o 发帖数: 1505 | 22 "从cpu里访问的都是virtual的"
我又没听错吧? CPU 懂得 virtual memory?
CPU always deals with physical memory.
还有,我有说 TLB 维护不发生吗?楼主上来一句 "context switch needs to flush
TLB"
什么叫 flush? 维护跟 flush 是一回事吗?
这还不给人毙了。
【在 p*****d 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 楼主估计是没做过这方面的东西。 : 维护TLB是MMU的事情,从cpu里访问的都是virtual的,mmu负责把 : va通过TLB转成pa : 你说的也不全对,TLB的维护在context switch的过程中是发生的, : 只不过不是在跑os 的核里,而是在mmu里做
|
N*D 发帖数: 3641 | 23 不算黑啊。俺面的烙印是这样黑的。
烙印:这个题怎么解?
答:brute force这么解,但可以优化成这样解。
烙印:写code吧,按brute force的写,没时间了
[写完]
feedback是:not writing efficient code。
[更让人痛心的是,refer过一个朋友,面试被一个老中以同样的方法干掉了。] |
p*****d 发帖数: 126 | 24 看看这个图,cpu访问的是va
h_ttp://en.wikipedia.org/wiki/File:MMU_principle.png
【在 f******o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : "从cpu里访问的都是virtual的" : 我又没听错吧? CPU 懂得 virtual memory? : CPU always deals with physical memory. : 还有,我有说 TLB 维护不发生吗?楼主上来一句 "context switch needs to flush : TLB" : 什么叫 flush? 维护跟 flush 是一回事吗? : 这还不给人毙了。
|
f******o 发帖数: 1505 | 25 你的问题就在于用词不严谨。面试的时候不严谨就给人一种只知其一,不知其二的感觉
。
invalidate 是第一步,selectively flush 是第二步, invalidate 之后发现要需要赶
人就会赶一批人,最坏的情况是赶走所有人
如果你面试的时候这样说就没问题,可是你上来就说 needs to flush TLB 让人一下就
懵了。
【在 w*******e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 说flush TLB可能不够准确,但是context switch过程中必定会invalidate很多TLB : entry.在你的比喻中,如果巴士不够大,或者巴士新目的地的乘客过多,的确就是需要 : 赶下所有人,因为巴士的目的地不同了。 : 瞧你这哥们的口气,还极品,也太自以为是了吧 : 另外,这个面试又不是做OS内核的,这些东西都只需要知道概念就好了。
|
z**q 发帖数: 41 | 26 楼主面junior, 大家别太苛刻, 按大家的要求, 我看这个junior很难招。有几个
junior看过好几遍linux kernel? 而且面file system相关的, vfs, ext, io
scheduler...等等是重点。 老印的问题确实有点偏。 |
A**l 发帖数: 2650 | 27 你还是回去好好看看OS吧,呵呵,楼上明显比你清楚这块
【在 f******o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : "从cpu里访问的都是virtual的" : 我又没听错吧? CPU 懂得 virtual memory? : CPU always deals with physical memory. : 还有,我有说 TLB 维护不发生吗?楼主上来一句 "context switch needs to flush : TLB" : 什么叫 flush? 维护跟 flush 是一回事吗? : 这还不给人毙了。
|
w*******e 发帖数: 395 | 28 你这样说就厚道多了。干嘛还极品的?你见过几个极品的国人能够说清楚context
switch的具体操作?
【在 f******o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 你的问题就在于用词不严谨。面试的时候不严谨就给人一种只知其一,不知其二的感觉 : 。 : invalidate 是第一步,selectively flush 是第二步, invalidate 之后发现要需要赶 : 人就会赶一批人,最坏的情况是赶走所有人 : 如果你面试的时候这样说就没问题,可是你上来就说 needs to flush TLB 让人一下就 : 懵了。
|
z**q 发帖数: 41 | 29 研究context switch和file system根本就不联系。kernel那么多东西, 啥都搞明白不
可能的。 楼主还是别浪费时间了, 赶紧move on。
BTW, 能否透露一下这是啥公司的面试?
【在 w*******e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 你这样说就厚道多了。干嘛还极品的?你见过几个极品的国人能够说清楚context : switch的具体操作?
|
f******o 发帖数: 1505 | 30 你连这张图的的意思都没看懂。
CPU 不懂 Virtual address, 才需要交给 MMU 去转换,得到一个 physical 的地址然
后来处理。
virtual address 当然是 process 访问了...
【在 p*****d 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 看看这个图,cpu访问的是va : h_ttp://en.wikipedia.org/wiki/File:MMU_principle.png
|
|
|
A**l 发帖数: 2650 | 31 呵呵,在硬件level来看process是什么?
【在 f******o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 你连这张图的的意思都没看懂。 : CPU 不懂 Virtual address, 才需要交给 MMU 去转换,得到一个 physical 的地址然 : 后来处理。 : virtual address 当然是 process 访问了...
|
f******o 发帖数: 1505 | 32 我不是说你极品,极品是说人品有问题 OK? 跟技术没有关系
我这句话是说我以前觉得只要不是极品的国人,技术上多差我都能让他过。
【在 w*******e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 你这样说就厚道多了。干嘛还极品的?你见过几个极品的国人能够说清楚context : switch的具体操作?
|
p*****d 发帖数: 126 | 33 看到大家兴致这么高,我再提问一个问题,这个问题一直困扰我(在我们的新产品中):
假设一个核有L1/L2两级cache,如果mmu在L1上面cpu下面,或者mm
u在L2 下面,那么对2级cache的操作是统一的(不是va就是pa),如果
mmu被设计到L1下面L2上面?你怎么设计对L1/l2的访问?怎么解决flush
/invalid和速度的矛盾 ? |
f******o 发帖数: 1505 | 34 宝宝蛋,别再撑了,你帮人说话已经不小心把自己的水平暴露了。
送你一句话,只知其一,不知其二。嫩了点。
【在 A**l 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 呵呵,在硬件level来看process是什么?
|
A**l 发帖数: 2650 | 35 看一遍x86, armv5, armv7,把virtual/physical index/tag理解下就基本上明白大概了
细节么,能搞懂的人不多
面试的时候,junior的人只要知道cache invalidate/flush我就OK
senior的,要大概明白一些L1/L2的上述概念,细节不要求
【在 p*****d 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 看到大家兴致这么高,我再提问一个问题,这个问题一直困扰我(在我们的新产品中): : 假设一个核有L1/L2两级cache,如果mmu在L1上面cpu下面,或者mm : u在L2 下面,那么对2级cache的操作是统一的(不是va就是pa),如果 : mmu被设计到L1下面L2上面?你怎么设计对L1/l2的访问?怎么解决flush : /invalid和速度的矛盾 ?
|
A**l 发帖数: 2650 | 36 呵呵,我懒的跟你争,只是不希望其他人被你误导了罢了
【在 f******o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 宝宝蛋,别再撑了,你帮人说话已经不小心把自己的水平暴露了。 : 送你一句话,只知其一,不知其二。嫩了点。
|
f******o 发帖数: 1505 | 37 喂,醒醒好吗?
CPU 访问 Virtual address? 还有比这句话更误导的吗?
每一个Virtual address, CPU 只有通过 MMU 把它转换成 physical address 才能用好
吗?
OMG. 有本事你们都不要修改原帖。。。
【在 A**l 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 呵呵,我懒的跟你争,只是不希望其他人被你误导了罢了
|
A**l 发帖数: 2650 | 38 如果你态度好点,我愿意免费教你 :)
修改帖子措辞是我的好习惯,技术上,我有必要修改对的东西么?
【在 f******o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 喂,醒醒好吗? : CPU 访问 Virtual address? 还有比这句话更误导的吗? : 每一个Virtual address, CPU 只有通过 MMU 把它转换成 physical address 才能用好 : 吗? : OMG. 有本事你们都不要修改原帖。。。
|
w*******e 发帖数: 395 | 39 一家业界内的大公司,印度人超过80%,我还只碰到了两个
【在 z**q 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 研究context switch和file system根本就不联系。kernel那么多东西, 啥都搞明白不 : 可能的。 楼主还是别浪费时间了, 赶紧move on。 : BTW, 能否透露一下这是啥公司的面试?
|
f******o 发帖数: 1505 | 40 从你第一篇留言到现在,你除了扯蛋就没分析一点技术上的东西。
如果你只会扯蛋,想教我扯蛋的话还是不必了。哈哈。
奉劝你一句,如果你也是做技术的,还是少来点虚的。面试时候不管用。
【在 A**l 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 如果你态度好点,我愿意免费教你 :) : 修改帖子措辞是我的好习惯,技术上,我有必要修改对的东西么?
|
|
|
A**l 发帖数: 2650 | 41 SF版不就是扯淡么?
要不我们转到JobHunting去讨论技术如何?
【在 f******o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 从你第一篇留言到现在,你除了扯蛋就没分析一点技术上的东西。 : 如果你只会扯蛋,想教我扯蛋的话还是不必了。哈哈。 : 奉劝你一句,如果你也是做技术的,还是少来点虚的。面试时候不管用。
|
p*****d 发帖数: 126 | 42 错误。
【在 f******o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 你连这张图的的意思都没看懂。 : CPU 不懂 Virtual address, 才需要交给 MMU 去转换,得到一个 physical 的地址然 : 后来处理。 : virtual address 当然是 process 访问了...
|
A**l 发帖数: 2650 | 43 我已经把楼上帖子转到JobHunting了,回见 :)
【在 p*****d 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 错误。
|
p*****d 发帖数: 126 | 44 that is a good idea!
I will put my money on you two guys both!!!
【在 A**l 的大作中提到】![](/moin_static193/solenoid/img/up.png) : SF版不就是扯淡么? : 要不我们转到JobHunting去讨论技术如何?
|
C*********4 发帖数: 59 | 45 你写的所有的程序都是访问VA的,kernel大多也访问VA(可有不同),所以CPU执行的
都是VA地址。
Cache可用VA或PA来index,那是另外的问题。
【在 f******o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 喂,醒醒好吗? : CPU 访问 Virtual address? 还有比这句话更误导的吗? : 每一个Virtual address, CPU 只有通过 MMU 把它转换成 physical address 才能用好 : 吗? : OMG. 有本事你们都不要修改原帖。。。
|
A**l 发帖数: 2650 | 46 恩,楼上是以为MMU转换后的PA还要向CPU汇报,然后再由CPU根据这个PA发指令去BUS
取数据
【在 C*********4 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 你写的所有的程序都是访问VA的,kernel大多也访问VA(可有不同),所以CPU执行的 : 都是VA地址。 : Cache可用VA或PA来index,那是另外的问题。
|
f******o 发帖数: 1505 | 47 哈哈,前面还挺靠谱,看到你第二个逗号之后我摇头了。
照你这样讲,这个 physical memory, 到底是给谁用的呢? :)
唉。再给你打个比方吧,你浏览器里面打 mitbbs.com, 你觉得你的网卡真的懂 mitbbs
.com 吗
【在 C*********4 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 你写的所有的程序都是访问VA的,kernel大多也访问VA(可有不同),所以CPU执行的 : 都是VA地址。 : Cache可用VA或PA来index,那是另外的问题。
|
f******o 发帖数: 1505 | 48 哈哈,你还知道 BUS
那你告诉我吧, CPU 怎样从 BUS fetch 到 一个 virtual address? 哈哈。 笑疯了。
【在 A**l 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 恩,楼上是以为MMU转换后的PA还要向CPU汇报,然后再由CPU根据这个PA发指令去BUS : 取数据
|
C*********4 发帖数: 59 | 49 到了bus上就都是PA了。你没写过device driver,没用过DMA,所以你不清楚是正常的
,你那比喻也不靠谱
mitbbs
【在 f******o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 哈哈,前面还挺靠谱,看到你第二个逗号之后我摇头了。 : 照你这样讲,这个 physical memory, 到底是给谁用的呢? :) : 唉。再给你打个比方吧,你浏览器里面打 mitbbs.com, 你觉得你的网卡真的懂 mitbbs : .com 吗
|
b**********y 发帖数: 232 | 50 我觉得你们是在争论不同“层面”上的CPU吧。
一个说的是处理机器指定的CPU,面向OS,另一个说的是物理器件上的CPU?
从OS层面上看,CPU的确take的是VA,但是从物理层面后,VA转换成PA之后,还是CPU发
出的指定去取memory,所以CPU take的是PA。
所以从OS角度讲,CPU take的是VA,VA到PA交给MMU去做了。
mitbbs
【在 f******o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 哈哈,前面还挺靠谱,看到你第二个逗号之后我摇头了。 : 照你这样讲,这个 physical memory, 到底是给谁用的呢? :) : 唉。再给你打个比方吧,你浏览器里面打 mitbbs.com, 你觉得你的网卡真的懂 mitbbs : .com 吗
|
|
|
f******o 发帖数: 1505 | 51 你这个“因为所以”中间有偷换概念。
所有这些程序最后变成 CPU instruction 的时候都是"用" 的 VA 没错
但是 CPU 最终 "访问" 的不是 VA
【在 C*********4 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 你写的所有的程序都是访问VA的,kernel大多也访问VA(可有不同),所以CPU执行的 : 都是VA地址。 : Cache可用VA或PA来index,那是另外的问题。
|
A**l 发帖数: 2650 | 52 物理层面上CPU也基本不关心PA(除了少数情况),我们去JobHunting好了,在SF还是
扯淡痛快哈~
同时接触过bootloader和linux kernel (device driver)的人就会很清楚CPU enable
MMU前后的区别
【在 b**********y 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 我觉得你们是在争论不同“层面”上的CPU吧。 : 一个说的是处理机器指定的CPU,面向OS,另一个说的是物理器件上的CPU? : 从OS层面上看,CPU的确take的是VA,但是从物理层面后,VA转换成PA之后,还是CPU发 : 出的指定去取memory,所以CPU take的是PA。 : 所以从OS角度讲,CPU take的是VA,VA到PA交给MMU去做了。 : : mitbbs
|
f******o 发帖数: 1505 | 53 你自己也承认了到了 bus 上就都是 PA 了
那不就结了
"从cpu里访问的都是virtual的"
我从头到尾驳斥的就是这句话
【在 C*********4 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 到了bus上就都是PA了。你没写过device driver,没用过DMA,所以你不清楚是正常的 : ,你那比喻也不靠谱 : : mitbbs
|
A**l 发帖数: 2650 | 54 这样吧,你先给个限定,x86, mips, armv5 or armv6/v7?还是general概念
要不然讨论起来不方便。
【在 f******o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 你自己也承认了到了 bus 上就都是 PA 了 : 那不就结了 : "从cpu里访问的都是virtual的" : 我从头到尾驳斥的就是这句话
|
f******o 发帖数: 1505 | 55 DMA 跟我在这里驳斥的问题没有任何关联
我要是真没用过 DMA, 可能还会被你唬住。
【在 C*********4 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 到了bus上就都是PA了。你没写过device driver,没用过DMA,所以你不清楚是正常的 : ,你那比喻也不靠谱 : : mitbbs
|
C*********4 发帖数: 59 | 56 你科学家吧?:)
有点道理,就看CPU的定义了,如果你认为从Intel买来的那一大块就是CPU,算我没说
【在 b**********y 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 我觉得你们是在争论不同“层面”上的CPU吧。 : 一个说的是处理机器指定的CPU,面向OS,另一个说的是物理器件上的CPU? : 从OS层面上看,CPU的确take的是VA,但是从物理层面后,VA转换成PA之后,还是CPU发 : 出的指定去取memory,所以CPU take的是PA。 : 所以从OS角度讲,CPU take的是VA,VA到PA交给MMU去做了。 : : mitbbs
|
A**l 发帖数: 2650 | 57 既然提到了MMU,显然CPU不能指一大块,对哈?
【在 C*********4 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 你科学家吧?:) : 有点道理,就看CPU的定义了,如果你认为从Intel买来的那一大块就是CPU,算我没说
|
f******o 发帖数: 1505 | 58 CPU 还能怎么定义?
CPU 难道是一个软件?你认为它是 kernel 的一部分?
【在 C*********4 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 你科学家吧?:) : 有点道理,就看CPU的定义了,如果你认为从Intel买来的那一大块就是CPU,算我没说
|
C*********4 发帖数: 59 | 59 这么说吧,CPU执行的内存读写指令都是基于VA的
想那哥们说的,咱限定于x86。
【在 f******o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 你自己也承认了到了 bus 上就都是 PA 了 : 那不就结了 : "从cpu里访问的都是virtual的" : 我从头到尾驳斥的就是这句话
|
A**l 发帖数: 2650 | 60 算了,刚才看了下,您是面twitter的,上层算法估计挺牛,底层的东西不熟悉也难怪
在OS/kernel level,我们说CPU就是一个具体执行指令的core,比如主流手机有2个4个
core,这个core就是这里说的CPU
【在 f******o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : CPU 还能怎么定义? : CPU 难道是一个软件?你认为它是 kernel 的一部分?
|
|
|
f******o 发帖数: 1505 | 61 x86 arm 什么都无所谓
关键你跟我说的是两码事
你说的执行神马的都是在谈 CPU instruction
我说的是 CPU 这块薯片
【在 C*********4 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 这么说吧,CPU执行的内存读写指令都是基于VA的 : 想那哥们说的,咱限定于x86。
|
A**l 发帖数: 2650 | 62 严谨点说的话,enable MMU之前CPU还是可以用PA的
【在 C*********4 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 这么说吧,CPU执行的内存读写指令都是基于VA的 : 想那哥们说的,咱限定于x86。
|
A**l 发帖数: 2650 | 63 我faint了。。。面试的时候聊kernel context switch,谁会说这块板子。。。
我撤了,呵呵,生命诚可贵,下盘棋去
【在 f******o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : x86 arm 什么都无所谓 : 关键你跟我说的是两码事 : 你说的执行神马的都是在谈 CPU instruction : 我说的是 CPU 这块薯片
|
f******o 发帖数: 1505 | 64 当然了,现在世界上插着电在运行的,压根没有 MMU 的机器多了去了
【在 A**l 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 严谨点说的话,enable MMU之前CPU还是可以用PA的
|
C*********4 发帖数: 59 | 65 没MMU你还这儿扯什么VAPA。我也得睡了,你事后觉得这个讨论有益,给我们发个包子。
【在 f******o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 当然了,现在世界上插着电在运行的,压根没有 MMU 的机器多了去了
|
f******o 发帖数: 1505 | 66 这个完全不是我说的。
不要把话放到别人的嘴里面。
【在 A**l 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 恩,楼上是以为MMU转换后的PA还要向CPU汇报,然后再由CPU根据这个PA发指令去BUS : 取数据
|
j*****d 发帖数: 1625 | 67 请问,编程界一哥是谁?一姐是谁?
【在 j********p 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 没什么可抱怨的. : 中国人和印度人本来就是敌人关系. : 我已经几次深入敌营了解过了. : 不过国人能帮你的也不会太多, : 你只能狠练内功,把自己提高到顶级的江湖水平. : 干印度人干不了的活.这样你就能平趟北美了.
|
s********s 发帖数: 4011 | 68 你不用这种跩B口气会死么?一副就你牛的样子别人啥都没你清楚,被揪到辫子就开始
瞎掰,中国人里的极品说的就是你这样的
【在 f******o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : "从cpu里访问的都是virtual的" : 我又没听错吧? CPU 懂得 virtual memory? : CPU always deals with physical memory. : 还有,我有说 TLB 维护不发生吗?楼主上来一句 "context switch needs to flush : TLB" : 什么叫 flush? 维护跟 flush 是一回事吗? : 这还不给人毙了。
|
f******o 发帖数: 1505 | 69 滚一边去, 换个马甲就以为自己是个逼了
【在 s********s 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 你不用这种跩B口气会死么?一副就你牛的样子别人啥都没你清楚,被揪到辫子就开始 : 瞎掰,中国人里的极品说的就是你这样的
|
d********f 发帖数: 43471 | 70 你回答的太好了,三哥一看他自己好几年都没搞明白的问题你都能答出来,怎么还可能
招你
feedback:
and
new
【在 w*******e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 最近面试一个与file system有关系的公司,业界内的大公司,junior的职位(工作经 : 验3年),onsite有俩阿三(总共5个 : 人)。 : 其中一个阿三非常严肃,黑着个脸,下面是面试过程中两个问题以及他对我的feedback: : 问题一:为什么context switch有big overhead? : 我的回答如下: : Because context switch needs to invalidate caches, flush TLB, registers, and : store process related data, which all require a lot of cpu cycles. The new : process also takes time to warm up the cache and TLB. : 他后来的feedback是:我对context switch的基本概念不了解 。。。
|
|
|
a**********t 发帖数: 631 | 71 CPU always deals with physical memory??? Are you serious or just Guan Shui?
Please go back to retake Computer architecture course!
【在 f******o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : "从cpu里访问的都是virtual的" : 我又没听错吧? CPU 懂得 virtual memory? : CPU always deals with physical memory. : 还有,我有说 TLB 维护不发生吗?楼主上来一句 "context switch needs to flush : TLB" : 什么叫 flush? 维护跟 flush 是一回事吗? : 这还不给人毙了。
|
s***e 发帖数: 403 | 72 Computer Science APP 2nd Edition
pp 777
With virtual addressing, the CPU accesses main memory by generating a
virtual address, which is converted to the apropriate physical address
before being sent to the memory.
......
pp 778
Dedicated hardware on the CPU chip called the memory management unit (MMU)
translates virtual addresses on the fly, using a look-up table stored in
main memory whose contents are managed by the operating system.
Shui?
【在 a**********t 的大作中提到】![](/moin_static193/solenoid/img/up.png) : CPU always deals with physical memory??? Are you serious or just Guan Shui? : Please go back to retake Computer architecture course!
|
l*********e 发帖数: 261 | 73 TLB 和virtual memory management 是两回事。 context swtich要invalidate task
的 TLB entries.
【在 f******o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : Context Switch needs to flush TLB ?? 我没有听错吧。 : 如果每次 context switch 到另外一个 process 就需要清空 TLB, 那还要 virtual : memory management 干嘛 ... : 你的说法就好比说一辆巴士,到每一站上下人的时候统统要求把全车人赶下车再重新上 : 车一样。 : 我操,服了. 哥们,我说过这样的话,我说如果是我面试老中,除非他是极品我一定让 : 他过关。看到你的帖子我犹豫了。。。
|
l*********e 发帖数: 261 | 74 Agree!
【在 p*****d 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 看看这个图,cpu访问的是va : h_ttp://en.wikipedia.org/wiki/File:MMU_principle.png
|
f******o 发帖数: 1505 | 75 本来不想再趟这浑水了,说的跟本是两码事
但是看到你这句话我再浪费几秒钟生命好了
TLB 和virtual memory management 是两回事?translation look-aside buffer,
translation 难道不是把 virtual address translate 到 pysical? 这个buffer的
存在是 virtual
memory management 的核心功能之一啊,你能说是两回事?
【在 l*********e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : TLB 和virtual memory management 是两回事。 context swtich要invalidate task : 的 TLB entries.
|
f******o 发帖数: 1505 | 76 对啊。
"the CPU accesses main memory"
这不就结了。
你可以说 CPU 使用 virtual address 来 look up, 但是CPU 怎么可能访问 virtual
address。不存在的东西怎么访问。
【在 s***e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : Computer Science APP 2nd Edition : pp 777 : With virtual addressing, the CPU accesses main memory by generating a : virtual address, which is converted to the apropriate physical address : before being sent to the memory. : ...... : pp 778 : Dedicated hardware on the CPU chip called the memory management unit (MMU) : translates virtual addresses on the fly, using a look-up table stored in : main memory whose contents are managed by the operating system.
|
d******o 发帖数: 2489 | 77 我个人认为不管楼主怎么回答都会被fail的。
另外楼上几个,没必要为这题目吵的脸红脖子粗。
【在 c****m 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 第一个你说的没有问题,老印明显就是想fail你让他自己人进去。欲加之罪何患无辞
|
s****g 发帖数: 257 | 78 作为一个写过OS kernel的专家, 我宣布在这里
你说的相对最靠谱。
其实这方面不熟悉也没关系, 但有人大呼小叫并误导
人家就不好了。
【在 p*****d 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 楼主估计是没做过这方面的东西。 : 维护TLB是MMU的事情,从cpu里访问的都是virtual的,mmu负责把 : va通过TLB转成pa : 你说的也不全对,TLB的维护在context switch的过程中是发生的, : 只不过不是在跑os 的核里,而是在mmu里做
|
l*****o 发帖数: 473 | 79
毫无疑问,TLB的flush是造成慢的一个原因,因为从此以后,每个内存访问都需要重新
进行页表查找。
【在 p*****d 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 楼主估计是没做过这方面的东西。 : 维护TLB是MMU的事情,从cpu里访问的都是virtual的,mmu负责把 : va通过TLB转成pa : 你说的也不全对,TLB的维护在context switch的过程中是发生的, : 只不过不是在跑os 的核里,而是在mmu里做
|
x****k 发帖数: 2932 | |
|
|
k*******v 发帖数: 176 | 81 我是读fineArt的。路过,请问MMU是不是代表妹妹的意思? |
z****0 发帖数: 4413 | 82 现在阿3越来越多,国人再不团结 以后的子女还是被阿3 欺负 |
y*****d 发帖数: 4451 | 83 看到吧,楼主自己不懂
【在 p*****d 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 楼主估计是没做过这方面的东西。 : 维护TLB是MMU的事情,从cpu里访问的都是virtual的,mmu负责把 : va通过TLB转成pa : 你说的也不全对,TLB的维护在context switch的过程中是发生的, : 只不过不是在跑os 的核里,而是在mmu里做
|
u*u 发帖数: 14949 | |
s******s 发帖数: 63 | 85 想问问楼主是怎么要到这么详细的feedback的
我每次跟recruiter好说歹说 让给个详细的feedback 从来就没人搭理
就只有很很general的 比如你的背景不是很合适什么的
从来就没有收到详细到每个面试官的feedback |
x*******1 发帖数: 28835 | 86 emc. netapp, nimble 还是 oracle? |
f*********s 发帖数: 125 | 87 妹妹幼,小妹妹的意思。
【在 k*******v 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 我是读fineArt的。路过,请问MMU是不是代表妹妹的意思?
|
w*******e 发帖数: 395 | 88 难道做FS就这几家?VMware不算啊?
nimble不算知名公司吧
【在 x*******1 的大作中提到】![](/moin_static193/solenoid/img/up.png) : emc. netapp, nimble 还是 oracle?
|
c*******1 发帖数: 589 | 89 lz有做storage和fs的经验么?
Vmware做的storage不一定有G多吧。
nimble还不知名?
【在 w*******e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 难道做FS就这几家?VMware不算啊? : nimble不算知名公司吧
|