持续更新版本 嵌入式工程师常见面试题

前言:鄙人于学堂求学十余载,终是要踏足江湖求一寸安身处!以前都忙着学习新东西以及做项目,现如今也需要面对找工作的压力 。此篇博客是作者准备的嵌入式工程师常见的面试题目汇总,其答案包含网络搜索和作者自己感悟总结的,可能存在问题,如有大的纰漏希望诸位前辈矫正!当然,也希望该博客可以帮助同样求职的你,(此篇博客将保持常年更新)!
第一章:进程线程的基本概念
1、什么是进程(),线程(),有什么区别?
进程和线程都是操作系统中的基本概念,以下是它们的定义和区别:
进程():
进程是操作系统中分配资源和调度的基本单位 。一个程序至少要开启一个进程,进程是由进程控制块(PCB)、程序段、数据段三部分组成 。一个进程可以包含多个线程,这些线程共享进程的地址空间和资源,并且通过同步机制来协调对共享资源的访问 。
线程():
线程是进程的基本执行单元,是处理器调度的最小单位 。一个进程中的每个线程都有自己的线程控制块(TCB)、指令指针(IP)、栈和寄存器组 。线程的调度由操作系统负责,当一个线程完成了一次调度后,它将返回自己的进程空间,从而执行该进程的其他线程 。
以下是进程和线程的区别:
地址空间:
进程的地址空间是独立的,而线程的地址空间是进程的一部分 。这意味着,进程之间的地址空间是相互独立的,而同一进程内的线程之间可以共享数据和内存 。
资源拥有:
进程拥有独立的资源,如内存、文件、I/O等,而同一进程内的线程之间可以共享这些资源 。这种共享可以通过同步机制来协调,以确保多个线程对共享资源的访问不会发生冲突 。
任务执行:
进程是独立的任务执行单元,而线程是在进程内的任务执行单元 。一个进程可以有多个线程,但一个线程只能属于一个进程 。
崩溃风险:
当一个进程的某个线程崩溃时,整个进程都会受到影响,因为其他线程也共享了该进程的地址空间和资源 。相反,多个进程之间的相互独立性更高,一个进程的崩溃不会影响其他进程 。
2、多进程(Multi-)、多线程(Multi-)的优缺点?
多进程和多线程在操作系统中都具有其优缺点 。以下是一些主要的优缺点:
多进程的优点:
独立性强:每个进程都有自己的地址空间和资源,进程之间相互独立,一个进程的崩溃不会影响其他进程 。资源隔离:由于每个进程都有自己的资源,不同进程之间的资源不会相互干扰,这使得多进程在资源管理方面更加稳定和安全 。
多进程的缺点:
资源开销大:每个进程都需要分配独立的资源,包括内存、文件等,这使得系统需要为每个进程分配不同的资源,造成了资源开销较大的问题 。上下文切换:当多个进程同时运行时,处理器需要频繁地进行上下文切换,即保存和恢复进程的状态,这会带来一定的性能开销 。
多线程的优点:
资源共享:同一进程内的线程可以共享数据和内存,这使得线程之间的协作更加高效 。效率高:由于线程之间共享地址空间和资源,使得多线程在执行时可以更快地访问共享数据,提高了执行效率 。调度方便:操作系统可以方便地对同一进程内的线程进行调度,使得线程之间的切换更加迅速 。
多线程的缺点:
同步问题:由于线程之间共享数据和资源,因此需要引入同步机制来确保线程之间的访问不会发生冲突 。然而,同步机制的实现可能会带来额外的开销和复杂性 。调度开销:尽管多线程的调度比多进程更高效,但仍然存在调度开销的问题 。当线程数量较多时,调度开销可能会对系统性能产生一定的影响 。性能限制:当多个线程同时运行时,由于共享资源的限制,系统的性能可能会受到限制 。例如,当某个线程被阻塞时,其他线程的执行也会受到影响 。