目录
一、概述
二、C语言
三、数据结构
四、IO进程
五、网络
六、ARM体系结构和接口技术
七、系统移植
八、内核驱动
一、概述
我再报班之前学过51和32,不过都是自学的。报班开始先从应用层入手的,C语言和数据结构。只要是个IT专业的大学这都是必学课程。之后学习了一些Linux中好用的工具和shell命令。还有makefile。然后学习了内核的执行单位,进程线程。线程是Linux借助C库实现的。本身没有这个机制。其实它本身就是C和汇编写的说它有这个机制我感觉也没啥毛病。然后还有文件的操作IO操作。一些进程线程间的通信机制。有名管道、无名管道、信号、信号量、socket、共享内存、消息队列一共七种通信机制。
然后又学习了网络编程,以TCP/IP和UDP/IP为基础的通信协议。进程间的同步互斥机制、之后又进行了裸机开发。感觉除了分配CPU的时候其它机制还没32难度大呢。之后是bootloader最后又学了驱动,向下操作硬件。向上提供接口。
二、C语言
注意几个点
运算符的优先级口诀
这几个关键字很重要,面试和笔试会考很多,而且也会经常再项目中使用
静态变量被extern修饰也不能被其它文件的函数使用。
后面那个更常用
还有指针数组是个数组,数组指针是个指针,指针函数是个函数。函数指针是个指针。
然后面试还有一个常见问题就是计算结构体的大小。
define没有错误检测,只用再具体使用时才会发现。
typedef再声明结构时就会发现错误
三、数据结构
链表: 单链表、双链表、单向循环链表、双向循环链表
顺序表:
栈和队列
树
增删改查
这部分再面试时也会大量的考
这四个排序一定要能手敲
还有顺序查找和哈希查找也一定要能手敲出来
四、IO进程
应用层的缓冲区是开辟一片空间用于数据交换
流缓冲是直接刷新进内核
标准IO
这个FILE进行溯源发现它是一个结构体,里面有读写的buf
守护紧进程一般运行在极端环境下
共享内存和信号量经常同步使用。
exec可以了解一下fork的实现
五、网络
IPV4的根服务器全球有13台,美国自己就占了十台,其它三台再欧洲和日本。我们曾经申请拥有一台,但是被拒绝了,这么大的国家一台都没有显然是不合理的。
如果真的被美国关停网络可能会引起更大的混乱,甚至导致战争的彻底失败,对于寻求崛起的中国来说,随时被竞争对手卡着脖子,显然不符合国家利益,为此中国开始在互联网上做出了自己的努力。
为了防止美国关停我们的网络。一是拥有根镜像服务器,根镜像和根服务器的作用和功能几乎完全相同,甚至可以替代本地根服务器完成IP地址的解析工作。目前世界上总共拥有1100多个根镜像服务器,我国自己拥有10个,足以支撑起国内互联网的实用需求。
二是推动国际互联网进入IPV6时代,相比IPV4,IPV6的地址数量更为庞大,甚至能做到赋予全世界每一粒沙子一个独立的地址。IPV6最初是美国推出的全新技术架构,我国却在此基础上推动了打破根服务器垄断局面的雪人计划,确保国际互联网能够实现多边共治,而非掌握在一国手里。
2017年11月28日,由下一代互联网国家工程中心牵头发起的“雪人计划”已在全球完成25台IPv6(互联网协议第六版)根服务器架设,中国部署了其中的4台,由1台主根服务器和3台辅根服务器组成,打破了中国过去没有根服务器的困境。
ping就是ICMP协议
现在主流的协议大公司都在用epoll可以再1G的内存空间监听几十万个客户端。利用红黑树加链表来实现的.
六、ARM体系结构和接口技术
PC是通用计算机系统,所以不属于嵌入式。
嵌入式领域的五朵金花
这些设备现在已经没法分那么细致了,比如USB上插入一个带网口读卡器的拓展坞上面的USB又插了鼠标键盘,这是什么设备?
这块我前面写的还挺细的
可以看看前面的文章
七、系统移植
uboot是面试经常问的。面试驱动岗内核岗他会问你uboot而不是问你内核
这部分很难,而且对未来发展不是很有必要。但是你是芯片厂商开发bootloader的就不一样了。真的很牛。而且不会少挣的。
这些程序写的都挺好的,感兴趣可以追一下看看。
八、内核驱动
其实我没太明白这个问题。我记得当同一时刻多个任务访问这个设备文件的时候会产生竞态,有一些并发机制可以解决。
字符设备驱动基础(三)_宇努力学习的博客-CSDN博客
IIC面试时主要问两个方面
协议和驱动
协议上是怎么读写
驱动就是它程序编写的框架
MAssage