1.在SMP体系结构中,中断亲和性是指将一个或者多个中断绑定到特定CPU core上运行,下列说法错误的是:
A.每个硬件设备都会在/proc/irq下有个中断号命令的目录来标志中断亲和性
B.IRQ#目录下smp_affinity文件,通过设置CPU位掩码,把相应中断绑定到不同CPU处理
C.修改smp_affinity值,实际上修改IO_APIC IRT表中中断重定向值
D.中断亲和性,即APIC总线格式化中断消息,把相关中断发送给一个或者多个LAPIC单元
答案:A
试题解析:对于已经在irq线上注册过的中断硬件设备,会在/proc/irq目录下新建该中断号,可以通过cat /proc/interrupts查看不同中断线上,不同硬件设备在不同CPU core上处理中断的次数。
通过设置smp_affinity不同位,可以把该中断线上的硬件中断处理绑定到不同CPU core处理,其本质在于IOAPIC在处理其硬件中断传过来的中短信息,在转发给LAPIC处理时,会根据其IO管脚上的中断重定向表中目的字段,转发给唯一LAPIC还是一组APIC来决定中断亲和性。
2.下面有关中断线程化,说法错误的是:
A.标准Linux中断优先级最高,实时任务被打断而得不到及时处理,引入中断线程化,赋予其一定的优先级,实时
任务与中断按照优先级调度。
B.中断例程描述符结构体中IRQ_NODELAY位来判断此中断是否允许被线程化
C.中断线程化是由内核线程中执行
D.所有的中断都可以线程化
答案:D
试题解析:在标准Linux中,外部硬件中断一旦发生,如果没有关中断情况下,内核马上处理其中断对应的中断处理函数。
中断线程化,主要是在把中断赋值一定的优先级,和普通进程按照优先级调度。
打过实时补丁的内核,在内核初始化init()函数,为每一个IRQ创建内核线程,同时修改了中断描述符结构体irq_desc,
设置IRQ_NODELAY标志位,来决定是否由内核线程来处理此中断。对于系统0-31号中断中某些中断或者异常时不能中断线程化,
如果按照优先级来调度,就发生未知后果(比如定时器)。
3.下面有关中断负载均衡,说法错误的是:
A.CPU负载不高是,中断亲和性有利于提高性能,可能在访问ISR代码时,cache利用率较高
B.如果某个CPU负载过大,中断负载均衡模块进行中断迁移,中断迁移到空闲CPU运行
C.在中断迁移是,内核自动感知irq中断,调用do_irq_balance()函数,进行中断迁移
D.其他
答案:D
试题解析:中断负载均衡不高的情况下,利用中断亲和性,绑定到特定CPU进行处理,CPU LAPIC处理此中断,直接访问其cache中ISR代码,不用下次再不同的CPU LAPIC中处理,如果某个CPU负载很大的情况下,调用do_irq_balance,进行中断迁移,把中断处理迁移到空闲CPU上进行处理。
4.Linux实时调度算法中SCHED_FIFO与SCHED_RR,描述不正确的是:
A.SHCED_RR策略的进程的时间片用完,系统将重新分配时间片,并置于就绪队列尾。放在队列尾保证了所有具有相同优先级的RR任务的调度公平。
B.SCHED_FIFO一旦占用cpu则一直运行。一直运行直到有更高优先级任务到达或自己放弃。
C.SCHED_FIFO与SCHED_RR不仅适用于实时任务,还使用于分时任务
D.其他
答案:C
试题解析:linux内核调度分为分时调度、实时调度。SCHED_FIFO(先到先服务)与SCHED_RR(时间片轮转)只能实时调度。
SHCED_RR策略的进程的时间片用完,系统将重新分配时间片,并置于就绪队列尾。放在队列尾保证了所有具有相同优先级的RR任务的调度公平。
SCHED_FIFO一旦占用cpu则一直运行。一直运行直到有更高优先级任务到达或自己放弃。
两者按照可抢占优先级调度算法进行,同时遵循就绪态的实时任务立即抢占非实时任务。
5.(多选)下面属于linux标准内核软实时化改造的关键技术点是:
A.中断线程化
B.内核完全可抢占
C.高精度定时器
D.优化调度策略
答案:ABCD
试题解析:linux内核软实时化,主要从中断、调度、定时器方面来进行改造,在还会存在对任务时延、抢占、优先级反转问题。
Linux内核硬实时化,主要采用微内核,超微内核,资源内核方法来改造,部分介绍资料如下:
http://www.embedu.org/Column/Column279.htm
http://wenku.baidu.com/view/429bce2d2af90242a895e593.html