操作系统面试高频( 输入输出系统)

 输入输出系统

1 输入输出系统基本功能⭐⭐⭐⭐

输入输出(简称I/O)系统是计算机系统中非常重要的一个部分,主要负责连接计算机和外设之间的数据传输

I/O系统的基本功能如下:

1 设备管理:I/O系统需要与硬件设备进行交互,监听设备请求和响应,控制设备的操作,以及对不同设备进行管理。

2 缓存管理:I/O系统需要从外设读取数据,并将其复制到内存中以供其他系统使用。因此,I/O系统需要具备缓存管理能力,以管理内存中存储的数据并提高数据访问效率。

3 错误处理:I/O系统需要对不同的输入输出错误进行处理,例如设备故障、数据传输错误等等。对于这些情况,I/O系统需要进行相应的错误处理,并将错误信息反馈给其他部分。

4 中断处理:当外设传输数据时,I/O系统需要不间断地与设备进行通信。在此过程中,如有需要,设备会向I/O系统发送中断请求。I/O系统需要及时响应中断请求,并执行相应的操作。

5 设备驱动程序:I/O系统需要与设备驱动程序进行交互,以实现硬件和软件之间的协作。设备驱动程序是一种软件程序,能够帮助操作系统与硬件设备进行通信。

综上所述,I/O系统是一个非常重要的部分,它承担了数据传输与处理的重要职责。通过合理地管理设备和数据,以及对错误、中断和驱动程序进行处理,I/O系统能够提高计算机系统的可靠性和性能。

2 输入输出系统层次结构和模型⭐⭐⭐⭐

输入输出(I/O)系统是计算机系统的重要组成部分,它主要负责计算机与外部设备之间的数据传输和管理。I/O系统的层次结构包括以下五个层次

  1. 用户层:用户层是最上层的I/O接口,它提供了与应用程序交互的用户接口。用户层的作用是将操作系统层的I/O操作封装成更高层次的操作接口,便于应用程序的调用和使用。
  2. 设备独立层(DDI):设备独立层是在操作系统和设备驱动程序之间添加的中间层,它主要负责处理设备无关的I/O请求。DDI层允许驱动程序与操作系统进行交互,同时保证了应用程序对设备的访问不受底层硬件设备的限制。
  3. 驱动程序层:驱动程序层是操作系统和硬件设备之间的接口层。驱动程序层为不同的硬件设备编写了特定的驱动程序,以便操作系统能够识别和管理这些设备。驱动程序还负责在硬件设备和I/O系统之间进行数据传输和管理。
  4. 控制器层:控制器层是硬件和驱动程序之间的接口层。控制器层是硬件设备的实际接口,它能够与驱动程序交互,并通过驱动程序将数据发送给操作系统。控制器层还能够读取来自操作系统的命令,以便响应不同的I/O请求。
  5. 设备层:设备层是硬件设备的最底层,它将操作系统的I/O请求转换成实际的数据传输指令。设备层将数据传输给内存或外部设备,以便在计算机系统中进行处理。

I/O系统的模型包括以下几种:

  1. 块I/O模型:块I/O模型将数据分块传输,它的特点是数据传输量大、传输速度较快。
  2. 字符I/O模型:字符I/O模型将数据一次一个字符地传输,它的特点是数据传输量小、传输速度较慢。
  3. 管道/消息模型:管道/消息模型是一种流式I/O模型,通过管道传输数据。它的特点是数据传输与处理的同步性较强,但是由于数据处理需要等待数据传输的完成,导致传输速度较慢。
  4. 同步I/O模型:同步I/O模型是一种数据传输和请求处理一一对应的I/O模型。它的特点是传输完整数据后,再进行数据处理。同步I/O模型适用于需要对数据进行完整性验证的场景。
  5. 异步I/O模型:异步I/O模型是一种请求提交和数据传输处理完成异步进行的I/O模型。它的特点是在数据传输过程中,可以同时进行数据处理,提高了I/O的效率和吞吐量。

3 中断和异常⭐⭐⭐⭐⭐

中断和异常是计算机系统中两类重要的异步事件,它们的区别主要体现在以下方面:

1. 触发原因

  • 中断:由外部事件(如 I/O 设备完成操作、定时器溢出、硬件故障等)触发,属于异步事件,与当前程序执行流程无关。
  • 异常:由程序自身执行过程中的错误或特殊指令(如除以零、非法内存访问、断点指令等)触发,属于同步事件,与当前程序执行流程直接相关。

2. 处理机制

  • 中断:由硬件检测到外部事件后,通过中断控制器向 CPU 发送信号,CPU 暂停当前任务,跳转到中断处理程序执行。
  • 异常:由CPU 执行指令时检测到错误或特殊情况(如指令译码错误),直接触发异常处理流程,跳转到异常处理程序执行。

3. 优先级

  • 中断:通常具有可配置的优先级,高优先级中断可打断低优先级中断的处理。
  • 异常:优先级由 CPU 架构定义,通常高于普通中断(如除数为零异常优先级最高),但不同异常之间优先级可能不同。

4. 对用户程序的影响

  • 中断:中断处理完成后,CPU 会恢复用户程序的执行(可能调整上下文)。
  • 异常:根据异常类型,可能终止程序(如非法指令)或恢复程序(如页面错误触发缺页中断)。

