1.熟悉交叉编译的原理,熟练构造/使用交叉编译工具链
2、熟悉Linux (x86,arm)的内核裁减,配置,编译和部署
3、熟悉Linux根文件系统的组成,并能够配置,编译,使用buzybox等工具按照实际要求裁减,构造根文件系统
4、熟练运用C/C++语言进行Linux下应用程序编程
5、熟悉Linux下的多进程/多线程编程,理解进程/线程间同步/通信的概念和方法
6、了解Linux下内核模块的编程的原理和方法,能够修改/添加内核中的驱动程序
7、了解Uboot / GRUB / LILO等bootloader的配置,编译和部署
8、了解Socket编程
懂硬件的一些原理,至少能看懂原理图,会设计原理图加分;
▪ PCB设计软件Altium Designer,PADS等;
▪ 会结构设计,会焊板,交付专业制板公司制板
1、进程与线程区别
2、线程同步的方式:互斥锁、自旋锁、读写锁、条件变量
3、互斥锁与自旋锁的底层区别
4、孤儿进程与僵尸进程
5、死锁及避免
6、多线程与多进程比较
7、进程间通信:PIPE、FIFO、消息队列、信号量、共享内存、socket
8、管道与消息队列对比
9、fork进程的底层:读时共享,写时复制
10、线程上下文切换的流程
11、进程上下文切换的流程
12、进程的调度算法
13、阻塞IO与非阻塞IO
14、同步与异步的概念
15、静态链接与动态链接的过程
16、虚拟内存概念(非常重要)
17、MMU地址翻译的具体流程
18、缺页处理过程
19、缺页置换算法:最久未使用算法、先进先出算法、最佳置换算法