设某机有5级中断:L0, L1, L2, L3, L4。其中断响应优先次序为: L0最高,L1 次之,L4最低。 (1)CPU响应0级设备时, IM0 IM1 IM2 IM3 IM4=? (2)CPU响应1级设备时, IM0 IM1 IM2 IM3 IM4=? (3)CPU响应2级设备时, IM0 IM1 IM2 IM3 IM4=? (4)CPU响应3级设备时,IM0 IM1 IM2 IM3 IM4=? (5)CPU响应4级设备时,IM0 IM1 IM2 IM3 IM4=?
时间: 2024-02-29 18:53:56 浏览: 74
STM32实现激光测距传感器测距WT-VL53L0 L1(标准库与HAL库实现)
5星 · 资源好评率100%
[max_priority_index].start_time = p[i-1].end_time;
p[max_priority_index].end_time = p[max_priority_index].start_time + p[max_priority_index].service_time;
// 交换进程顺序
swap_pcb(&p[i],好的,我知道了。这是一道关于中断的问题。
根据中断响应优先次序 &p[max_priority_index]);
}
// 计算平均周转时间、响应时间和带权周转时间
,L0是最高优先级,L1次之,L4最低。因此,当CPU响应0级 for(i = 0; i < n; i++) {
p[i].turnaround_time = p[i].end_time - p[i设备时,只有L0中断能够被响应;当CPU响应1级设备时,L0和].arrival_time;
p[i].response_time = p[i].start_time - p[i].arrival_time;
p[i].weighted_turnL1中断都可以被响应,但L0优先级更高,因此只有L0中断被响around_time = (float)p[i].turnaround_time / p[i].service_time;
avg_turnaround_time += p[i].turnaround应;以此类推,可以得到以下答案:
(1)IM0=1, IM1=IM2=IM_time;
avg_response_time += p[i].response_time;
avg_weighted_turnaround_time += p[i].weighted_turnaround_time3=IM4=0
(2)IM0=IM1=1, IM2=IM3=IM4=0
;
}
avg_turnaround_time /= n;
avg_response_time /= n;
avg_weighted_turnaround_time /= n;
(3)IM0=IM1=IM2=1, IM3=IM4=0
(4)IM0=IM // 输出结果
printf("Priority:\n");
for(i = 0; i < n; i++) {
printf("Process1=IM2=IM3=1, IM4=0
(5)IM0=IM1=IM2=IM3=IM4=1
希望能够帮到你!
阅读全文