嵌入式面试6---操作系统原理

====

6 优先级反转问题在嵌入式系统中是一中严重的问题,必须给与足够重视。

a) 首先请解释优先级反转问题

b) 很多RTOS提供优先级继承策略(Priority inheritance)和优先级天花板策略(Priority ceilings)用来解决优先级反转问题,请讨论这两种策略。

答:

优先级反转:高优先级任务被低优先级任务阻塞,导致高优先级任务迟迟得不到调度。但其他中等优先级的任务却能抢到CPU资源。从现象上来看,好像是中优先级的任务比高优先级任务具有更高的优先权。

具体来说,当高优先级任务正等待信号量(此信号量被一个低优先级任务拥有着)的时候,一个介于两个任务优先之间的中等优先级任务开始执行,这就会导致一个高优先级任务在等待一个低优先级任务,而低优先级任务却无法执行类似死锁的情形发生。

优先级继承策略:进程调度算法对获取到临界资源的进程(A)增加其优先级为所有等待该资源的进程中的最高优先级。一旦进程(A)释放了该资源,就恢复到原来的优先级。

优先级天花板策略:给每个信号量设置一个优先级天花板,优先级天花板的值大于所有使用该信号的任务的优先级,当某个任务得到该信号量时,将其优先级置为优先级天花板的值。

权重:中

备注:平常编程时用不到,但需要了解运行原理,类似的还有内存管理的原理。

====

18.操作系统采用缓冲技术,能够减少CPU(A)次数,从而提高资源的利用率。

A 中断

B 访问

C 控制

D 依赖

解析:

引入缓冲的主要原因包括:缓和CPU与I/O设备间速度不匹配的矛盾;减少对CPU的中断频率,放宽对中断响应时间的限制;提高CPU和I/O设备之间的并行性。所以采用缓冲技术,可减少对CPU的中断次数,从而提高系统效率。

权重:中

====

  1. uClinux 和linux的区别(或者说rtos和linux的区别)

对uCLinux来说,其设计针对没有MMU的处理器,不能使用处理器的虚拟内存管理技术。uCLinux仍然采用存储器的分页管理,系统在启动时把实际存储器进行分页。在加载应用程序时程序分页加载。但是由于没有MMU管理,所以实际上uCLinux采用实存储器管理策略。uCLinux系统对于内存的访问是直接的,所有程序中访问的地址都是实际的物理地址。操作系统对内存空间没有保护,各个进程实际上共享一个运行空间。

权重:较高

====

  1. Linux图形系统有哪些?

X Window、SVGALib、FrameBuffer、LibGGI、QT

权重:较低

====

c) 中断(interrupt,如键盘中断)与异常(exception,如除零异常)有何区别?

异常:在产生时必须考虑与处理器的时钟同步,实践上,异常也称为同步中断。在处理器执行到由于编程失误而导致的错误指令时,或者在执行期间出现特殊情况(如缺页),必须靠内核处理的时候,处理器就会产生一个异常。

所谓中断应该是指外部硬件产生的一个电信号,从cpu的中断引脚进入,打断cpu当前的运行;

所谓异常,是指软件运行中发生了一些必须作出处理的事件,cpu自动产生一个陷入来打断当前运行,转入异常处理流程。

权重:中

====

6 优先级反转问题在嵌入式系统中是一中严重的问题,必须给与足够重视。

a) 首先请解释优先级反转问题

b) 很多RTOS提供优先级继承策略(Priority inheritance)和优先级天花板策略(Priority ceilings)用来解决优先级反转问题,请讨论这两种策略。

答:

高优先级任务需要等待低优先级任务释放资源,而低优先级任务又正在等待中等优先级任务的现象叫做优先级反转

优先级继承策略(Priority inheritance):继承现有被阻塞任务的最高优先级作为其优先级,任务退出临界区,恢

复初始优先级。

优先级天花板策略(Priority ceilings):控制访问临界资源的信号量的优先级天花板。

