- 操作系统的有哪些基本功能?嵌入式操作系统的基本功能包括:任务管理,内存管理,中断管理,任务通信和同步功能。2. RTOS(实时操作系统)与一般操作系统有何区别?RTOS强调确定性的响应时间,确保任务在规定时间内完成,而一般操作系统更关注吞吐量和多任务处理。最主要在于一个实时性功能,实时性能够确定性的调度和响应时间,确保关键任务按照时间执行。3. 解释硬实时系统和软实时系统的区别。「硬实时系统」:任务必须在严格的时间限制内完成,任何延迟都是不可接受的。例如,汽车安全气囊系统。「软实时系统」:任务应尽量在时间限制内完成,但偶尔的延迟是可以容忍的。例如,多媒体播放系统。4. 什么是嵌入式系统中的内核?它有哪些主要组件?嵌入式的内核是嵌入式系统的内心,负责管理硬件资源和软件资源,主要的组件包括:任务调度器,中断处理,内存但愿管理,设备驱动,任务通信同步机制。5. 什么是中断?中断处理程序如何工作?当硬件设备或软件产生中断信号时,处理器会暂停当前执行的任务,转而执行中断处理程序,完成特定任务后再返回原任务的执行。中断处理的流程通常可以分为以下几个步骤:「保存现场」:当中断发生时,CPU会首先保存当前正在执行任务的现场,包括程序计数器、寄存器等。「确定中断源」:CPU会根据中断向量表确定中断源。中断向量表是一张表,它将每个中断源与相应的中断处理程序联系起来。「执行中断处理程序」:CPU会跳转到相应的中断处理程序并执行它。「恢复现场」:中断处理程序执行完毕之后,CPU会恢复先前保存的现场,并继续执行中断发生前被中断的任务。6. 描述任务优先级和优先级反转现象。任务优先级是指高优先级任务优先执行,当发现有更高级的任务需要执行,系统将会有优先调度高优先级任务。优先级反转现象:是指低优先级的任务阻塞高于高优先级的任务,导致资源的占用情况。可以考虑:优先级继承和优先级天花板方式。「优先级继承」:低优先级任务继承高优先级任务的优先级,直到释放资源。「优先级天花板协议」:设置共享资源的优先级为系统中最高优先级。7. 解释嵌入式操作系统中的互斥锁和信号量。「互斥锁」(Mutex):用于保护共享资源,确保一次只有一个任务访问,避免数据竞争。「信号量」(Semaphore):用于任务间同步和资源管理。分为计数信号量(管理多个资源)和二值信号量(类似互斥锁)。其实信号量的功能可以充当互斥锁的作用。8. 什么是任务切换?任务切换时会发生什么?「任务切换」是操作系统将处理器从一个任务切换到另一个任务的过程。发生:保持当前任务上下文 --> 选择下一个任务 --> 恢复新任务上下文 --> 执行新任务9. 描述嵌入式操作系统中的定时器及其应用。定时器用于产生中断,主要用于定时任务,时间延时,超时处理等。10. 解释嵌入式系统中的死锁及其预防方法。死锁的原因是资源的没有释放,需要资源的一直处于等待。预防方法:「资源一次性分配」:进程在请求资源时,必须一次性请求所有需要的资源,如果不能一次性获得所有资源,则不分配任何资源。「使用银行家算法」:银行家算法是一种预防死锁的动态分配算法,它可以保证系统在任何情况下都不会发生死锁。11. 解释内存分配中的碎片问题及其解决方法。「碎片问题」:内存分配后的空闲块无法有效利用,分为内碎片和外碎片。解决办法:「内存紧缩」:移动内存块,合并碎片。「内存池」:使用固定大小的内存块,减少碎片。12. 描述嵌入式操作系统中的文件系统。FAT 文件系统,EXT 文件系统,JFFS2文件系统,NAND文件系统,YAFFS文件系统,NTFS文件系统。使用哪种文件系统,需要考虑当前的存储介质是什么,是EMMC,NAND Flash 还是其他什么介质。另外需要考虑操作系统是什么,文件系统性能。13. 描述任务通信的几种常用方法。「共享内存」:共享内存是多个任务之间共享一块内存空间的一种方式。任务可以通过读写共享内存空间来进行通信。「消息队列」:消息队列是一种将消息组织成队列的一种方式。任务可以通过向消息队列发送和接收消息来进行通信。「信号量」:信号量是一种用于控制任务访问共享资源的一种机制。任务可以通过获取和释放信号量来实现同步。「管道」:管道是一种用于一对一任务通信的一种方式。任务可以通过向管道写入和读出数据来进行通信。「事件」:事件是一种用于通知任务发生特定事件的一种机制。任务可以通过等待事件来实现同步。14. 什么是嵌入式系统的引导加载程序?它的作用是什么?引导加载程序(BootLoader)是嵌入式系统启动过程中运行的第一段程序。它负责将操作系统内核和其他应用程序从存储设备加载到内存中,并启动操作系统。主要作用:「加载操作系统内核」:引导加载程序会将操作系统内核从存储设备加载到内存中。「启动操作系统」:引导加载程序会启动操作系统内核,使操作系统开始运行。「配置硬件」:引导加载程序可能会配置一些硬件,例如设置时钟、初始化GPIO等。「提供诊断功能」:引导加载程序通常提供一些诊断功能,例如显示错误信息、测试硬件等。15. 说一说Linux 启动过程?「硬件上电和硬件自检」:硬件上电后执行固化在ROM的代码,主要运行硬件自检(POST),检测和初始化基本硬件,识别启动设备,根据启动顺序加载引导程序。「引导加载程序(Bootloader)」:负责将Linux内核从启动设备加载到内存,并将控制权转交给内核。这个阶段也是我们熟知的uboot 的一部分。主要分为两个阶段,第一阶段引导加载:读取引导记录,加载并执行第二段引导加载程序。第二阶段引导加载:允许用户选择不同的内核或启动选项,设置内核相关参数,将控制器交给内核。「内核初始化」:初始化处理器的功能,内存管理单元,设备驱动初始化,挂载临时跟文件系统。「切换根文件系统」:调用init进程,准备根文件系统「初始化用户空间执行相应进程」:执行初始化脚本/etc/init/ect/rc.d启动其他服务。16. 操作系统中的线程和进程?两者有何区别?「进程」是操作系统进行资源分配的基本单位,是运行在计算机上的一个程序的活动。进程拥有独立的地址空间、堆栈、寄存器、程序计数器等资源,可以独立运行,相互之间是隔离的。「线程」是进程中的一个执行单元,是进程中一个连续执行的代码片段。线程共享进程的地址空间、堆栈、寄存器等资源,可以并行执行,提高程序的运行效率。「线程与进程的区别」进程是资源分配的最小单位,线程是程序执行的最小单位。进程拥有独立的内存空间和系统资源,线程共享父进程的所有资源。特征进程线程资源拥有独立的地址空间、堆栈、寄存器等资源共享进程的地址空间、堆栈、寄存器等资源调度由操作系统调度由进程调度开销创建和销毁开销较大创建和销毁开销较小并发性支持多进程并发,但进程间通信开销较大支持多线程并发,线程间通信开销较小18. 嵌入式系统中的优先级调度算法?「优先级调度算法」根据任务优先级分配处理器时间。常见算法包括:「固定优先级调度」:每个任务有固定优先级,高优先级任务先执行。「动态优先级调度」:任务优先级根据系统状态动态调整。「抢占式调度」:高优先级任务可以打断低优先级任务的执行。「非抢占式调度」:任务执行完毕后再切换到其他任务。19. 解释嵌入式操作系统中的临界区及其保护方法。「临界区」是访问共享资源的代码段,需要保护以防止数据竞争和不一致。主要保护方法:在执行该代码段的过程中,考虑禁止中断,添加互斥锁,信号量控制等方式。20. 什么是嵌入式系统中的DMA?它如何工作?「DMA」(Direct Memory Access)允许设备在不占用CPU的情况下直接读写内存。工作流程:「设置DMA控制器」:CPU配置DMA控制器,包括源地址、目标地址、传输长度等。「启动DMA传输」:DMA控制器启动传输,设备直接与内存交换数据。「传输完成中断」:传输完成后,DMA控制器触发中断通知CPU。最大优点是传输过程中,无需CPU的参与,提高CPU利用率,降低功耗相关。21. 解释嵌入式操作系统中的功耗管理。对于嵌入式系统的功耗管理,有休眠模式:在空闲状态下进入低功耗模式。外设控制:关闭不适用的外设或者降低其工作频率动态电压和频率调节(DVFS):根据任务负载调整处理器电压和频率,降低能耗。22. 描述嵌入式系统中调试和故障排除的方法。「串口调试」:通过串口输出调试信息,简单有效。「日志记录」:记录系统运行日志,分析故障原因。「断点调试」:在代码中设置断点,逐步检查程序执行状态。「JTAG调试」:使用JTAG接口进行硬件级调试,支持断点、单步执行等功能。23. 解释嵌入式系统中的上下文切换及其性能影响。「上下文切换」是指操作系统在多个任务间切换处理器的控制权。上下文切换涉及保存当前任务的CPU状态(寄存器、堆栈指针等),并恢复新任务的状态。频繁的上下文切换会对系统个的性能下降,增加延时。24. 描述嵌入式系统中常用的I/O设备管理方法。「轮询」:定期检查设备状态,适用于简单设备,效率低。「中断驱动」:设备状态变化时触发中断,处理器响应中断进行处理,效率高。「DMA(直接内存访问)」:设备直接与内存交换数据,不需要CPU参与,适用于大数据传输,效率最高。25. 嵌入式操作系统的安全性考虑。「数据加密」:通信过程中的数据加密,存储数据加密;「访问控制」:限制对关键资源和功能的访问。「安全引导」:确保系统从可信源启动,防止篡改。「固件更新机制」:安全可靠地更新系统软件,防止恶意代码注入。26. 解释什么是内核态和用户态,为什么需要区分这两种状态?「内核态」:操作系统内核执行代码的状态,拥有对所有硬件和资源的完全访问权限。「用户态」:用户应用程序执行代码的状态,权限受限,不能直接访问硬件和敏感资源。原因:增加安全性,实现多任务和资源保护,提高系统稳定性。27. 什么是僵尸进程和孤儿进程?如何处理它们?如何查看?「僵尸进程」:子进程已终止,但其父进程尚未回收子进程的资源(通过wait系统调用),导致进程表中残留的进程条目。「孤儿进程」:父进程先于子进程终止,子进程成为孤儿进程。孤儿进程会被init进程(PID=1)收养并回收资源。「处理方法」:「僵尸进程」:父进程应使用wait或waitpid回收子进程资源。「孤儿进程」:不需要特殊处理,由操作系统自动管理。查看方法:命令:topimage-20240703134356785zombie 值表示僵尸进程的数量,为 0 则代表没有僵尸进程。进程状态为Z 表示是僵尸进程,图中并没有发现僵尸进程。28. 什么是时间片轮转(Round Robin)调度?它的优缺点是什么?「时间片轮转调度」:是一个简单公平的CPU调度算法,每个进程按顺序分配一个固定的时间片,在时间片到期时切换到下一个进程。「优点」:简单易实现。公平分配CPU时间,避免饥饿现象。「缺点」:时间片大小难以确定,过大降低响应速度,过小增加上下文切换开销。适用于交互性强的系统,对CPU密集型任务效率较低。29. 解释什么是操作系统的单用户和多用户模式?「单用户模式」:操作系统设计用于单个用户独占使用系统资源,如早期的MS-DOS。「多用户模式」:操作系统允许多个用户同时或交替使用系统资源,如UNIX和Linux。每个用户有自己的账户和权限,系统资源可以被多个用户共享和保护。30. 进程间通信,线程间通信说一说?进程间通信:管道,消息队列,共享内存,信号量,套接字;线程间通信:管道,消息队列,共享内存,互斥锁,读写锁,条件变量,信号量
秋招面试,八股救急——操作系统
2401_868534782026-06-20 13:18