嵌入式原理与应用期末复习汇总(附某高校期末真题试卷)

avatar
作者
猴君
阅读量:3

文章目录


一、选择题

1、为保证在启动服务器时自动启动DHCP进程,应对( B )文件进行编辑。
A、 /etc/rc.d/rc.inet2 B、/etc/rc.d/rc.inet1
C、/etc/dhcpd.conf D、/etc/rc.d/rc.S

2、文件exer1的访问权限为rw-r–r–,现要增加所有用户的执行权限和同组用户的写权限,下列命令正确的是( A )。
A 、chmod a+x g+w exer1 B 、chmod 765 exer1
C 、chmod o+x exer1 D 、chmod g+w exer1

3、删除当前目录abc以及下面的所有子目录和文件,并不要求提示任何确认信息的命令是(B)
A. del abc*.* B. rm –rf abc C. rmdir abc D. rm –r abc\ .

4、如果忘记了ls命令的用法,可以采用( C )命令获得帮助
a. ?ls b.help ls c.man ls d.get ls

5、要给文件file1加上其他人可执行属性的命令是( C )
a.chmod a+x b.chown a+x c.chmod o+x d.chown o+x

6、怎样新建一个新文件:( A )
a.touch hello.c b.mk hello.c c.rm hello.c d.new hello.c

7、在bash命令中,当用( B )参数时,表示bash是交互的。
A、-c B、-i C、-s D、-d

8、重定向的符号“>"表示:( C )
A、输出追加 B、输入追加 C、输出重定向,原来的文件会被改写 D、管道

9、linux系统能够直接读取的分区类型是( D )
a.ntfs b.fat16 c.fat32 d.ext3

10、在ARM体系结构中,要从主动用户模式(User)切换到超级用户模式(Supervisor),应采用何种方法?C
A、直接修改CPU状态寄存器(CPSR)对应的模式
B、先修改程序状态备份寄存器(SPSR)到对应的模式,再更新CPU状态
C、使用软件中断指令(SWI)
D、让处理器执行未定义指令

11、下面关于MMU和Linux描述错误的是:( c )
A、MMU是内存管理单元Memory Management Unit的缩写
B、uClinux可以运行在有MMU的处理器上
C、Linux内核功能强大,内存管理功能丰富,即使在没有MMU的处理器上,也可以通过软件实现地址映射。
D、Linux系统正是利用MMU,才能使得各个进程有独立的寻址空间

12、在vi编辑器中的命令模式下,重复上一次对编辑的文本进行的操作,可使用( C )命令。
A、上箭头 B、下箭头 C、<.> D、<*>

13、在ARM Linux体系中,用来处理外设中断的异常模式是( C )
A、软件中断(SWI) B、未定义的指令异常
C、中断请求(IRQ) D、快速中断请求(FIQ)

14、在ARM Linux系统中,中断处理程序进入C代码以后,ARM的处于__A__工作模式
A、超级用户(SVC) B、中断(IRQ)
C、快速中断(IRQ) D、和进入中断之前的状态有关系

  1. ARM嵌入式系统中,PC指向的是正在( C )的指令地址。
    A 执行 B 译码 C 取指 D 都不是

  2. ARM系统处理16-bit数据时,对应的数据类型是( B )。
    A Byte B Halfword C Word D 三者都不是

  3. 实时系统是指( B )
    A 响应快的系统 B 时间约束的系统 C 单任务系统 D 内核小的系统

  4. 下面属于blob运行过程第一阶段的是(C)
    A 外围的硬件初始化(串口,USB等);
    B 根据用户选择,进入命令行模块或启动kernel。
    C 寄存器的初始化
    D 堆栈的初始化

19.下列几种流行的嵌入式GUI中,没有采用分层设计的一种是: (B)
A.MiniGUI B. Qt/Embedded C. Nano-X Window D. OpenGUI

20.安装源代码发布软件包时,在使用./configure命令配置时,如果需要将软件安装到指定的目录可以使用参数(A)
A–prefix B. --directory C. --temporary D.–install

