操作系统面试题-2

常考面试题

  1. 说说IO设备输入输出的三种方式⭐⭐⭐

    1. 循环
    2. 中断
    3. DMA
  2. 说说中断流程⭐⭐⭐

    中断是指当出现需要时,CPU暂时停止当前进程的执行,转而执行处理新情况的中断处理程序。当执行完该中断处理程序后,则重新从刚才停下的位置继续当前进程的运行。

    为了区分不同的中断,每个设备有自己的中断号。系统有0-255一共256个中断。系统有一张中断向量表,用于存放256个中断的中断服务程序入口地址。每个入口地址对应一段代码,即中断服务程序。

  3. 说说嵌入式中断的流程⭐⭐⭐⭐

    IRQ中断和FIQ中断都属于ARM的异常模式。在ARM系统中,一旦有中断发生,不管是外部中断,还是内部中断,正在执行的程序都会停下来。接下来通常会按照如下步骤处理中断:

    1. 保存现场。保存当前的PC值到R14,寄存器R14常用作链接寄存器(LR,Link Register),当进入子程序时,常用来保存PC(Program Counter,程序计数器) 的返回值。保存PC值后,接着保存当前的程序运行状态到SPSR(Storage Program Status Register,程序状态备份寄存器)。

    2. 模式切换。根据发生的中断类型,进入IRQ模式或FIQ模式。

    3. 获取中断源。以异常向量表保存在低地址处为例,若是IRQ中断,则PC指针跳动0x18处(0x18:LDR PC, IRQ_ADDR);若是FIQ中断,则跳到0x1C处(0x1c:LDR PC, FIQ_ADDR)。IRQ和FIQ的异常向量地址处一般保存的是中断服务子程序的地址,所以接下来PC指针跳入中断服务子程序处理中断。

    4. 中断处理。

    5. 中断返回,恢复现场。当完成中断服务子程序后,将SPSR中保存的程序运行状态恢复到CPSR(Current Program Status Register,当前程序状态寄存器)中,R14中保存的被中断程序的地址恢复到PC中,继续执行被中断的程序。

  4. 说说ARM的七种模式⭐⭐⭐⭐

    模式 意义 模式 模式
    用户模式(usr,User Mode) ARM处理器正常的程序执行状态 非特权模式 普通模式
    快速中断模式(FIQ,Fast Interrupt Request Mode) 用于高速数据传输或通道处理。当触发快速中断时进入此模式 特权模式 异常模式
    外部中断模式(IRQ,Interrupt Request Mode) 用于通用的中断处理。当触发外部中断时进入此模式 特权模式 异常模式
    管理模式(svc,Supervisor Mode) 操作系统使用的保护模式。在系统复位或执行软件中断指令SWI时进入 特权模式 异常模式
    数据访问中止模式(abt,Abort Mode) 当数据或指令预取中止时进入该模式,可用于虚拟存储及存储保护 特权模式 异常模式
    系统模式(sys,System Mode) 运行具有特权的操作系统任务 特权模式 普通模式
    未定义指令中止模式(und,Undefined Mode) 当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真 特权模式 异常模式
  5. User模式和Supervisor模式有什么区别⭐⭐⭐

    用户模式user是用户程序的工作模式,它运行在操作系统的用户态,它没有权限去操作其它硬件资源,只能执行处理自己的数据,也不能切换到其它模式下,要想访问硬件资源或切换到其它模式只能通过软中断或产生异常

    管理模式Supervisor是CPU上电后默认模式,因此在该模式下主要用来做系统的初始化,软中断处理也在该模式下。当用户模式下的用户程序请求使用硬件资源时,通过软件中断进入该模式。相比与IRQ和FIQ通过硬件触发,Supervisor优先级最低,而且是通过软件触发。

  6. 说说软中断⭐⭐⭐

    Linux 将中断处理过程分成了两个阶段,也就是上半部和下半部

    • 上半部用来快速处理中断,它在中断禁止模式下运行,主要处理跟硬件紧密相关的或时间敏感的工作。(硬中断)

    • 下半部用来延迟处理上半部未完成的工作,通常以内核线程的方式运行。(软中断)

    比如:网卡接收到数据包后,会通过硬件中断的方式,通知内核有新的数据到了。这时,内核就应该调用中断处理程序来响应它。

    • 对上半部来说,既然是快速处理,其实就是要把网卡的数据读到内存中,然后更新一下硬件寄存器的状态(表示数据已经读好了),最后再发送一个软中断信号,通知下半部做进一步的处理。

    • 而下半部被软中断信号唤醒后,需要从内存中找到网络数据,再按照网络协议栈,对数据进行逐层解析和处理,直到把它送给应用程序。

    所以,这两个阶段你也可以这样理解:

    • 上半部直接处理硬件请求,也就是我们常说的硬中断,特点是快速执行;

    • 而下半部则是由内核触发,也就是我们常说的软中断,特点是延迟执行。

  7. 说说DMA⭐⭐⭐⭐

    1. 概念

      为I/O使用一种特殊的直接存储器访问(Direct Memory Access,DMA)芯片,它可以直接控制外围设备的数据流,而无需持续的CPU干预。这样效率就很高了,但对应成本就相对高些,因为DMA是由专门的硬件( DMA)控制。

    2. 使用场景

      DMA传送主要用于需要高速大批量数据传送的系统中,以提高数据的吞吐量。如磁盘存取、图像处理、高速数据采集系统、同步通信中的收/发信号等方面应用甚广。通常只有数据流量较大(kBps或者更高)的外设才需要支持DMA能力,这些应用方面典型的例子包括视频、音频和网络接口。

    3. 设置

      因为无需CPU干预,那么DMA要进行数据传输就必须有两个条件:数据从哪传(源地址),数据传到哪里去(目的地址)。通过软件设置,设置好源地址和目的地址。在一个重要的条件就是触发源是什么,就是说什么时候进行DMA数据传输呢?这叫触发信号。也可以通过软件编程设置具体时间,具体条件来触发DMA数据传输。

  8. Linux中查看进程运行状态的指令、查看内存使用情况的指令、tar解压文件的参数。⭐⭐⭐

    1. 查看进程运行状态的指令:ps命令。“ps -aux | grep PID”,用来查看某PID进程状态

    2. 查看内存使用情况的指令:free命令。“free -m”,命令查看内存使用情况。

    3. tar解压文件的参数

      五个命令中必选一个
           -c: 建立压缩档案
           -x:解压
           -t:查看内容
           -r:向压缩归档文件末尾追加文件
           -u:更新原压缩包中的文件
      这几个参数是可选的
           -z:有gzip属性的
           -j:有bz2属性的
           -Z:有compress属性的
           -v:显示所有过程
           -O:将

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

<p> - 本专刊适合于C/C++已经入门的学生或人士,有一定的编程基础。 - 本专刊适合于互联网C++软件开发、嵌入式软件求职的学生或人士。 - 本专刊囊括了C语言、C++、操作系统、计算机网络、嵌入式、算法与数据结构等一系列知识点的讲解,并且最后总结出了高频面试考点(附有答案)共近400道,知识点讲解全面。不仅如此,教程还讲解了简历制作、笔试面试准备、面试技巧等内容。 </p> <p> <br /> </p>

全部评论
嘿嘿,用过两个中断下半部解决方法,tasklet和workqueue
3 回复 分享
发布于 2021-04-13 10:06

相关推荐

2024-12-18 12:05
华东师范大学 golang
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务