优先级继承策略对任务执行流程的影响相对教小,因为只有当高优先级任务申请已被低优先级任务占有的临界资源

这一事实发生时,才抬升低优先级任务的优先级。

权重:中

====

5、进程调度策略。

先进先出算法,最短CPU运行期优先调度算法,轮转法,多级队列方法

权重:较高

====

3、进程间通讯机制有哪些?

答:linux下使用的进程间通信的方式主要有:管道和有名管道,信号,消息队列,共享内存,信号量,套接字。

权重:较高

====

4、比较一下进程和线程的区别?

(1)、调度:线程是CPU调度和分派的基本单位

(2)、拥有资源:

  • 进程是系统中程序执行和资源分配的基本单位
  • 线程自己一般不拥有资源(除了必不可少的程序计数器,一组寄存器和栈),但他可以去访问其所属进程的资源,
    如进程代码,数据段以及系统资源(已打开的文件,I/O设备等)。
    (3)系统开销:
  • 同一进程中的多个线程可以共享同一地址空间,因此它们之间的同步和通信的实现也比较简单
  • 在进程切换的时候,涉及到整个当前进程CPU环境的保存以及新被调度运行的进程的CPU环境的设置;
    而线程切换只需要保存和设置少量寄存器的内容,并不涉及存储器管理方面的操作,从而能更有效地使用系统资源和
    提高系统吞吐量。
    权重:较高

====

21:进程和线程的区别:

1:调度:线程作为调度和分配的基本单元,进程作为拥有资源的基本单位;

2:并发性:不仅进程可以并发执行,同一进程内的线程也可以并发执行。

3:拥有资源:进程是拥有资源的基本独立单元,线程不拥有资源,但可以访问进程内的资源;

4:在创建或撤销线程时,由于系统都要为之分配和回收内存资源,导致系统的开销明显大于创建或撤销线程时的开销。

权重:较高

====

5、死锁的四个条件及处理方法。

(1)互斥条件:一个资源每次只能被一个进程使用。

(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

(3)不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。

(4)循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

解决死锁的方法分为死锁的预防,避免,检测与恢复三种

权重:高

===

9、中断的概念?简述中断的过程。

可以描述一下isr、dsr,中断上半部、中断下半部,软中断

权重:较高

====

3.描述实时系统的基本特性

在特定时间内完成特定的任务,实时性与可靠性。

权重:高

====

8.谈谈IA32下的分页机制

小页(4K)两级分页模式,大页(4M)一级

权重:低

备注:内存分页

相关推荐
nameofworld4 分钟前
前端面试笔试(二)
前端·javascript·面试·学习方法·数组去重
摇光9335 分钟前
promise
前端·面试·promise
喔喔咿哈哈3 小时前
【手撕 Spring】 -- Bean 的创建以及获取
java·后端·spring·面试·开源·github
理想不理想v4 小时前
使用JS实现文件流转换excel?
java·前端·javascript·css·vue.js·spring·面试
好心的小明4 小时前
【蓝桥杯】CB组国二攻略(省赛地点:广东)
职场和发展·蓝桥杯
_OLi_5 小时前
力扣 LeetCode 459. 重复的子字符串(Day4:字符串)
算法·leetcode·职场和发展·kmp
Xiao Fei Xiangζั͡ޓއއ6 小时前
一觉睡醒,全世界计算机水平下降100倍,而我却精通C语言——scanf函数
c语言·开发语言·笔记·程序人生·面试·蓝桥杯·学习方法
_OLi_6 小时前
力扣 LeetCode 150. 逆波兰表达式求值(Day5:栈与队列)
算法·leetcode·职场和发展
NMBG227 小时前
[JAVAEE] 面试题(四) - 多线程下使用ArrayList涉及到的线程安全问题及解决
java·开发语言·面试·java-ee·intellij-idea
糊涂君-Q8 小时前
Python小白学习教程从入门到入坑------第三十一课 迭代器(语法进阶)
python·学习·程序人生·考研·职场和发展·学习方法·改行学it