21.在ARM Linux系统中,中断处理程序进入C代码以后,ARM的处于 ( ) 工作模式(A)
A、超级用户(SVC) B、中断(IRQ)
C、快速中断(IRQ) D、和进入中断之前的状态有关系

22下列哪个是linux的根目录(B)
A、 \ B、\bin C、\dev D、\etc

23.如下哪一个命令可以帮助你知道shell命令的用法( A )
A. man B. pwd C. help D. more

24.要给文件file1加上其他人可执行属性的命令是( C )
A、chmod a+x B、chown a+x C、chmod o+x D、chown o+x

25.下列提法中,属于ifconfig命令作用范围的是( B )。
A、编译源程序 B、配置网卡的IP地址
C、配置系统内核 D、加载网卡到内核中

26.以下哪种方式不是Linux操作系统中任务之间通信方式。( C )
A、信号量 B、消息队列 C、邮件 D、共享内存

27.一般可以用( C )实现自动编译。
A、gcc B、gdb C、make D、vi

28.假设root用户执行“init 0”命令,系统将会( B )。
A.暂停 B.关机 C.重新启动 D.初始化

29.实时操作系统(RTOS)内核与应用程序之间的接口称为( C )。
A、输入/输出接口 B、文件系统
C、API D、图形用户接口

30.在使用GCC编译器的过程中,以下(B)选项可用来指定生成的目标文件名
A.-c B.-o C.-S D.-E

31.存盘并退出vi的指令是( D )。
A、q B、q! C、w D、wq

32.对于所有用户都只能读的文件权限是( B )
A.777 B.444 C.644 D.640

33.设备驱动程序是内核的一部分,下面的描述不正确的是:( D )
A、设备驱动完成对设备的初始化和释放。
B、设备驱动把数据从内核传送到硬件和从硬件读取数据。
C、设备驱动读取应用程序传送给设备文件的数据和回送应用程序请求的数据。
D、设备驱动程序可以使用户更加仔细的了解硬件的细节。

34.字符设备文件类型的标志是 ( B )
A. p ​​B. c ​​C. s ​​D. l

35.在ARM系统结构中,MMU映射最小的单元空间是_D___
A、64KB​​B、16KB​​C、4KB​​D、1KB

36.在大多数Linux发行版本中,以下哪个属于块设备 ( B )
A. 串行口 B. 硬盘 C. 虚拟终端 D. 打印机

37.关于文件系统的安装和卸载,下面描述正确的是(A)。
A. 如果光盘未经卸载,光驱是打不开的
B. 安装文件系统的安装点只能是/mnt下
C. 不管光驱中是否有光盘,系统都可以安装CD-ROM设备
D. mount /dev/fd0 /floppy 此命令中目录/floppy是自动生成的

二、填空题:

1、在linux系统中,以 文件 方式访问设备 。

2、安装linux系统对硬盘分区时,必须有两种分区类型: 文件系统分区 和 交换分区

3、利用gdb进行调试时,可通过step或next命令进行单步执行。

4、DHCP可以实现动态 IP 地址分配。

5、vi编辑器具有两种工作模式: 命令模式 和 输入模式 。

6、编写的shell程序运行前必须赋予该脚本文件 执行 权限。

7、在Linux系统中,用来存放系统所需要的配置文件和子目录的目录是 /etc

8、结束后台进程的命令是 kill

9、进行远程登录的命令是 telnet

10、在用vi编辑文件时,将文件内容存入test.txt文件中,应在命令模式下键入 :w test.txt

11、在Linux系统下,第二个IDE通道的硬盘(从盘)被标识为 hdb

12、使用gcc编译c程序生成可执行文件有时似乎是一步完成的,但实际要经历如下四步: 预处理、编译、汇编和连接

13、利用gdb进行调试时,可通过step或next命令进行单步执行。

14、内核分为 进程管理系统 、 内存管理系统 、 i/o管理系统 和文件管理系统等四个子系统。

