哈喽,大家好。明天更新一篇驱动口试面试总结。因为篇幅无限,本文只给出了问题,并没有给出答案。我把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版本获取形式在公众号。