一、字符设备和块设备的区别html
字符设备是以字节为单位进行数据读写,只支持顺序读写,不支持随机读写。linux
块设备是以块为单位进行数据读写,支持随机读写。shell
还有他们的结构体、接口和注册方式都有所不一样。.net
具体详见:https://blog.csdn.net/bonnshore/article/details/7860997线程
二、内核空间和用户空间的区别、他们的通讯方式有哪些?3d
2.1区别htm
优先级:内核空间的优先级高于用户空间blog
效率:内核空间运行效率高于用户空间接口
内存分区:内核空间在内存上的分区属因而高端内核,用户空间属于普通内存。内核空间供全部运行在内核上的进程所共享,因此才有内核调用其实是直接调用相关接口完成进程
存储内容:内核空间存储的是内核相关进程和数据,用户空间存储的是用户程序,好比shell脚本
2.2通讯方式
系统接口,copy_to_user\copy_from_user
proc文件系统
sysfs文件系统
mmap将内核空间映射到用户空间
信号
具体详见:http://www.noobyard.com/article/p-rbpazhwk-bo.html
三、linux内存如何划分以及如何使用?虚拟地址及物理地址的概念以及转换,高端内存的概念。
内存物理上分段能够分为DMA、NORMAL、HIGH三段,内存在linux中划分为物理空间和内核空间
物理地址:在内存芯片引脚的地址
虚拟地址:CPU到MMU的地址,即虚拟地址。虚拟地址通过MMU转换成物理地址,而后访问具体的内存。
物理地址和虚拟地址的关系:虚拟地址 = 物理地址+偏移量
高端内存主要是用于在32位系统上分配较大的空间,地址映射不能访问所有的物理内存,因此提出了高端内存的概念,即借用高端内存进行映射,用完以后释放掉,而后能够循环使用。
具体详见:http://ilinuxkernel.com/?p=1013
四、linux中断实现机制、tasklet和workqueue的区别和底层实现的区别,为何要区分中断上半部和中断下半部。
linux内核中断分为上下两个部分,目的是为了在快速响应和处理大量任务之间得到平衡,中断的上半部是不可中断的,可是下半部是可中断的。
中断下半部主要实现方式包含tasklet和workqueue
tasklet通常用于中断上下文被调用运行,可是tasklet不会累积,也就是说屡次调用只会执行一次,通常用于较短期内的中断下半部。
workqueue通常用于进程上下文被调用,能够休眠,通常能够用于执行较长时间的中断下半部。
五、linux中断响应的执行流程
通常总结就是关中断保护线程进入中断处理程序------》处理中断服务程序------》恢复线程继续执行下一个指令
六、linux的同步机制,spinlock和信号量的区别
同步机制包含原子操做、自旋锁、信号量
自旋锁同时只容许一个任务来访问临界区,经过自旋来代替休眠,通常用于较短的临界区
信号量容许多个任务访问临界区,适用于较长的共享区,容许睡眠,将信号量设置为1则为互斥锁。