当前位置: 首页 > 科技观察

嵌入式笔试面试题系列(一)

时间:2023-03-19 17:38:49 科技观察

本系列将题型分门别类,重要的地方用星号标注,帮助大家打好基础。本文为嵌入式笔试面试高频话题一、进程和线程一、什么是进程和线程,有什么区别?进程是资源(CPU、内存等)分配的基本单位,线程是CPU调度分配的基本单位(程序执行的最小单位)。同时,如果CPU是单核,只有一个进程在执行,所谓并发执行也是顺序执行,但是因为切换速度太快,你以为这些进程是同步执行的。多核CPU可以同时执行多个进程。2、多进程和多线程的优缺点解释:一个进程由进程控制块、数据段和代码段组成。进程本身并不能运行程序,而是像容器一样,先创建一个主线程,并分配给主线程,该线程拥有一定的系统资源,此时可以在主线程中实现各种功能。当我们需要实现更复杂的功能时,可以在主线程中创建多个子线程,在同一个进程中创建多个线程,利用本进程所拥有的系统资源来协同完成某些功能。优缺点:1)一个进程的死亡不会影响其他进程,而一个线程的崩溃很可能会影响到它所在的整个进程。2)创建多进程的系统开销大于创建多线程。3)由于多进程通信需要跨越进程边界,不适合传输大量数据,适合传输小数据或密集数据。多线程不需要跨越进程边界,适用于线程间传输大量数据。并且多个线程可以在同一个进程中共享共享内存和变量。3、什么时候用进程,什么时候用线程1)创建和销毁经常使用的线程,因为创建进程的开销很大。2)大量数据传输需要使用线程,因为多线程切换速度快,不需要跨进程边界。3)安全稳定的工艺选择;快速和频繁的线程选择;4、多进程、多线程同步(通信)方式进程间通信:(1)命名管道/无名管道(2)信号(3)共享内存(4)消息队列(5)信号量(6)套接字线程通信(锁):(1)信号量(2)读写锁(3)条件变量(4)互斥锁(5)自旋锁5、进程线程状态转换图(1)就绪状态:进程已经获得所有除了CPU之外的必要资源,只等待CPU。系统将多个处于就绪状态的进程排入就绪队列。(2)执行状态:进程已经获得CPU,正在执行。在单处理器系统中,只有一个进程处于执行状态;在多处理器系统中,有多个进程处于执行状态。(3)阻塞状态:正在执行的进程由于某种原因暂时无法继续执行,于是放弃了处理器,处于挂起状态,即进程的执行被阻塞。(这种状态也称为等待状态或阻塞状态)通常会引起进程阻塞的典型事件有:请求I/O、申请缓冲区空间等。一般情况下,处于阻塞状态的进程会排成一个队列,有些系统还要根据不同的阻塞原因,将这些阻塞的集成安排到多个队列中。(1)就绪→执行就绪状态的进程。当进程调度器为其分配处理器时,进程从就绪状态变为执行状态。(2)执行→就绪处于执行状态的进程由于分配给它的一个时间片在其执行过程中已经用完,不得不放弃处理器,因此进程从执行状态变为就绪状态。(3)执行→阻塞当正在执行的进程因为等待某个事件发生而不能继续执行时,它从执行状态变为阻塞状态。(4)阻塞→就绪对于处于阻塞状态的进程,如果它正在等待的事件已经发生,则进程从阻塞状态变为就绪状态。6、父进程和子进程父进程调用fork()后,克隆一个子进程,子进程和父进程有相同的代码段、数据段和用户栈。谁先执行并不重要,是父进程还是子进程,这取决于CPU。所以我们一般设置父进程等待子进程执行完毕。7.解释什么是上下文切换?您可以有很多角度,包括进程上下文和中断上下文。进程上下文:当一个进程在执行时,CPU所有寄存器中的值,进程的状态,栈的内容,当内核需要切换到另一个进程时,需要保存所有的状态当前进程的,即保存当前进程的进程上下文,这样当再次执行该进程时,可以恢复切换时的状态,继续执行。中断上下文:由于触发信号,CPU中断当前进程并执行另一个程序。那么当前进程的所有资源都要保留,比如栈,指针。保存后转去执行中断处理程序,执行完quickread后返回,返回后恢复之前进程的资源,继续执行。这是中断上下文。