奔跑吧 Linux内核 - (EPUB全文下载)
文件大小:0.63 mb。
文件格式:epub 格式。
书籍内容:
奔跑吧 Linux内核
第1章 处理器体系结构
第2章 内存管理
第3章 进程管理
第4章 并发与同步
第5章 中断管理
第6章 内核调试
欢迎来到异步社区!
第1章 处理器体系结构
本章思考题
1.请简述精简指令集RISC和复杂指令集CISC的区别。
2.请简述数值0x12345678在大小端字节序处理器的存储器中的存储方式。
3.请简述在你所熟悉的处理器(比如双核Cortex-A9)中一条存储读写指令的执行全过程。
4.请简述内存屏障(memory barrier)产生的原因。
5.ARM有几条memory barrier的指令?分别有什么区别?
6.请简述cache的工作方式。
7.cache的映射方式有full-associative(全关联)、direct-mapping(直接映射)和set-associative(组相联)3种方式,请简述它们之间的区别。为什么现代的处理器都使用组相联的cache映射方式?
8.在一个32KB的4路组相联的cache中,其中cache line为32Byte,请画出这个cache的cache line、way和set的示意图。
9.ARM9处理器的Data Cache组织方式使用的VIVT,即虚拟Index虚拟Tag,而在Cortex-A7处理器中使用PIPT,即物理Index物理Tag,请简述PIPT比VIVT有什么优势?
10.请画出在二级页表架构中虚拟地址到物理地址查询页表的过程。
11.在多核处理器中,cache的一致性是如何实现的?请简述MESI协议的含义。
12.cache在Linux内核中有哪些应用?
13.请简述ARM big.LITTLE架构,包括总线连接和cache管理等。
14.cache coherency和memory consistency有什么区别?
15.请简述cache的write back有哪些策略。
16.请简述cache line的替换策略。
17.多进程间频繁切换对TLB有什么影响?现代的处理器是如何面对这个问题的?
18.请简述NUMA架构的特点。
19.ARM从Cortex系列开始性能有了质的飞越,比如Cortex-A8/A15/A53/A72,请说说Cortex系列在芯片设计方面做了哪些重大改进?
Linux 4.x内核已经支持几十种的处理器体系结构,目前市面上最流行的两种体系结构是x86和ARM。x86体系结构以Intel公司的PC和服务器市场为主导,ARM体系结构则是以ARM公司为主导的芯片公司占领了移动手持设备等市场。本书重点讲述Linux内核的设计与实现,但是离开了处理器体系结构,就犹如空中楼阁,毕竟操作系统只是为处理器服务的一种软件而已。目前大部分的Linux内核书籍都是基于x86架构的,但是国内还是有相当多的开发者采用ARM处理器来进行开发产品,比如手机、IoT设备、嵌入式设备等。因此本书基于ARM体系结构来讲述Linux内核的设计与实现。
关于ARM体系结构,ARM公司的官方文档已经有很多详细资料,其中描述ARMv7-A和ARMv8-A架构的手册包括:
另外还有一本非常棒的官方资料,讲述ARM Coxtex系统处理器编程技巧:
读者可以从ARM官方网站中下载到上述4本资料[1]。本书的重点集中在Linux内核本身,不会用过多的篇幅来介绍ARM体系结构的细节,因此本章以快问快答的方式来介绍一些ARM体系结构相关的问题。
可能有些读者对ARM处理器的命名感到疑惑。ARM公司除了提供处理器IP和配套工具以外,主要还是定义了一系列的ARM兼容指令集来构建整个ARM的软件生态系统。从ARMv4指令集开始为国人所熟悉,兼容ARMv4指令集的处理器架构有ARM7-TDMI,典型处理器是三星的S3C44B0X。兼容ARMv5指令集的处理器架构有ARM920T,典型处理器是三星的S3C2440,有些读者还买过基于S3C2440的开发板。兼容ARMv6指令集的处理器架构有ARM11 MPCore。到了ARMv7指令集,处理器系列以Cortex命名,又分成A、R和M系列,通常A系列针对大型嵌入式系统(例如手机),R系列针对实时性系统,M系列针对单片机市场。Cortex-A7和Coxtex-A9处理器是前几年手机的主流配置。Coxtex-A系列处理器面市后,由于处理性能的大幅提高以及杰出功耗控制,使得手机和平板电脑市场迅猛发展。另外一些新的应用需求正在酝酿,比如大内存、虚拟化、安全特性(Trustzone[2]),以及更好的能效比(大小核)等。虚拟化和安全特性在ARMv7上已经实现,但是大内存的支持显得有点捉襟见肘,虽然可以通过LPAE(Large Physical Address Extensions)技术支持40位的物理地址空间,但是由于32位的处理器最高支持4GB的虚拟地址空间,因此不适合虚拟内存需求巨大的应用。于是ARM公司设计了一个全新的指令集,即ARMv8-A指令集,支持64位指令集,并且保持向前兼容ARMv7-A指令集。因此定义AArch64和AArch32两套运行环境分别来运行64位和32位指令集,软件可以动态切换运行环境。为了行文方便,在本书中AArch64也称为ARM64,AArch32也称为ARM32。
1.请简述精简指令集RISC和复杂指令集CISC的区别。
20世纪70年代,IBM的Jo ............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » 奔跑吧 Linux内核 - (EPUB全文下载)