在阅读本书之前,请读者用两小时来完成Linux内核奔跑卷,对Linux内核了解程度做简略的了解。奔跑卷仅仅是Linux内核知识的娱乐游戏节目,希望能给读者带来一丝乐趣red hat linux下载,套用国外某个科技圈里著名人士的格言“不服,来跑个分吧!”。下边一共20道大题目深入linux设备驱动程序内核机制,每道大题目10分,一共200分,读者可以边阅读内核源代码边做题目,请在两小时内完成。如没有特殊说明,本奔跑卷基于Linux4.0内核和ARM32/ARM64体系构架。1.请详述在你所熟悉的处理器中(例如四核Cortex-A9)一条储存读写指令的执行全过程。2.在一个32KB的4路组相联的cache中linux解压命令,其中cacheline为32Byte,请画出这个cache组相联的结布光。3.内核的一级页表和二级页表储存在哪些地方?用户进程的一级页表和二级页表分别储存在哪些地方?4.关于伙伴系统的几个小问题:系统初始化时,数学显存页面是怎样添加到伙伴系统中的?系统运行时间长了数学显存会出现碎片化,伙伴系统怎样防止化学显存的碎片化?5.关于数学页面显存分配器的几个小问题:请详述Linux内核在理想情况下页面分配器(pageallocator)是怎样分配出连续数学页面的?怎样从分配网段中确定可以从什么zone中分配显存?页面分配器是根据哪些方向来扫描zone的?6.关于slab分配器几个小问题:slab分配器是怎样分配和释放小显存块的?slab分配器中有一个着色的概念(cachecolor),着色有哪些作用?slab分配器中的slab对象有没有按照per-cpu做一些优化,为何?7.用户进程使用malloc()来分配10个page大小的显存,请问内核是否马上分配化学显存?请描述malloc()在内核空间的实现过程。
8.关于structpage数据结构的几个小问题:structpage数据结构中的_count和_mapcount有哪些区别?匿名页面和文件缓冲页面有哪些区别?trylock_page()和lock_page()有哪些区别?9.关于页面回收的几个小问题:LRU数组怎么晓得page的活动频繁程度?kswapd是根据哪些方向来扫描zone的?内核有什么页面会被kswapd写回到交换分区?当page加入到lru数组中,被其他线程释放了这个page,这么lru数组怎么晓得这个page早已被释放了?10.关于显存管理的几个重要的数据结构的关系深入linux设备驱动程序内核机制,如mm、vma、page、vaddr、paddr:怎样由mm数据结构和虚拟地址vaddr找到对应的VMA?怎样由page和VMA找到虚拟地址vaddr?怎样由page找到所有映射的VMA?怎样由VMA和虚拟地址vaddr,找出相应的page数据结构?11.关于缺页中断和虚拟显存的几个小问题:假若用户进程使用只读属性(PROT_READ)来mmap映射一个文件到用户空间,之后使用memcpy来写这段显存空间,会是哪些样的情况?假如多个VMA的虚拟页面同时映射了同一个匿名页面,这么此时page->index应当等于多少?12.关于进程的几个小问题:在内核中怎样获取当前进程的task_struct数据结构?下边小代码片断里,最后会复印出哪些?intmain(void){inti;for(i=0;i