15、现在linux使用的进程间通信方式有很多,其中属于UNIX进程间通信方式的是(管道)和(有名管道)、(信号signal);属于System V或POSIX进程间通信方式的有(消息队列)、(共享内存)、(信号量);属于网络间不同机器上的不同进程间通信的方式是(套接字)。

16、(信号)是软件中断,它是Unix系统中最为古老的进程之间的通信机制,它被经常用于在一个或多个进程之间传递(异步)信号。

17、系统在某个信号出现时会按照下列三种方式中的一种进行操作:(忽略此信号)、(捕捉信号)、(执行系统默认动作)。

18、信号集函数组包含三个主要模块,它们是(创建函数集)、(登记信号集)、(检测信号集)。

19、信号操作的一般流程是(定义信号集)、(设置信号屏蔽位)、(定义信号处理函数)、(测试信号)。

20、消息队列的实现包括(创建和打开队列)、(添加消息)、(读取消息)和(控制消息队列)这四种操作。

21、嵌入式软件的分类:(系统)软件、(支撑)软件和(应用)软件。

22、进程的运行有两种方式,即(独立运行)和(使用父进程运行)。

23、Linux系统是一个多进程的系统,进程之间具有(并行性)、(互不干扰)的特点。linux中进程包含3个段,分别为(代码段)、(数据段)和(堆栈段)。

24、gcc的编译可分为__预处理____、编译、汇编和___链接___等四个阶段。

25、在linux系统中,以 文件 方式访问设备 。

26、Ping命令可以测试网络中本机系统是否能到达 一台远程主机 ,所以常常用于测试网络的 连通性 。

27、嵌入式Linux系统从软件的角度看通常可以分为四个层次:引导加载程序、__ Linux内核___、_文件系统、用户应用程序。

三、判读题:

1.Linux 文件名的长度不得超256个字符。( √ )

2.嵌入式CPU一般是采取统一编址的方法来对I/O设备进行编址的。( √ )

3.一个shell脚本运行时可以看成是一个Linux作业,它可能由多个进程完成。( √ )

4.在LINUX系统中,所有的内容被表示成文件,组织文件的各种方法便称为不同的文件系统。( √ )

5.Linux系统是一个多用户多任务的分时操作系统,允许多个用户在相同的机器上一次运行很多程序。( √ )

6.守护进程的主要任务是完成与用户的交互,以保证系统的响应性能。( × )

7.用户程序应与实际使用的物理设备无关,这种特性就称作设备独立性。( × )

8.普通进程可以通过管道机制同守护进程进行通信。( × )

9.在应用程序中可以采用中断的方法来访问外部I/O设备。( × )

10.进程的几个状态之间可以相互转化。( × )

11.在Linux系统中,当一个进程fork()一个新的子进程时,这个子进程将父进程的进程控制块,进程内存控制信息,文件访问信息,上下文等资源全部继承,即做了一个完整的副本。( × )

12.应用层考虑网络编程模型时,TCP与UDP可以任意选用,只要在本机上(localloop)调试能通过调试就行。( × )

13.应用程序和驱动程序的编程模型完全不同,前者是以main()函数为整个程序的入口点的,后者根本就没有程序入口点。( × )

14.为了提高CPU执行效率,在驱动程序编写的时候应尽可能地对I/O设备访问采用阻塞方式;在应用层程序编写的时候则对用户进程采取非阻塞的方式。( × )

15.如果fork()系统函数调用成功,返回值只有一种,要么是0(在子进程中)要么是子进程的ID号。( × )

16.进程ID为1通常是init进程,在自举过程结束时由内核调用。init进程绝不会终止,它是一个系统进程,并且以超级用户特权运行。( × )

17.一般来说,在fork之后是父进程先执行还是子进程先执行是不确定的,是完全随机的。( × )

18.管道的创建是以文件节点形式存在的,所以任何不在创建管道的进程的祖先进程之中的进程都将无法寻址它。( × )

