【经验贴】操作系统知识点汇总
前言
在这部分分享里面,我只会涉及各部分的考点,但是不会把答案放出来,有一些我遇到的感觉不错的题也会放上来。这么做一方面是我自己也没法保证自己的答案是完全正确的(之前就有过看一个面经,然后里面的答案是错误的,在面试的时候吃过亏);另一方面是希望大家能够自己去查找,在理解的基础上记忆才能记得更牢,而且能对整个原理有一个认知,而不是完完全全靠背答案,这样效果很差,而且经不起面试官深入地问。这里把大部分的要点都总结出来了,就算一点一点去查资料也能在一周左右的时间内复习完。对于过于基础的知识就不提了,只提一些比较不容易注意到的点和比较重要的点。这里提到的知识点都是考察率非常高的,希望大家能把这些知识点弄懂,于此同时也要不断去看其他人的笔经面经,从里面找到自己不会的知识点,不断丰富自己的知识库。
此经验贴只针对我个人情况总结的内容,没法帮到所有人,还请见谅!
投递嵌入式软件工程师,操作系统这部分的基础知识是肯定要会的,尽管你可能像我这样在大学阶段只用过单片机,并且没在上面跑过UCOS或者FreeRTOS之类的实时操作系统的话强烈建议要去学一下这方面的知识,因为尽管是投的嵌入式单片机的岗位,往往也是要求会实时操作系统的。所以建议可以去学一下FreeRTOS或者RT-Thread之类的实时操作系统,有时间的话最好能够在自己的项目中实践一下,时间不够的情况下就先把基础知识系统学一下。
其次就是Linux,尽管投的是嵌入式单片机岗位,但嵌入式在广泛的一个定义里,大家还是默认是以Linux为主,所以Linux的基础知识也要会,因为有些公司在笔试的时候就会涉及到,这方面的话主要是要理解一些理论知识,知道线程进程,知道一些基础的指令,最好可以在ubuntu上写一个代码出来gcc编译一下。会这些Linux相关内容基本上就可以让你在笔试阶段不那么吃亏,当然只会这些是不足以支撑你去找一个Linux岗位的工作的。
以下内容主要是根据我自己的实际情况,总结了一些FreeRTOS和Linux的内容,主要是概念层面的东西,操作系统方面的知识我也比较薄弱,没法帮到大家太多。
FreeRTOS
- RTOS背景知识
- 临界段代码保护
- 任务的四种状态
- 任务优先级
- 任务创建与删除
- 任务挂起与恢复
- 列表与列表项
- 队列
- 4种信号量
- 事件标志组
- 任务通知
- 空闲任务
Linux
基础shell命令
- ls 查看目录
- ls -a 显示目录所有文件及文件夹,包括隐藏文件,比如以.开头的
- cd 目录切换
- / 根目录
- ../ 返回上一层目录
- pwd 显示当前路径
- cat 查看文件内容
- touch 创建文件
- cp 文件拷贝
- rm 删除文件
- rm -rf 删除文件夹(比rmdir好用)
- mkdir 创建文件夹
- rmdir 删除文件夹
- mv 移动文件或用于重命名
- reboot 重启
- poweroff 关机
- sync 数据同步进磁盘
- find 查找文件
- grep 查找文件内容
- grep -i 区分大小写
- clear 清屏
- uname 系统信息查看命令
- ifconfig 显示网络配置信息
- su 切换用户命令
- sudo 切换用户身份命令
- man 系统帮助命令
- du 文件夹大小查看命令
- df 磁盘空间检查命令
- ps 查看当前系统进程
- top 进程实时运行状态查看命令
- file 文件类型查看命令
- chmod 修改文件权限
- 文件file1的访问权限为rw-r--r--,现要增加所有用户的执行权限和同组用户的权限
- chmod a+x g+w file1 u:所有者 g:所在组 o:其他组 a:所有人(u、g、o的总和)
- chmod 775 file1
- 文件file1的访问权限为rw-r--r--,现要增加所有用户的执行权限和同组用户的权限
- rmmod 卸载内核
- make 编译内核
- useradd 新增用户
- 解决死锁的基本方法?
- kmalloc、vmalloc、malloc的区别?
- 什么是进程?
- 什么是线程?
- 进程和线程的区别?
- 何时使用多进程?
- 何时使用多线程?
- 进程的五个状态?
- 进程间通信的方式有哪些?
- 线程间同步的方法?
- 如何确定当前线程是繁忙还是阻塞?
- 就绪状态的进程在等待什么?
- 怎么查看进程使用情况?
- 进程调度算法?
- 产生死锁的原因是什么?
- 死锁的4个必要条件?