根文件以及中断

这里写目录标题

      • 什么是根文件系统?
      • 中断
        • 硬中断
        • 软中断
        • 异常
        • 中断的上下半部
          • softfiq(也就是时间上需要快速响应的中断)
        • 中断执行的流程

什么是根文件系统?

根文件系统首先是一种文件系统,该文件系统不仅具有普通文件系统的存储数据文件的功能,但是相对于普通的文件系统,它的特殊之处在于,它是内核启动时所挂载(mount)的第一个文件系统,内核代码的映像文件保存在根文件系统中,系统引导启动程序会在根文件系统挂载之后从中把一些初始化脚本(如rcS,inittab)和服务加载到内存中去运行。里面包含了 Linux系统能够运行所必需的应用程序、库等,比如可以给用户提供操作 Linux的控制界面的shell程序、动态连接的程序运行时需要的glibc库等。

根文件系统的必要性:
总而言之:一套linux体系,只有内核本身是不能工作的,必须要rootfs(上的etc目录下的配置文件、/bin/sbin等目录下的shell命令,还有/lib目录下的库文件等)相配合才能工作。

中断

中断存在的意义是CPU控制外部设备的同时,外部设备也可以高效的控制CPU。这样的设计思想就扩展到了外部硬件控制CPU、软件控制CPU、CPU运行管理等三个方面。也就分别对应这硬中断,软中断和异常。

硬中断

硬件中断是平时接触的最多的一类event,比如鼠标、键盘、网卡等等都可以产生硬件中断。因为CPU并不知道外部硬件设备何时产生硬件中断请求,不会提前获知产生硬件中断的前提。

硬件中断的实现原理:外部IO设备通过连接到CPU,CPU内部集成了中断控制器,如ARM下的GIC中断控制器,然后通过相关的配置就可以触发CPU内部的中断。

软中断

当一个应用软件终止或者向操作系统请求一些服务时,软件中断就会发生。
如果说在软件代码中包含了系统调用,可以将software interrupt理解为同步事件。

当CPU接收到一个软件中断信号时,可能会暂时将控制切换到一个中断处理程序程序,内核中被中断挂起的进程(例如,一个程序的运行实例)将在中断被接受后恢复。
根文件以及中断_第1张图片

异常

CPU异常发生在各种错误的情况下,如当访问无效的内存地址或除零时,为了作出反应,产生了异常处理机制。不同架构的处理器对异常类型的定义有所不同,但核心思想是CPU工作过程遇到了不被允许的错误或者强制停止指令等

中断的上下半部

为什么分为?

中断的执行要求快速,但是通常事情常常不随人愿,并不是所有中断的执行都可以快速的结束,而且,更麻烦的是,由于 linux 的中断不支持中断嵌套,在正式处理中断之前会屏蔽掉其它中断,直到中断处理完成,再打开继续接收中断,如果中断执行太慢,这就势必造成一些问题。

方法:
上半部分在中断服务程序中快速地完成,而对于耗时较多的任务,可以进行推迟处理。

Linux的下半部分可以分为:
softirq、tasklet、workqueue(工作队列)。

softfiq(也就是时间上需要快速响应的中断)

对于某些中断应用,它要求快速执行,但是为了系统的响应性能,需要考虑中断快速响应的问题,所以不能把所有任务放到中断中执行而需要将耗时部分推迟执行,在中断执行完成的时候立马执行下半部,对于这种中断,这是最好的解决方案,既保证了系统响应性,也保证了整个中断任务的快速执行,这种下半部就是 softirq。

……略

中断执行的流程

cpu接受中断->保存中断上下文跳转到中断处理历程->执行中断上半部->执行中断下半部->恢复中断上下文。

你可能感兴趣的:(嵌入式八股面试,arm开发)