问题1
1.下载linux2.6.18的内核
2.安装阅读内核的软件soure insight
3.编译内核
4.写总结讲讲下载编译过程的问题和解决方式。
问题2
从内核中寻找各种数据结构的应用,每个找一个例子。
从内核中寻找同步机制的应用,每个找一个例子。
学习dead line调度算法(deadline-iosched.c)中红黑树的应用,重点deadline_add_request
从dead line调度算法学习双向链表、hash链表的应用。
问题3
1.从内核中寻找kmalloc的例子并分析
2.从内核中寻找wait_event和工作队列的例子并分析
问题4
文件系统超级块的创建过程
文件系统内创建一个文件的过程
问题5
阅读文件打开的过程,重点关注dentry,inode的处理过程。
问题6
分析pci总线提供的设备属性如何应用到sys文件系统?(pci_bus_type.pci_dev_attrs)
写个小程序,在sysfs文件系统中创建一个目录和文件
问题7
1.如果文件起点位于硬盘物理扇区10000,那么从文件位置4096+1000字节处读7000个字节,对应的页缓存分别是那几个页面?对应块的物理块号是多少?
2.如果一个进程读文件,读的数据是文件内第一个页面的内容,读尚未完成有另一个进程同时准备写第一个页面的内容, 那么内核如何保证前一个进程读到正确的内容?
问题8
1.简要描述io从中断中返回,经过通用块层返回到用户态进程的函数调用关系。需要包括io的软中断处理,scsi命令的返回函数,bio的返回函数和页面的解锁。
2.块设备的队列request-queu提供了一系列的调用函数,简要描述它们各自的作用。
问题9
1.利用dumpe2fs把linux一个ext2(ext3也可)分区的信息dump出来,解释dump出来的信息。
2.结合课程的知识和ext2的目录结构,解析文件打开的过程
问题10
1.设备dma地址来自哪里?
2如何读取pci设备配置空间的信息?
3描述pci总线扫描设备的过程,包括桥的处理以及设备信息的获取.
问题11
1.分析kobj_lookup函数如何找到字符设备的对象cdev?
2.分析内核的ext2文件系统打开字符设备文件的整个过程?(假定根目录下有个字符设备文件chdev,文件系统如何读到inode信息,对设备文件赋值的过程,打开字符设备open函数的过程,打开input_handler提供的open函数)
问题12
描述物理键盘加入系统的过程分析。分为platform总线的设备和驱动匹配的过程,serio总线设备和驱动匹配的过程,input框架设备和驱动匹配的过程。