资源描述:
《内核模块_设备驱动_lyf.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、基本知识01:程序空间分成了3个部分:0表示normalspace,即普通地址空间,就是内核空间地址。1表示用户地址空间.2表示是设备地址映射空间,例如硬件设备的寄存器在内核里所映射的地址空间。这3个空间在属性检查是会被识别.Ex:#define__user__attribute__((noderef,address_space(1)))定义了一个对用户空间属性的检查宏.表示这是一个用户空间的地址,即其指向的为用户空间的内存.long__user*p表示指针p来自于用户空间.一个沟通内核与用户空间的函数对copy_to_user(void__user*to,constvoi
2、d*from,unsignedlongn);copy_from_user(void*to,constvoid__user*from,unsignedlongn);02:体系结构对操作系统的支持操作系统的目的是提供一个多用户同时运行而相互不响应的环境.各个用户好像自己独自占有一个处理器和自己需要的资源.为了这个目的,除了操作系统的软件外必须有硬件的支持,就是体系结构对操作系统的支持.一个名词解释:虚拟地址……………………………………………………………………………………………………………………………….虚拟地址和物理地址的概念CPU通过地址来访问内存中的单元,地址有虚拟地址和物
3、理地址之分,如果CPU没有MMU(MemoryManagementUnit,内存管理单元),或者有MMU但没有启用,CPU核在取指令或访问内存时发出的地址将直接传到CPU芯片的外部地址引脚上,直接被内存芯片(以下称为物理内存,以便与虚拟内存区分)接收,这称为物理地址如果CPU启用了MMU,CPU核发出的地址将被MMU截获,从CPU到MMU的地址称为虚拟地址(VirtualAddress,以下简称VA),而MMU将这个地址翻译成另一个地址发到CPU芯片的外部地址引脚上,也就是将虚拟地址映射成物理地址.MMU将虚拟地址映射到物理地址是以页(Page)为单位的,对于32位CPU通
4、常一页为4K。例如,虚拟地址0xb7001000~0xb7001fff是一个页,可能被MMU映射到物理地址0x2000~0x2fff.……………………………………………………………………………………………………………………………….对于arm系统可以提供的部分支持如下:控制片上的Cache,存储器管理,存储器保护,…等.实现这些的核心是ARM片上的协处理器CP15,15是该处理器的序号.详细内容:------------------------------------------------------------------------------------------
5、-------------------------------------------1/11页式:3114130页表基地址为0CP15中的寄存器C231201912110一级页表内偏移序号二级页表内偏移序号虚拟地址3114132102个合成一页表基地址一级页表内偏移序号00个地址一级描述符地址31109854210查表获得一级描述符,该数据一级描述符二级页表基地址0域用户定义10除了地址外,还有其它的内容2级页表基地址+2级页表内二级描述符地址二级页表基地址二级页表内偏移序号00偏移序号=>具体页31109210段式:先分段,后分页3114130页表基地址为0CP15中的
6、寄存器C23120190一级页表内偏移序号段内地址偏移量虚拟地址3114132102个合成一页表基地址一级页表内偏移序号00个地址一级描述符地址31201912111098543210查表获得一级描述符,该数据一级描述符段对应的物理基地址0AP0域用户定义CB10除了地址外,还有其它的内容2级页表基地址+段内地二级描述符地址二级页表基地址段内地址偏移量址偏移=>实际地址312019210-----------------------------------------------------------------------------------------------
7、-------------------------------------------------2/1103:Linux的几种状态用户态程序运行在用户空间的状态,无论工作在哪个用户进程,只要工作在1空间就是用户状态.内核态程序运行在内核空间的状态.由于用户态不能够访问硬件,所以对所有文件的操作都是在内核态完成的.用户内核态程序工作在用户进程,但该进程此时正在调用内核程序(例如:系统调用).中断态一种程序处理异常的程序状态.04:几个名词01:索引点(inode分为内存中的inode和文件系统中的inode,下面是