嵌入式软件工程师笔试面试指南-操作系统
作者:互联网
哈喽,大家好。今天更新一篇驱动笔试面试总结。由于篇幅有限,本文只给出了问题,并没有给出答案。我把PDF版本,放在了百度网盘群组中,出现问题,可以和我及时反馈。
大家可以在我的主页找到我的联系方式,加我好友通过后,发送【资料群】给我,会自动拉进群里。本文内容已同步更新在github,点击阅读原文可以直达github。
操作系统
进程和线程
什么是进程?什么是线程?
进程和线程有什么区别?
何时使用多进程,何时使用多线程?
进程有几种状态?画一下进程状态转换图?
创建进程有哪几种方式?
进程间通信方式?有什么优缺点?
线程间同步方法有哪些?
什么是内核线程和用户线程?
内核线程和用户线程的区别?
内核线程和用户线程有什么优缺点?
什么是僵尸进程,孤儿进程,守护进程?
僵尸进程有什么危害?
如何清理僵尸进程?
如何唤醒被阻塞的socket线程?
如何确定当前线程是繁忙还是阻塞?
空闲的进程和阻塞的进程状态会不会在唤醒的时候误判?
请问就绪状态的进程在等待什么?
如何实现线程池?
请你回答一下fork和vfork的区别
server端监听端口,但还没有客户端连接进来,此时进程处于什么状态?
堆和栈
什么是代码段,数据段,bss段,堆,栈?
为什么堆的空间是不连续的?
什么是用户栈和内核栈?
用户栈和内核栈,为什么不能共用一个栈?
线程是否具有相同的堆栈?
并发和互斥
驱动里面为什么要有并发、互斥的控制?如何实现?讲个例子?
自旋锁是什么?信号量是什么?二者有何异同?
自旋锁和信号量可以睡眠吗?为什么?
自旋锁和信号量可以用于中断中吗?
读写锁是什么?
产生死锁的原因是什么?
死锁的4个必要条件是什么?
死锁的处理方式有哪些?
如何避免死锁?
请问单核机器上写多线程程序,是否需要考虑加锁,为什么?
内存
在1G内存的计算机中能否malloc(1.2G)?为什么?
malloc能申请多大的空间?
内存管理有哪几种方式?
什么是虚拟内存?
解释下内存碎片,内碎片,外碎片?
解释下虚拟地址、逻辑地址、线性地址、物理地址?
请问虚拟内存和物理内存怎么对应?
虚拟内存置换方式是怎么样的?
给你一个类,里面有static,virtual之类的,来说一说这个类的内存分布?
假设临界区资源释放,如何保证只让一个线程获得临界区资源而不是都获得?
操作系统中的缺页中断是什么?
OS缺页置换算法如何实现的?
系统调用是什么,你用过哪些系统调用,和库函数有什么区别?
为什么要有page cache,操作系统怎么设计的page cache?
上下文
上下文有哪些?怎么理解?
为什么会有上下文这种概念?
什么情况下进行用户态到内核态的切换?
中断上下文代码中有哪些注意事项?
请问线程需要保存哪些上下文,SP、PC、EAX这些寄存器是干嘛用的?
结语
如果觉得本篇文章对你有帮助,在【收藏】的时候,可以【点赞】支持下作者,这个对我真的很重要!
你的每一个赞我都当成了喜欢,谢谢各位兄弟姐妹啦~
关于作者
本硕双非,参加了2020年秋招和2021年的春招,投递岗位是嵌入式软件(驱动)相关。总共收获Oppo,小米,海康威视,兆易创新,全志科技等十余家公司的offer。
我把自己的秋招,春招历程详细记录了下来,同时,把自己秋招过程总结的笔试面试资料分享了出来,即嵌入式软件工程师笔试面试指南。关注我的知乎专栏即可获取。PDF版本获取方式在公众号。
标签:操作系统,什么,笔试,死锁,嵌入式软件,线程,内核,进程,内存 来源: https://blog.51cto.com/u_11934066/2786538