19.命名管道在完成进程间通信的任务后,系统就将资源回收,不能再被任何进程读或写了。( × )

19.在vi编辑器中的命令模式下,删除当前光标处的字符使用d命令。( × )

20.根文件系统是具有操作系统的嵌入式系统必须的组成部分。( × )

21.文件系统的主要功能是实现虚拟存储。( × )

22.BootLoader属于嵌入式操作系统的一部分。( × )

23.chmod命令可用来修改处理器的运行模式。( × )

24.目前的 ARM 处理器采用的是哈佛体系结构。(√)

  1. ARM处理器的运行模式可通过中断或异常处理改变。(√)

26…BootLoader属于嵌入式操作系统的一部分。(√)

27.STM32的所有端口都有外部中断能力。当使用外部中断线时,相应的引脚必须配置成输出模式。 ( × )

28.CISC是精简指令集计算机的缩写。RISC是复杂指令集计算机的缩写。 ( × )

四、简答题:

1、什么是嵌入式系统?嵌入式系统有哪些特点?
嵌入式系统是以应用为中心,以计算机技术为基础,且软硬件可裁减,适应应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
嵌入式系统的特点:应用的特定性和广泛性;技术、知识、资金的密集性;高效性;较长的生命周期;高可靠性;软硬一体,软件为主;无自举开发能力。

2、介绍一下嵌入式系统的设计步骤有哪些?各部分主要工作是什么?
(1)需求分析阶段,罗列出用户的需求;
(2)体系结构设计阶段,描述系统的功能如何实现;
(3)详细设计阶段,进行硬件系统与软件系统的分类划分,以决定哪些功能用硬件实现,哪些用软件实现;
(4)系统集成,把系统的软件、硬件和执行装置集成在一起,进行调试,发现并改进在设计过程中的错误;
(5)系统测试,对设计好的系统进行测试,看其是否满足给定的要求。

3、程序、进程、线程有何区别?
程序是编译后形成的可执行代码,是静止的。进程是程序的一次执行,是活动的。线程是进程的可执行单元,同一进程的不同线程共享进程的资源和地址空间。

4、进程的查看和调度分别使用什么命令?
进程查看的命令是ps和top。进程调度的命令有at,crontab,batch,kill。

5、已知C语言程序有主程序模块prog.c,prog.h,其中调用了另一模块subr.c, subr.h中的功能。试写出一个可将这两个模块编译成可执行文件pr1的makefile。
pr1: prog.o subr.o
gcc –o pr1 prog.o subr.o
prog.o: prog.c prog.h
gcc –c –o prog.o prog.c
subr.o: subr.c subr.h
gcc –c –o subr.o subr.c

6、在linux中如何编译C程序,使之成为可执行文件?如何调试?
1)检查程序中.h文件所在的目录,将其加入系统PATH中;
2)执行C编译:#gcc [源文件名] -o [目标文件名]
3)改变目标文件为可执行文件:#chmod +x [目标文件名]
4)如需将多个可执行文件连续执行,可用vi生成批处理文件,最后记得将该批处理文件属性改为可执行(同上一步)
调试:在编译时使用-g参数,就可以使用gdb进行调试。

7、什么是交叉编译?为什么要采用交叉编译?
所谓交叉编译,是指在一个平台上编译生成在另一个平台上运行的可执行程序。之所以采用交叉编译,是因为目标平台上不具备直接运行开发环境的条件。

8、wait和waitpid函数的区别:
在一个子进程终止前, wait 使其调用者阻塞,而waitpid 有一选择项,可使调用者不阻塞。waitpid并不等待第一个终止的子进程—它有若干个选择项,可以控制它所等待的特定进程。

9、守护进程编程规则(5步)
(1)创建子进程,父进程退出:
(2)调用setsid以创建一个新的会话,并担任该会话组的组长。
(3)改变当前目录为根目录
chdir(“/”);
(4)重设文件权限掩码
umask(0);
(5)关闭不再需要的文件描述符。

