内存管理MMU的作用?
- 内存分配和回收
- 内存保护
- 内存扩充
- 地址映射
异步IO和同步IO的区别?
如果是同步IO,当一个IO操作执行时,应用程序必须等待,直到此IO执行完,相反,异步IO操作在后台运行,
IO操作和应用程序可以同时运行,提高系统性能,提高IO流量; 在同步文件IO中,线程启动一个IO操作然后就立即进入等待状态,直到IO操作完成后才醒来继续执行,而异步文件IO中,
线程发送一个IO请求到内核,然后继续处理其他事情,内核完成IO请求后,将会通知线程IO操作完成了。
编译和链接有什么不同?(如外部符号的处理)
- 编译生成的是目标文件(object *.o);
- 编译过程中对于外部符号不做任何解释和处理。外部符号对应的就是“符号”
- 链接生成的是可执行程序
- 链接将会解释和处理外部符号。外部符号对应的是地址
驱动中操作物理绝对地址为什么要先ioremap?
因为内核没有办法直接访问物理内存地址,必须先通过ioremap获得对应的虚拟地址。内核空间和用户空间一般通过系统调用进行通信。
嵌入式设备,为加快启动速度,可以做哪些方面的优化?
linux默认的安装内核相当庞大,为了保证系统的兼容性和灵活性,支持热插拔操作,内核启动时要进行大量的硬件检测和初始化工作,而嵌入式的硬件都是固定的,只需要选择需要的硬件驱动就可以,不需要全部的硬件驱动都检测;因此可以进行适当的裁剪内核达到缩小启动linux系统的目的;同时可以统计驱动模块的耗时时间,对耗时较长的模块驱动加以分析,优化;
嵌入式linux中tty设备驱动的体系结构?
Linux内核中tty的层次结构包含tty核心、tty线路规程和tty驱动;
tty设备发送数据的流程为:tty核心从一个用户获取将要发送给一个tty设备的数据,tty核心将数据传递给tty线路规程驱动,接着数据被传递到tty驱动,tty驱动将数据转换为可以发送给硬件的格式。
接收数据的流程为: 从tty硬件接收到的数据向上交给tty驱动,进入tty线路规程驱动,再进入 tty 核心,在这里它被一个用户获取。尽管大多数时候tty核心和tty之间的数据传输会经历tty线路规程的转换,但是tty驱动与tty核心之间也可以直接传输数据。