Job

看广告前先尝试回答如下入门问题:

Linux下内核分页,i386是10-10-12这样的二级分页,X86_64则是9-9-9-9-12四级分页,那么为什么64位下要设计成9而不是10呢?

.

.

.

.

.


 

滴滴出行内核组常年招聘

工作内容:

1. 公有云和弹性云计算的核心部分研发

2. 发行版 Kernel bugfix

基本要求:

1.熟悉内核的某个常用模块,如调度,内存,IO,存储,cgroup或者KVM

2.同时也招应届生

地点:北京

常年有效,有意者将基本介绍发送到 oenhan AT Gmail

 


 

Intel OTC 虚拟化组常年招聘

工作内容:

业界虚拟化的核心力量,核心技术团队,主力都在国内。

1.KVM、XEN bugfix;

2.Intel CPU 新功能需要虚拟化支持,功能开发,代码push到KVM/XEN社区;

3.有时候需要帮BAT或者其他美帝客户解决虚拟化的问题;

4.还有NFV,Docker等新方向;

5.地点:北京、上海 任选

基本要求:

1.理解Kernel某些模块的设计

2.对虚拟化特别是硬件虚拟化有概念

3. 会一点英语

4.其实现在组内很多大牛刚来时都没接触LINUX,说白了,看人品...

常年有效,有意者将基本介绍发送到 yi.l.liu#linux.intel.com,就说从oenhan处看到的广告。

 

12 对 “Job”的想法;

    1. @RAY 待遇要自己谈,虚拟化开发主力都在国内,口语要求一般,低于商务。

  1. 回复一下分页问题:因为在x86_64下,目前实际使用的48bits地址,四级分页使用 9 * 4= 36bits,最后的12bits用来表示页内offset(linux默认页面4K页,正好是12bits)。5分钟内回答出来,没有查代码及网上说明。

    1. @大虾 “最后的12bits用来表示页内offset(linux默认页面4K页,正好是12bits)”,这是对的;但是为什么实际使用的是48bit呢,就是因为4级页表,每级别是9bit;所以你是从结果推算原因。

      1. @OENHAN 不具体知道原因。纯猜测。48bit的使用无非是CPU硬件实现的一个trade off。说是64位地址,但是实现世界哪里有这么大的单机物理内存,硬件使用64bit地址纯属浪费,所以硬件设计取了一个折中。另外有一些原子操作,也依赖某些高位地址是不使用的。

  2. Page size = 4k , x86_64 和 x86 with PAE 的address 表示都需要 8byte, 4k/8 = 512 = 2^9, 所以用9bit 當一個level (Page table 可以用1 page 存完)
    每個1st level 的addr mapping 最多只需一次page fault就可拿到

  3. 是因为地址位宽:x86是32bit=4B, 一页可存放4K/4B=1024条地址,即10bit;x86_64是64bit=8B, 一页可存4K/8B=512条,即9bit.
    另,x86已经采用5-level page table了。

发表评论