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处看到的广告。
请问C9应届硕士大概会是啥待遇呢…对英语口语要求高吗
@RAY 待遇要自己谈,虚拟化开发主力都在国内,口语要求一般,低于商务。
@OENHAN 好的,非常感谢 : – ),博主的文章非常受益。感谢分享
请问上海的公司地点在哪里啊?
@DIDA 在紫竹
@OENHAN 请问北京在哪呢?两地规模相比怎样?
@JC 在环球贸易,现在上海规模略大
回复一下分页问题:因为在x86_64下,目前实际使用的48bits地址,四级分页使用 9 * 4= 36bits,最后的12bits用来表示页内offset(linux默认页面4K页,正好是12bits)。5分钟内回答出来,没有查代码及网上说明。
@大虾 “最后的12bits用来表示页内offset(linux默认页面4K页,正好是12bits)”,这是对的;但是为什么实际使用的是48bit呢,就是因为4级页表,每级别是9bit;所以你是从结果推算原因。
@OENHAN 不具体知道原因。纯猜测。48bit的使用无非是CPU硬件实现的一个trade off。说是64位地址,但是实现世界哪里有这么大的单机物理内存,硬件使用64bit地址纯属浪费,所以硬件设计取了一个折中。另外有一些原子操作,也依赖某些高位地址是不使用的。
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就可拿到
是因为地址位宽:x86是32bit=4B, 一页可存放4K/4B=1024条地址,即10bit;x86_64是64bit=8B, 一页可存4K/8B=512条,即9bit.
另,x86已经采用5-level page table了。
关于X86_64使用9-9-9-9-12四级分页原因分析是,这样正好可以对应的页为4k、2M、1G,分别使用pte、pmd、pud。这样理解对不对?
@ZHIMIN FENG 可以看一下 @shiloong和@peter的回答
@OENHAN 明白了,是不是正是因为X86_64使用9-9-9-9-12四级分页,因此大页的大小才是2M或者1G,而不是4M或者2G这样划分的?
9 BIT 能表示512个ENTRIES,4KB页面,刚好8个字节一个ENTRY,512个刚好4KB,ENTRY中放64位物理地址,当然里面可以有一些状态标志位。