嵌入式linux基础

1、内核模块命令:

  • 内核模块的查看命令:lsmod 列出模块名
  • 内核加载:insmod 完整路径
  • 内核模块的卸载:rmmod
  • 最建议使用的内核加载与卸载的方式:modprobe 模块名(加载) modprobe -r 模块名(卸载模块) (克服依赖问题)

2、linux系统命令

  • find: Linux find 命令用来在指定目录下查找文件
  • grep: Linux grep 命令用于查找文件里符合条件的字符串
  • cat : cat 命令用于连接文件并打印到标准输出设备上

3、对于堆、栈、队列描述

  • 队列空间缓冲由进程申请,栈的空间缓冲由OS分配
  • 堆的数据类型和队列相似
  • 队列先进先出,栈后进先出

4、可用于中断下半段处理的处理机制

  • tasklet
  • 工作队列
  • 软中断

5、关于链表,描述正确的选项

  • 在运行时可以动态添加

  • 物理空间不连续,空间开销更大

  • 可在任意节点位置插入元素

6、能在Linux内核态执行的是

缺页中断和时钟中断都属于中断,在内核态执行。进程调度属于系统调用,在内核态执行,命令解释程序属于命令接口,在用户态执行。

  • 缺页中断

  • 时钟中断

  • 进程调度

7、Linux驱动连接硬件与应用,根据你对驱动加载的理解,回答如下问题:

(1)insmod和modprobe都可以用来加载驱动模块,请描述这两者的差异。

(2)请给出三种以上Linux驱动模块加载失败的可能原因。

1->modprobe和insmod类似,都是用来动态加载驱动模块的,区别在于modprobe可以解决load module时的依赖关系,它是通过/lib/modules/#uname -r/modules.dep(.bb)文件来查找依赖关系的;而insmod不能解决依赖问题。

2->驱动程序本身不完全、驱动程序版本不对、之前卸载残留

8、设计或开发Linux操作系统的内核时,你会考虑哪些基本的管理模块,并描述其作用。

Linux内核的五大模块:进程调度模块、内存管理模块、文件系统模块、进程间通信模块、网络接口模块。

进程调度模块:用来负责控制进程对CPU 资源的使用。所采取的调度策略是各进程能够公平合理地访问CPU,同时保证内核能及时地执行硬件操作;

内存管理模块:用于确保所有进程能够安全地共享机器主内存区,同时,内存管理模块还支持虚拟内存管理方式,使得Linux 支持进程使用比实际内存空间更多的内存容量。并可以利用文件系统,对暂时不用的内存数据块交换到外部存储设备上去,当需要时再交换回来;

文件系统模块:用于支持对外部设备的驱动和存储。虚拟文件系统模块通过向所有的外部存储设备提供一个通用的文件接口,隐藏了各种硬件设备的不同细节。从而提供并支持与其它操作系统兼容的多种文件系统格式;

进程间通信模块:用于支持多种进程间的信息交换方式;

网络接口模块:提供对多种网络通信标准的访问并支持许多网络硬件。

你可能感兴趣的:(嵌入式工程师指引)