中国科学技术大学软件学院2005-2006第二学期
《嵌入式操作系统》试题
学号: 姓名: 成绩:
一、填空(20分)
1、 嵌入式处理器一般可以分为嵌入式微处理器、 、 以及 。其中典型的嵌入式微处理器包括 、 。
2、 一个嵌入式Linux系统从软件的角度看通常可以分成 个层次,包括: 。
3、 根据设备驱动程序的基本特性,设备文件可以分为 和 两大类。
4、 Unix系统提供的基本的IPC包括: 、 、 、 、 。
5、 Linux中把紧随中断要执行的操作分为三类: 、 、 。
二、名词解释(20分)
1、 嵌入式Linux
2、 SkyEye
3、 BootLoader
4、 用户态和内核态
三、问答题(45分)
1、 简述一个典型的嵌入式Linux设备驱动应当实现哪些功能部件。
2、 假设内核给一个正在运行的进程p1分配的线性地址空间是0x20000000到0x2003ffff。(假设32位地址空间,采用2级页表,页和页框大小都是4KB)。请问:
1) 第一级页表和第二级页表中分别保存了哪些内容?
2) 画出p1的页表。
3) 假设进程需要读取0x20021406中的字节,给出寻址过程。
4) 假设3)的最后一步出现缺页异常,给出缺页异常的处理过程。
3、 在Linux中,进程的状态有哪些?请使用状态转换图说明它们之间的关系。
4、 下面一个宏定义摘自Linux2.4.18的内核源代码,是进程切换的关键代码:
1) (3分)上述代码切换了进程的哪部分内容?
2) (3分)prev再次被调度执行的时候,将会上述代码中的哪里开始运行?(3分)这个值将保存在什么地方?
3) (3分)next中保存的指令计数器(程序指针)中的内容将在何时执行?
四、编程题(15分)
1、 假设一个编辑器edit的源程序及其对头文件的依赖关系如下表所示:
|
defs.h |
command.h |
buffer.h |
main.c |
√ |
|
|
keyboard.c |
√ |
√ |
|
command.c |
√ |
√ |
|
display.c |
√ |
|
√ |
insert.c |
√ |
|
√ |
search.c |
√ |
|
√ |
files.c |
√ |
√ |
√ |
utils.c |
√ |
|
|
写出这个编辑器的Makefile文件。假设使用的gcc是/usr/bin/arm-elf-gcc,编译出的可执行文件名为edit。要求gcc使用变量CC来表示;使用变量OBJ表示上述C文件所对应的目标文件列表;建立clean规则清除所有的目标文件和可执行文件。