嵌入式面试题合集.三
- 1.动态库和静态库的区别,后缀格式,以及函数的相对地址区
- 2. 说说你了解的进程调度算法
- 3.SPI是什么?有几条线?几种模式?
- 4.常见的操作系统进程调度策略有哪些?
- 5.逻辑地址、线性地址、物理地址、总线地址、虚拟地址的区别?
- 6.用户空间与内核空间有哪些通信方式?
- 7.怎样预防死锁?
- 8.硬链接与软链接的区别?
- 9.Linux系统的挂起、待机、休眠?
- 10.TCP、UDP 的区别?
- 11.简述TCP三次握手的过程。
- 12.TCP为什么需要三次握手,第三次握手去掉行不行?
- 13.简述TCP四次挥手的过程。
- 14.为什么TCP建立连接是三次握手,而关闭连接却是四次挥手?
- 15.进程和线程的区别?
- 16.C语言中,static关键字的作用?
- 17.堆和栈得区别?
- 18.进程间通信方法
- 19.程序中的内存分配方法
- 20.c语言volatile作用和用法
1.动态库和静态库的区别,后缀格式,以及函数的相对地址区
解题思路
区别 命名方式不同: 静态库libxxx.a:库名前加“lib”,后缀用“.a”,“xxx”为静态库名。动态库 libxxx.so:库名前加“lib”,后缀变为“.so”。链接时间不同: 静态库的代码是在编译过程中被载入程序中。动态库的代码是当程序运行到相关函数才调用动态库的相应函数 链接方式不同: 静态库的链接是将整个函数库的所有数据在编译时都整合进了目标代码。动态库的链接是程序执行到哪个函数链接哪个函数的库。(用哪个链接哪个)
优缺点? 静态库: 优点是,在编译后的执行程序不再需要外部的函数库支持,运行速度相对快些; 缺点是,如果所使用的静态库发生更新改变,你的程序必须重新编译。动态库 : 优点是,动态库的改变并不影响你的程序,所以动态函数库升级比较方便; 缺点是,因为函数库并没有整合进程序,所以程序的运行环境必须提供相应的库。
2. 说说你了解的进程调度算法
解题思路
不同环境的调度算法目标不同,因此需要针对不同环境来讨论调度算法。批处理系统 批处理系统没有太多的用户操作,在该系统中,调度算法目标是保证吞吐量和周转时间(从提交到终止的时间)。先来先服务 第一来-serverd(FCFS) 按照请求的顺序进行调度。有利于长作业,但不利于短作业,因为短作业必须一直等待前面的长作业执行完毕才能执行,而长作业又需要执行很长时间,造成了短作业等待时间过长。短作业优先 shortest job first(SJF) 按估计运行时间最短的顺序进行调度。长作业有可能会饿死,处于一直等待短作业执行完毕的状态。因为如果一直有短作业到来,那么长作业永远得不到调度。最短剩余时间优先 剩余最短时间 next(SRTN) 按估计剩余时间最短的顺序进行调度。交互式系统 交互式系统有大量的用户交互操作,在该系统中调度算法的目标是快速地进行响应。时间片轮转 将所有就绪进程按FCFS的原则排成一个队列,每次调度时,把CPU时间分配给队首进程,该进程可以执行一个时间片。当时间片用完时,由计时器发出时钟中断,调度程序便停止该进程的执行,并将它送往就绪队列的末尾,同时继续把 CPU 时间分配给队首的进程。时间片轮转算法的效率和时间片的大小有很大关系:因为进程切换都要保存进程的信息并且载入新进程的信息,如果时间片太小,会导致进程切换得太频繁,在进程切换上就会花过多时间。而如果时间片过长,那么实时性就不能得到保证。优先级调度 为每个进程分配一个优先级,按优先级进行调度。为了防止低优先级的进程永远等不到调度,可以随着时间的推移增加等待进程的优先级。多级反馈队列 一个进程需要执行 100 个时间片,如果采用时间片轮转调度算法,那么需要交换 100 次。多级队列是为这种需要连续执行多个时间片的进程考虑,它设置了多个队列,每个队列时间片大小都不同,例如 1,2,4,8,…。进程在第一个队列没执行完,就会被移到下一个队列。这种方式下,之前的进程只需要交换 7 次。每个队列优先权也不同

本文档提供了嵌入式领域的面试题目解析,涵盖了动态库与静态库的区别、进程调度算法、SPI通信、TCP/IP协议等内容,旨在帮助读者理解嵌入式系统的关键概念和技术。
最低0.47元/天 解锁文章
7564

被折叠的 条评论
为什么被折叠?



