【面试】【android驱动开发】

1、字符设备和块设备的区别

字符设备是以字节为单位进行数据读写,只支持顺序读写,不支持随机读写。

块设备是以块为单位进行数据读写,支持随机读写。

还有他们的结构体、接口和注册方式都有所不同。

具体详见:https://blog.csdn.net/bonnshore/article/details/7860997

 

2、内核空间和用户空间的区别、他们的通信方式有哪些?

2.1区别

优先级:内核空间的优先级高于用户空间

效率:内核空间运行效率高于用户空间

内存分区:内核空间在内存上的分区属于是高端内核,用户空间属于普通内存。内核空间供所有运行在内核上的进程所共享,所以才有内核调用实际上是直接调用相关接口完成

存储内容:内核空间存储的是内核相关进程和数据,用户空间存储的是用户程序,比如shell脚本

2.2通信方式

系统接口,copy_to_user\copy_from_user

proc文件系统

sysfs文件系统

mmap将内核空间映射到用户空间

信号

具体详见:https://www.cnblogs.com/dchipnau/p/5043591.html

3、linux内存如何划分以及如何使用?虚拟地址及物理地址的概念以及转换,高端内存的概念。

内存物理上分段可以分为DMA、NORMAL、HIGH三段,内存在linux中划分为物理空间和内核空间

物理地址:在内存芯片引脚的地址

虚拟地址:CPU到MMU的地址,即虚拟地址。虚拟地址经过MMU转换成物理地址,然后访问具体的内存。

物理地址和虚拟地址的关系:虚拟地址 =  物理地址+偏移量

高端内存主要是用于在32位系统上分配较大的空间,地址映射不能访问全部的物理内存,所以提出了高端内存的概念,即借用高端内存进行映射,用完之后释放掉,然后可以循环使用。

具体详见:http://ilinuxkernel.com/?p=1013

4、linux中断实现机制、tasklet和workqueue的区别和底层实现的区别,为什么要区分中断上半部和中断下半部。

linux内核中断分为上下两个部分,目的是为了在快速响应和处理大量任务之间获得平衡,中断的上半部是不可中断的,但是下半部是可中断的。

中断下半部主要实现方式包含tasklet和workqueue

tasklet一般用于中断上下文被调用运行,但是tasklet不会累积,也就是说多次调用只会执行一次,一般用于较短时间内的中断下半部。

workqueue一般用于进程上下文被调用,可以休眠,一般可以用于执行较长时间的中断下半部。

5、linux中断响应的执行流程

一般总结就是关中断保护线程进入中断处理程序------》处理中断服务程序------》恢复线程继续执行下一个指令

6、linux的同步机制,spinlock和信号量的区别

同步机制包含原子操作、自旋锁、信号量

自旋锁同时只允许一个任务来访问临界区,通过自旋来代替休眠,一般用于较短的临界区

信号量允许多个任务访问临界区,适用于较长的共享区,允许睡眠,将信号量设置为1则为互斥锁。

 

 

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值