5. 响应时机

  • 中断:CPU 在指令周期结束后检测并响应中断。
  • 异常:CPU 在执行指令过程中检测到异常时立即响应。

核心区别总结

特征

中断

异常

触发源

外部硬件事件

程序内部指令或错误

同步性

异步(与程序无关)

同步(与程序执行相关)

处理方式

硬件中断处理程序

异常处理程序(可能包含软件)

对程序的影响

可恢复(继续执行)

可能终止或恢复程序

两者的设计目标不同:中断用于处理外部异步事件(如设备交互),异常用于处理程序内部错误或特殊控制流(如系统调用)。

4 中断处理程序⭐⭐⭐⭐⭐

中断处理程序是用于处理中断事件的程序。当 CPU 接收到中断请求信号时,会自动跳转到相应的中断处理程序,进行中断处理。中断处理程序主要包括以下几个步骤:

  1. 中断响应阶段

CPU 接收到中断请求信号后,会将中断请求标志位设置为 1,以表示中断事件已经发生。此时,CPU 会暂停正在执行的任务,保护现场,保存当前程序计数器、寄存器等信息,然后跳转到中断向量表(Interrupt Vector Table,IVT)中相应的入口地址(也称为中断服务例程地址),开始执行中断处理程序。

  1. 中断处理阶段

中断处理程序开始执行,它的主要任务是处理中断事件。在中断处理期间,程序需要访问全局变量、数据结构等,因此需要注意程序的可重入性。中断处理程序要尽可能快的完成中断处理操作,并保证中断不被阻塞。

  1. 中断结束阶段

中断处理程序完成中断处理操作后,需要清除中断请求标志和中断控制器的相应寄存器。然后将保存在栈中的现场信息恢复回来,包括程序计数器、寄存器等。最后,CPU 会继续执行先前被暂停的任务,恢复正常的程序运行。

总之,中断处理程序是处理中断事件的重要程序。在 CPU 接收到中断信号后,会自动跳转到中断服务例程中进行中断处理。中断处理程序需要完成中断响应、中断处理和中断结束等阶段,保证中断处理的正确性和高效性。

5 设备驱动程序⭐⭐⭐⭐

设备驱动程序是操作系统中的一种软件程序,用于控制设备的访问和管理。设备驱动程序实现了操作系统与硬件设备之间的接口,负责管理输入/输出设备、网络设备、存储设备等硬件设备的访问和操作。

设备驱动程序具有以下几个主要功能:

  1. 提供设备访问接口:设备驱动程序将硬件设备抽象为一个逻辑设备,并提供相应的访问接口,如打开、关闭、读、写等接口。应用程序通过这些接口来访问和操作硬件设备。
  2. 管理设备状态:设备驱动程序要实时监测设备的工作状态,维护设备的状态信息,并对设备进行控制和调度。当需要进行故障排除或调试时,设备驱动程序也要提供相应的接口。
  3. 实现设备的数据传输:设备驱动程序需要对数据进行缓冲的管理和维护,确保数据能够正常传输。当设备出现问题或数据传输不稳定时,设备驱动程序要进行处理和报告错误。
  4. 管理设备的电源管理:设备驱动程序负责控制设备的电源开关,当设备不在使用时,可以将其关闭以节省能源。

总之,设备驱动程序是操作系统中用于管理和控制硬件设备的重要软件。其主要功能是提供设备访问接口、管理设备状态、实现设备数据传输和管理设备的电源管理。 设备驱动程序的好坏将直接影响到硬件设备的稳定性和整个系统的性能表现。

6 对I/O设备的控制方式⭐⭐⭐⭐

在操作系统中,I/O设备有三种控制方式,分别是程序控制方式、中断控制方式和直接存储器访问(DMA)方式

  1. 程序控制方式:程序控制方式是最常用的I/O设备控制方式。在此方式下,CPU负责I/O操作的所有工作,CPU向I/O设备发送指令、等待I/O设备的数据响应,并将数据传输到内存中。程序控制方式的缺点是会浪费CPU的大量时间来等待I/O操作完成,效率较低。
  2. 中断控制方式:中断控制方式是一种更高效的I/O设备控制方式。在此方式下,CPU将I/O指令发出后,立即继续执行其他指令,而不是一直等待I/O设备响应结果,当I/O设备完成操作后,会向CPU发出中断信号,CPU立即暂停当前操作,转而处理中断请求。
  3. 直接:DMA方式是一种通过DMA控制器进行I/O设备控制的方式。在此方式下,CPU只需向DMA控制器发出指令,DMA控制器则负责管理数据传输,将数据直接从I/O设备传输到内存中,而不需要CPU的干预。相比程序控制方式和中断控制方式,DMA方式的效率更高,可以大大减少CPU的工作量。

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

嵌入式/C++面试八股文 文章被收录于专栏

该专栏面向嵌入式开发工程师、C++开发工程师,包括C语言、C++,操作系统,ARM架构、RTOS、Linux基础、Linux驱动、Linux系统移植、计算机网络、数据结构与算法、数电基础、模电基础、5篇面试题目、HR面试常见问题汇总和嵌入式面试简历模板等文章。超全的嵌入式软件工程师面试题目和高频知识点总结! 另外,专栏分为两个部分,大家可以各取所好,为了有更好的阅读体验,后面会持续更新!!!

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务