Redian新闻
>
Re: 大家看看阿三在onsite的时候怎么黑我的 (转载)
avatar
Re: 大家看看阿三在onsite的时候怎么黑我的 (转载)# JobHunting - 待字闺中
S*p
1
【 以下文字转载自 SanFrancisco 讨论区 】
发信人: proceed (波丝), 信区: SanFrancisco
标 题: Re: 大家看看阿三在onsite的时候怎么黑我的
发信站: BBS 未名空间站 (Mon Sep 30 00:14:31 2013, 美东)
你的第一个问题其实答的不够专业,如果我在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 都被
那几个其他线程等,等等等等, 这一块我也稀里糊涂的)
不是碰到很多微软内核的问题,我还正不知道这么多,今天既然看到你问这个问题了,
我就把我最近看到的都说说,对我自己也是个总结。
avatar
S*p
2
大家看看他答的对吗?
avatar
f*t
3
不明觉厉

★ 发自iPhone App: ChineseWeb 7.8

【在 S********p 的大作中提到】
: 大家看看他答的对吗?
avatar
h*e
4
确实是不明觉历!

【在 f*******t 的大作中提到】
: 不明觉厉
:
: ★ 发自iPhone App: ChineseWeb 7.8

avatar
S*p
5
没有个明白人吗?
我面试这样答行吗
avatar
A*i
6
真是不明觉厉,这种问题不搞内核的肯定答不出来
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。