10、Pid_t setsid(void)的返回值是什么?
函数成功时返回该进程组ID, 出错时返回-1

五、程序设计题

1.阅读下面shell程序,写出执行结果:
#!/bin/sh
for name in Tom Jack Harry
do
  echo “$name is my friend”
done
答:
Tom is my friend
Jack is my friend
Harry is my friend

2.用C语言编写一个源程序main.c,(1)用以在打开当前目录下的文件“test.txt”,如果没有创建该文件,并使其具有读写属性,(2)编写一个makefile实现自动编译,生成可执行文件main。注:头文件可忽略。

1、Void main(void) { 	int fid; 	fid = open(./test.txt”,O_RDWR|O_CREAT);  	if(fid==-1) 	{ 		Printf(“open or create error \n”); 		exit(0); } Close(fid); } 
(2) objects = main.o  	exec = main  	all:$(objects) 		gcc –o $(exec) $(objects) 	main.o:main.c  		gcc –c main.c  	clean: 		rm –r $(exec) $(objects) 

3.编程实现以下功能
主程序hello.c(打印Hello World!) 主程序通过头文件hello.h调用message函数
头文件hello.h(声明message函数) message函数由message.c定义
答:
hello.c:

# include <stdio.h> # include <stdlib.h> # include <string.h> # include "head.h" int main (int argc,char *argv[]) {         printf("Hello World!\n");         message();         return 0; } 

head.h:

void message(void); message.c: # include <stdio.h> void message (void){         printf("This is a message!\n"); } 

4.管道是Linux中进程通信的一种方式,以下程序在父进程和子进程之间创建了一个管道,然后建立它们之间的通信,实现父进程向子进程写数据的功能。说明标号行代码的功能。

int main() { 	int pipe_fd[2]; 	pid_t pid; 	char buf_r[100]; 	char* p_wbuf; 	int r_num; 	memset(buf_r,0,sizeof(buf_r)); (1)                if(pipe(pipe_fd)<0)      (2)                 { 	printf("pipe create error\n"); 	return -1; } if((pid=fork())==0)3{ 	printf("\n"); 	close(pipe_fd[1]);4sleep(2); 	if((r_num=read(pipe_fd[0],buf_r,100))>0)  (5)          	{ 		printf(   "%d numbers read from the pipe is %s\n",r_num,buf_r); 	}  close(pipe_fd[0]);6exit(0); } else if(pid>0)          (7)               { 	close(pipe_fd[0]);8if(write(pipe_fd[1],"Hello",5)!=-1)9printf("parent write1 success!\n"); 	if(write(pipe_fd[1]," Pipe",5)!=-1) 		printf("parent write2 success!\n"); 	close(pipe_fd[1]);10sleep(3); 	waitpid(pid,NULL,0); 	exit(0); 

(1)将数据缓冲区清0 (2)创建管道 (3)创建子进程 (4)关闭子进程写描述符
(5)子进程读取管道内容 (6)关闭子进程读描述符 (7)父进程运行控制语句
(8)关闭父进程的读描述符 (9) 将数据写入缓冲区 (10)关闭父进程写描述符

5.用C语言编写一个源程序main.c,(1)用以在打开当前目录下的文件“test.txt”,如果没有创建该文件,并使其具有读写属性,(2)编写一个makefile实现自动编译,生成可执行文件main。注:头文件可忽略。

1、Void main(void) { 	int fid; 	fid = open(./test.txt”,O_RDWR|O_CREAT);  	if(fid==-1) 	{ 		Printf(“open or create error \n”); 		exit(0); 	} 	Close(fid); } 
(2) objects = main.o  exec = main  all:$(objects) gcc –o $(exec) $(objects) main.o:main.c  gcc –c main.c  clean: rm –r $(exec) $(objects) 

高校真题试卷

第一套

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第二套

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第三套

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

重修试卷

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

关注/点赞/收藏 可领取更多真题答案哦

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!