嵌入式培训

嵌入式软件助理工程师认证考试试题题库

时间:2024-08-27 09:31:23 嵌入式培训 我要投稿
  • 相关推荐

2016年嵌入式软件助理工程师认证考试试题题库

  嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。下面一起来看看嵌入式软件助理工程师的笔试考试题及答案吧!

2016年嵌入式软件助理工程师认证考试试题题库

  一、单项选择题

  1、如下哪一个命令可以帮助你知道shell命令的用法( A )

  A. man B. pwd C. help D. more

  2、在大多数Linux发行版本中,以下哪个属于块设备 ( B )

  A. 串行口 B. 硬盘 C. 虚拟终端 D. 打印机

  3、下面哪个命令行可用来马上重新启动正在运行的Linux系统?( D )

  A. restart --delay=0 B. reboot -w

  C. halt -p D. shutdown -r now

  4、在Linux系统,默认的shell是什么( A )

  A.bash B.ash C.csh D.gnush

  5、下面哪条命令可用来确保文件“myfile”存在( B )

  A. cp myfile /dev/null B. touch myfile

  C. create myfile D. mkfile myfile

  6、 LILO的配置文件是:( B )

  A. /etc/conf B. /etc/lilo.conf

  C. /proc/kcore D. /usr/local/

  7、用“useradd jerry”命令添加一个用户,这个用户的主目录是什么( A )

  A./home/jerry B./bin/jerry

  C./var/jerry D./etc/jerry

  8、Linux文件权限一共10位长度,分成四段,第三段表示的内容是( D )

  A.文件类型 B.文件所有者的权限

  C.文件所有者所在组的权限 D.其他用户的权限

  9、在ARM系统结构中,MMU映射最小的单元空间是_D___

  A、64KB B、16KB C、4KB D、1KB

  10、某文件的组外成员的权限为只读;所有者有全部权限;组内的权限为读与写,则该文件的权限为( D )

  A.467 B.674 C.476 D.764

  11、不是shell具有的功能和特点的是 ( A )

  A.管道 B.输入输出重定向

  C.执行后台进程 D.处理程序命令

  12、在ARM处理器的各种工作模式中,( A )模式无法访问一些被保护的系统资源。20100626年徐远超

  A. 用户模式(user) B.系统模式(system) C. 中断模式(IRQ) D.终止模式(Abort)

  13、如何从当前系统中卸载一个已装载的文件系统( A )

  A. umount B. dismount

  C. mount –u D. 从 /etc/fstab 中删除这个文件系统项

  14、你用vi编辑器编写了一个脚本文件shell.sh,你想将改文件名称修改为shell2.sh,下列命令( B )可以实现。

  A. cp shell.sh shell2.sh B. mv shell.sh shell2.sh

  C. ls shell.sh >shell2.sh D. ll shell.sh >shell2.sh

  15、在/home/stud1/wang目录下有一文件file,使用( D )可实现在后台执行命令,此命令将file文件中的内容输出到file.copy文件中。

  A. cat file >file.copy B. cat file file.copy

  C. &cat file file.copy D. &cat file >file.copy

  16、字符设备文件类型的标志是 ( B )

  A. p B. c C. s D. l

  17、删除文件命令为( D )

  A. mkdir B. rmdir C. mv D. rm

  18、( B )命令可更改一个文件的权限设置?

  A. attrib B. chmod C. change D. file

  19、用命令ls -al显示出文件ff的描述如下所示,由此可知文件ff的类型为( A )。

  -rwxr-xr-- 1 root root 599 Cec 10 17:12 ff

  A. 普通文件 B. 硬链接 C. 目录 D. 符号链接

  20、系统中有用户user1和user2,同属于users组。在user1用户目录下有一文件file1,它拥有644的权限,如果user2用户想修改user1用户目录下的file1文件,应拥有( B )权限。

  A. 744 B. 664 C. 646 D. 746

  21、在指令系统的各种寻址方式中,获取操作数最快的方式是( 1 -B );若操作数的地址包含在指令中,则属于( 2-A )方式。

  (1) A、直接寻址 B、立即寻址 C、寄存器寻址 D、间接寻址

  (2) A、直接寻址 B、立即寻址 C、寄存器寻址 D、间接寻址

  22、在CPU和物理内存之间进行地址转换时,( B )将地址从虚拟(逻辑)地址空间映射到物理地址空间。

  A、TCB B、MMU C、CACHE D、DMA

  23、Linux将存储设备和输入/输出设备均看做文件来操作,(C)不是以文件的形式出现。

  A. 目录 B. 软链接

  C. i节点表 D. 网络适配器

  24、关于文件系统的安装和卸载,下面描述正确的是(A)。

  A. 如果光盘未经卸载,光驱是打不开的

  B. 安装文件系统的安装点只能是/mnt下

  C. 不管光驱中是否有光盘,系统都可以安装CD-ROM设备

  D. mount /dev/fd0 /floppy 此命令中目录/floppy是自动生成的

  25、为了查看Linux启动信息,可以用(B)命令

  A. cat /etc/lilo.conf B.dmesg

  C. cat/proc/cpuinfo D.lilo

  26、用下列(A)命令查看Linux使用了多少内存

  A.cat /proc/meminfo B. cat /bin/meminfo

  C.vi /proc/meminfo D.vi /user/local/meminfo

  27、下列(D)设备是字符设备。

  A. hdc B. fd0 C. hda1 D. tty1

  28、下列说法正确的是(D)

  A. ln -s a.txt b.txt,作用是制作文件b.txt的符号链接,其名称为a.txt

  B. df命令可以查看当前目录占用磁盘空间的大小

  C. comm命令打印两个文本文件中的相同的内容

  D. rm命令可以用来删除目录

  29、有如下的命令:$dd if=f1 of=f2。其中if=f1表示(A)

  A. 以f1作为源文件,代替标准输入

  B. 以f1作为目标文件,代替标准输出

  C. 当条件满足f1的时候,执行真正的拷贝

  D. 拷贝的过程中,不转化文件

  30、为了查找出当前用户运行的所有进程的信息,我们可以使用(B)命令:

  A. ps -a B. ps -u C. ls -a D. ls –l

  31、为保证在启动服务器时自动启动DHCP进程,应对( B )文件进行编辑。

  A、 /etc/rc.d/rc.inet2 B、/etc/rc.d/rc.inet1

  C、/etc/dhcpd.conf D、/etc/rc.d/rc.S

  32、文件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

  33、删除当前目录abc以及下面的所有子目录和文件,并不要求提示任何确认信息的命令是(B)

  A. del abc\*.* B. rm –rf abc C. rmdir abc D. rm –r abc\ *.*

  34、如果忘记了ls命令的用法,可以采用( C )命令获得帮助

  a. ?ls b.help ls c.man ls d.get ls

  35、在安装开始前,用光盘启动系统,想要进入字符界面安装,需要输入的命令是( C )

  a.linux doc b.linux c.linux text d.linux note

  36、要给文件file1加上其他人可执行属性的命令是( C )

  a.chmod a+x b.chown a+x c.chmod o+x d.chown o+x

  37、怎样新建一个新文件:( A )

  a.touch hello.c b.mk hello.c c.rm hello.c d.new hello.c

  38、在bash命令中,当用( B )参数时,表示bash是交互的。

  A、-c B、-i C、-s D、-d

  39、重定向的符号“>"表示:( C )

  A、输出追加 B、输入追加 C、输出重定向,原来的文件会被改写 D、管道

  40、linux系统能够直接读取的分区类型是( D )

  a.ntfs b.fat16 c.fat32 d.ext3

  41、 下列提法中,属于ifconfig命令作用范围的是( B )。

  A、编译源程序 B、配置网卡的IP地址

  C、配置系统内核 D、加载网卡到内核中

  42、下列对shell变量FRUIT操作,正确的是( C )

  A、为变量赋值:$FRUIT=apple    B、显示变量的值:fruit=apple

  C、显示变量的值:echo $FRUIT   D、判断变量是否有值:[ -f “$FRUIT” ]

  43、一般可以用( C )实现自动编译。

  A、gcc B、gdb * C、make D、 vi

  44、处理机主要由处理器、存储器和总线组成,总线包括( D )。

  A、数据总线、串行总线、逻辑总线、物理总线

  B、并行总线、地址总线、逻辑总线、物理总线

  C、并行总线、串行总线、全双工总线

  D、数据总线、地址总线、控制总线

  45、假设当前目录下有文件Makefile,下面是其内容:

  pr1: prog.o subr.o

  gcc –o pr1 prog.o subr.o

  prog.o: prog.c prog.h

  gcc –c –l prog.o prog.c

  subr.o: subr.c

  gcc –c –o subr.o subr.c

  clear:

  rm –f pr1*.o

  现在执行命令make clear,实际执行的命令是( A ):

  A. rm –f pr1*.o

  B. gcc –c –l prog.o prog.c

  C. gcc –c –o subr.o subr.c

  D. 都执行

  46、可加载模块一般位于系统的(B)目录下:

  A. /lib/modules

  B. /lib/modules/x.y.z(x.y.z是内核的版本号)

  C. /usr/lib

  D. /usr/local/lib

  47、Linux分区默认的文件系统的类型是:( B )

  A. vfat B. ext2/ext3 C. swap D. dos

  48. 文件之间可以建立两种链接关系:软链接和硬链接,硬链接的特点是(C)

  A. 等同于文件复制操作

  B. 类似于文件复制,但新的链接文件并不占用文件磁盘存储空间

  C. 删除源文件,将使其他链接文件失效

  D. 可以对目录文件名建立硬链接

  49. 下面哪一个选项不是linux系统的进程类型(D)

  A. 交互进程

  B. 批处理进程

  C. 守护进程

  D. 就绪进程

  50、下面( B )特性不符合嵌入式操作系统特点。

  A、实时性 B、不可定制

  C、微型化 D、易移植

  51、下面关于C语言程序的描述,正确的是(  C  )。

  A、总是从第一个定义的函数开始执行

  B、要调用的函数必须在main()函数中定义

  C、总是从main()函数开始执行

  D、main()函数必须放在程序的开始

  52、在FTP协议中,控制连接是由( B )主动建立的。

  A、服务器端 B、客户端

  C、操作系统 D、服务提供商

  53、嵌入式系统由硬件部分和软件部分构成,以下不属于嵌入式系统软件的是C。

  A) 系统内核 B) 驱动程序 C) FPGA编程软件 D)嵌入式中

  54、当我们与某远程网络连接不上时,就需要跟踪路由查看,以便了解在网络的什么位置出现了问题,满足该目的的命令是( C )。

  A、ping B、ifconfig

  C、traceroute D、netstat

  55. 下列哪种文件系统的写入是LINUX所不支持的:D

  A. FAT B. UFS C. JFS D. NTFS

  56. LINUX支持网络文件系统NFS,下列哪个命令实现了将位于 192.168.1.4机器上的 /opt/sirnfs 目录挂载到本机/mnt/sirnfs下: A

  A.mount -t nfs 192.168.1.4:/opt/sirnfs /mnt/sirnfs

  B.mount -t nfs /mnt/sirnfs 192.168.1.4:/opt/sirnfs

  C.mount nfs –t 192.168.1.4:/opt/sirnfs /mnt/sirnfs

  D.mount nfs –t /mnt/sirnfs 192.168.1.4:/opt/sirnfs

  57、同CISC相比,下面哪一项不属于RISC处理器的特征_ D

  A、采用固定长度的指令格式,指令规整、简单、基本寻址方式有2~3种。

  B、减少指令数和寻址方式,使控制部件简化,加快执行速度。

  C、数据处理指令只对寄存器进行操作,只有加载/存储指令可以访问存储器,以提高指令的执行效率,同时简化处理器的设计。

  D、RISC处理器都采用哈佛结构

  58、在下列ARM处理器的各种模式中,__D___模式有自己独立的R8-R14寄存器。

  A、系统模式(System)、

  B、终止模式(Abort)

  C、中断模式(IRQ)

  D、快中断模式(FIQ)

  59、按照ARM过程调用标准(APCS),栈指针使用_B___寄存器,

  A、R0 B、R13 C、R14 D、R15

  60、在ARM体系结构中,_C___寄存器作为连接寄存器,当进入子程序时或者处理器响应异常的时候,用来保存PC的返回值;_C___寄存器作为处理器的程序计数器指针。

  A、R0,R14 B、R13,R15 C、R14,R15 D、R14,R0

  61、在ARM体系结构中,要从主动用户模式(User)切换到超级用户模式(Supervisor),应采用何种方法?C

  A、直接修改CPU状态寄存器(CPSR)对应的模式

  B、先修改程序状态备份寄存器(SPSR)到对应的模式,再更新CPU状态

  C、使用软件中断指令(SWI)

  D、让处理器执行未定义指令

  62、下面关于MMU和Linux描述错误的是:C

  A、MMU是内存管理单元Memory Management Unit的缩写

  B、uClinux可以运行在有MMU的处理器上

  C、Linux内核功能强大,内存管理功能丰富,即使在没有MMU的处理器上,也可以通过软件实现地址映射。

  D、Linux系统正是利用MMU,才能使得各个进程有独立的寻址空间

  63、DNS域名系统主要负责主机名和( A )之间的解析。

  A、IP地址 B、MAC地址

  C、网络地址 D、主机别名

  64、在vi编辑器中的命令模式下,重复上一次对编辑的文本进行的操作,可使用( C )命令。

  A、上箭头 B、下箭头 C、<.> D、<*>

  65、进程有三种状态:( C )。

  A 、准备态、执行态和退出态 B 、精确态、模糊态和随机态

  C 、运行态、就绪态和等待态 D 、手工态、自动态和自由态

  66、下列变量名中有效的shell变量名是( C )。

  A、-1-time B、_2$3

  C、bo_chuang_1 D、2009file

  67、文件系统的主要功能是( A )。

  A、实现对文件的按名存取 B、实现虚拟存储

  C、 提高外存的读写速度 D、用于保存系统文档

  68、在ARM Linux体系中,用来处理外设中断的异常模式是__C____

  A、软件中断(SWI) B、未定义的指令异常

  C、中断请求(IRQ) D、快速中断请求(FIQ)

  69、在Linux系统中,驱动程序注册中断处理程序的函数是_B____

  A、trap_init B、request_irq

  C、enable_irq D、register_irq

  70、在ARM Linux系统中,中断处理程序进入C代码以后,ARM的处于__A__工作模式

  A、超级用户(SVC) B、中断(IRQ)

  C、快速中断(IRQ) D、和进入中断之前的状态有关系

  71、在ARM体系构建的嵌入式系统中,由电平模式触发的中断,其对应的中断标准应该在何时被清除?A

  A、当中断处理程序结束以后,才可以清除

  B、进入相应的中断处理程序,即可以清除

  C、产生IRQ中断的时候,处理器自动清除

  D、任何时候都可以清除

  72、在操作系统中,Spooling技术是用一类物理设备模拟另一类物理设备的技术,实现这种技术的功能模块称做( B )。

  A、可林斯系统 B、斯普林系统

  C、图灵机系统 D、虚拟存储系统

  73、通过修改下面文件哪个文件 ,可以设定开机时候自动安装的文件系统(C )

  A. /etc/mta B. /etc/fastboot

  C. /etc/fstab D. /etc/inetd.conf

  74、下面关于Shell的说法,不正确的是: (D)

  A. 操作系统的外壳

  B. 用户与Linux内核之间的接口程序

  C. 一个命令语言解释器

  D. 一种和C类似的程序语言

  75、init可执行文件通常存放在( C )目录中。

  A./etc B./boot

  C./sbin D./root

  76、假设root用户执行“init 0”命令,系统将会( B )。

  A.暂停 B.关机 C.重新启动 D.初始化

  77、嵌入式系统应用软件一般在宿主机上开发,在目标机上运行,因此需要一个( B )环境。

  A、交互操作系统 B、交叉编译

  C、交互平台 D、分布式计算

  78、已知有变量data1定义如下:C

  union data

  { int i;

  char ch;

  float f;

  } data1;

  则变量data1所占的内存存储空间可表示为。

  A、sizeof(int) B、sizeof(char)

  C、sizeof(float) D、sizeof(int)+sizeof(char)+sizeof(float)

  79、软件开发模型给出了软件开发活动各阶段之间的关系,( D )不是软件开发模型。

  A、瀑布模型 B、螺旋模型

  C、原型模型 D、程序模型

  80、实时操作系统(RTOS)内核与应用程序之间的接口称为( C )。

  A、输入/输出接口 B、文件系统

  C、API D、图形用户接口

  81、在操作系统中,除赋初值外,对信号量仅能操作的两种原语是( C )。

  A、存操作、取操作 B、读操作、写操作

  C、P操作、V操作 D、输入操作、输出操作

  82、在下列ARM处理器的各种模式中,只有__A___模式不可以自由地改变处理器的工作模式。

  A、用户模式(User) B、系统模式(System)

  C、终止模式(Abort) D、中断模式(IRQ)

  83、32位体系结构的ARM处理器有_B___种不同的处理器工作模式,和__B__个主要用来标识CPU的工作状态和程序的运行状态的状态寄存器。

  A、7、7 B、7、6 C、6、6 D、6、7

  84、已知Linux系统中的唯一一块硬盘是第一个IDE接口的master设备,该硬盘按顺序有3个主分区和一个扩展分区,这个扩展分区又划分了3个逻辑分区,则该硬盘上的第二个逻辑分区在Linux中的设备名称是( D )

  A. /dev/hda2 B. /dev/hda3

  C. /dev/hda5 D. /dev/hda6

  85、下列软件中,不属于BootLoader的是( B )。

  A、vivi B、busybox C、uboot D、blob

  86、某文件的组外成员的权限为只写;所有者有读写权限;组内的权限为只读,则该文件的权限为( B )

  A 467 B 642 C 476 D 764

  87、关闭linux系统(不重新启动)可使用命令 B 。

  A) Ctrl+Alt+Del B) halt C) shutdown -r now D) reboot

  88、在vi编辑器中的命令模式下,键入 B 可在光标当前所在行下添加一新行。

  A) “a” B) “o” C) “I” D) A

  89、重定向的符号“>>"表示:( A )

  A、输出追加 B、输入追加 C、输出重定向,原来的文件被改写 D、管道

  90、WWW服务器是在Internet上使用最为广泛,它采用的是 B 结构。

  A) 服务器/工作站 B) B/S C) 集中式 D )分布式

  91、NFS是 C 系统。

  A) 文件 B) 磁盘 C) 网络文件 D) 操作

  92、在日常管理中,通常CPU会影响系统性能的情况是: A 。

  A) CPU已满负荷地运转 B) CPU的运行效率为30%

  C) CPU的运行效率为50% D) CPU的运行效率为80%

  93、在使用GCC编译器的过程中,以下(B)选项可用来指定生成的目标文件名

  A.-c B.-o C.-S D.-E

  94、下面哪一个选项不是linux系统的调度策略(D)

  A. SCHED_NORMAL

  B. SCHED_FIFO

  C. SCHED_RR

  D. SCHED_LRU

  95、为了使用生成的目标文件能够用于gdb调试,在编译时GCC应使用(C)选项。

  A.-c B.-w C.-g D.-o

  96、存盘并退出vi的指令是( D )。

  A、q B、q! C、w D、wq

  97. 下列关于/etc/fstab文件描述,正确的是( D )。

  A. fstab文件只能描述属于linux的文件系统

  B. CD_ROM和软盘必须是自动加载的

  C. fstab文件中描述的文件系统不能被卸载

  D 启动时按fstab文件描述内容加载文件系统

  98. ARM嵌入式系统中,PC指向的是正在(C )的指令地址。

  A 执行 B 译码 C 取指 D 都不是

  99. ARM系统处理16-bit数据时,对应的数据类型是( B )。

  A Byte B Halfword C Word D 三者都不是

  100. 实时系统是指( B )

  A 响应快的系统 B 时间约束的系统 C 单任务系统 D 内核小的系统

  101. 下面属于blob运行过程第一阶段的是(C)

  A 外围的硬件初始化(串口,USB等);

  B 根据用户选择,进入命令行模块或启动kernel。

  C 寄存器的初始化

  D 堆栈的初始化

  答案:C第一阶段的代码在start.s中定义,大小为1KB,它包括从系统上电后在0x00000000地址开始执行的部分。这部分代码运行在Flash中,它包括对S3C44B0的一些寄存器的初始化和将Blob第二阶段代码从Flash拷贝到SDRAM中。

  102.下列几种流行的嵌入式GUI中,没有采用分层设计的一种是: B

  A.MiniGUI B. Qt/Embedded C. Nano-X Window D. OpenGUI

  103. Qt/Embedded的底层图形引擎基于一下哪种接口技术: A

  A.framebuffer B.GAL C.IAL D.GFX

  104.在Linux使用GCC编译器时有如下命令:Gcc–g test.c –o test,其中参数-g的作用是(D)

  A .生成目标文件test.o B.生成汇编文件test.s C .进行预编译 D .包含调试信息

  105、下列提法中,不属于ifconfig命令作用范围的是 D 。

  A) 配置本地回环地址 B) 配置网卡的IP地址

  C) 激活网络适配器 D) 加载网卡到内核中

  106、为了得到所有的命令行输入的参数,我们可以使用变量: B

  A) $# B) $@ C) $0 D) $!

  107、32位数0x12345678用小端格式表示,则在AXD调试器下观察数据在内存中分布的情况是(B)

  A 12 34 56 78 B 78 56 34 12 C 21 43 65 87 D 87 65 43 21

  108、RISC是指(C)

  A 复杂指令计算机 B 并行机 C 精简指令计算机 D 多处理器计算机

  109、NFS服务器通过调用/etc/rc.d/init.d中的portmap和nfs脚本启动,启动后它将通过寻找本地服务器的 D文件,向网络上的子机提供NFS文件共享服务

  A) /etc/hosts B) /etc/inittab

  C) /etc/inet.d D) /etc/exports

  110、在vi编辑器的命令模式中,删除一行的命令是( B )

  a.yy b.dd c.pp d.xx

  111、表达式A⊕B实现的功能是(C)

  A 逻辑与 B 逻辑非 C 逻辑异或 D逻辑或

  112、嵌入式系统的开发通常是在交叉开发环境实现的,交叉开发环境是指( A )

  A 在宿主机上开发,在目标机上运行 B在目标机上开发,在宿主机上运行

  C 在宿主机上开发,在宿主机上运行 D在目标机上开发,在目标机上运行

  113、对于所有用户都只能读的文件权限是( B )

  a.777 b.444 c.644 d.640

  114、在ARM Linux启动的过程中,开启MMU的时候,如何实现从实地址空间到虚拟地址空间的过度?D

  A、开启MMU,在内存中创建页表(映射内核到3G以上的虚拟地址空间)并继续运行。

  B、开启MMU,在内存中创建页表(映射内核到3G以上的虚拟地址空间),跳转到虚拟地址空间继续运行。

  C、在内存中创建页表(映射内核到3G以上的虚拟地址空间),开启MMU,跳转到虚拟地址空间继续运行。

  D、在内存中创建页表(映射内核到3G以上的虚拟地址空间,同时把内核所在的前1MB空间到和其实地址相同的虚拟地址空间),开启MMU,跳转到虚拟地址空间继续运行。

  115、在ARM体系中,MMU的第一级描述符有___项,每个描述符占用____字节

  A、1024,32 B、4096,4

  C、4096,4 D、1024,32

  答案:C(B和C一样的,A和D是一样的)

  116、在ARM体系中,下面MMU的一级描述符中,是节描述符的是_A___

  A、0xA0000C0E B、0xA0000C0F

  C、0x00000000 D、0xC0000C01

  117、init进程是内核在完成核内引导以后加载的,它是系统所有进程的起点,进程号为1,在执行过程中,首先会读取( C )文件。20100626徐远超

  A. /etc/init B. /etc/fstab

  C. /etc/inittab D. /etc/rc.sysinit

  118 、指令ADD R2,R1,R1,LSR #2中,LSR的含义是(B)。

  A 逻辑左移 B 逻辑右移 C 算术右移 D循环右移

  119、以下ARM异常中,优先级最高的是(D )。

  A Data abort B FIQ C IRQ D Reset

  120、指令LDR R0,[R4]对源操作数的寻址方式是( A )

  A 寄存器间接寻址 B寄存器寻址 C立即数寻址 D 相对寻址

  121、在Linux 2.4或者2.6内核中,和ARM体系结构相关的中断处理程序的C代码在源码树的__B_文件中

  A、kernerl/irq.c

  B、arch/arm/kernel/irq.c

  C、arch/arm/mach/irq.c

  D、arch/arm/kernel/entry-armv.S

  122、以下关于init进程,描述不正确的是:(A)

  A. 一个通用进程

  B. 可以产生新的进程

  C. 在某些程序退出的时候能重起它们

  D. 负责在系统启动的时候运行一系列程序和脚本文件

  123、哈佛结构和冯诺依曼结构的区别是( A)

  A 指令和数据分开存储 B 不需要程序计数器 C 统一编址 D 单一数据总线

  124、fstab文件存放在(A)目录中。

  A./etc B./boot

  C./sbin D./root

  125、Linux系统运行级别5工作在(D)状态。

  A.单用户字符模式 B.多用户字符模式

  C.单用户图形模式 D.多用户图形模式

  126、Linux文件权限一共10位长度,分成四段,第二段表示的内容是( B )

  A.文件类型 B .文件所有者的权限

  C. 文件所有者所在组的权限 D. 其他用户的权限

  127、启动init进程前,不需要经过(D)步骤。

  A.加载内核 B.检测内存

  C.加载文件系统 D.启动网络支持

  128、哪条命令可以显示文件系统使用硬盘空间的情况?(B)20100616徐远超

  A.ls   B.df C.du   D.Mount

  129、能在Linux下,用mkfs.jffs2命令创建JFFS2文件系统(基本上是使用JFFS2的Ramdisk),关于mkfs.jffs2下列说法错误的是: (C)

  A.-e 选项确定闪存的擦除扇区大小(通常是 64 千字节)

  B.-p 选项用来在映像的剩余空间用零填充。

  C.-f 选项用于输出文件,通常是 JFFS2 文件系统映像

  D.一旦创建了 JFFS2 文件系统,它就被装入闪存中适当的位置(引导装载程序告知内核查找文件系统的地址)以便内核能挂装它。

  130、波特率9600bps是指数据每秒传输( B )

  A 9600个字节 B 9600个比特 C 9600个字 D 9600个字符

  131、ARM9和ARM7的重要区别是(A )

  A ARM9带有MMU功能 B ARM9支持Thumb指令集

  C ARM9带有Cache功能 D ARM9是哈佛结构

  132、在使用文件通配符对文件名操作时?号表示(A)

  A. 只与一个任意的字符匹配

  B. 只与一个任意的字母匹配

  C. 只与一个任意的数字匹配

  D. 匹配于任意字符的组合

  133、 在安装Linux的过程中的第五步是让用户选择安装方式,如果用户希望安装部分组件(软件程序),并在选择好后让系统自动安装,应该选择的选项是 D 。

  A) full B) expert C) newbie D) menu

  134、当系统工作负载增加时,CPU的 A 将占很大比重

  A) 用户时间 B)系统时间 C)空闲时间、 D) 进程时间

  135、fsck对文件系统的检查最先是从文件系统的 C 开始的

  A) MBR B) 磁盘块 C) 超级块 D) 块链表

  136、关于RISC指令系统描述不正确的是( A )。

  A、指令条数多 B、指令长度固定

  C、指令格式种类少 D、寻址方式种类少

  137、对ARM7微处理器说法不正确的是( D )。

  A、兼容16位的Thumb指令集 B、集成式RISC内核

  C、集成了ICE-RT逻辑 D、哈佛体系结构

  138、在寄存器间接寻址方式中,指定寄存器中存放的是 ( B )。

  A、操作数 B、操作数地址

  C、转移地址 D、地址偏移量

  139、Samba服务器的进程由B 两部分组成 。

  A) named和sendmail B) smbd和nmbd C) bootp和dhcpd D) httpd和squid

  140、如果数据的存储格式是大端模式,32bit宽的数0x12345678在大端模式下的CPU内存中的存放(假设从地址0x4000开始)。内存地址为0x4001的内容是(A )。

  A、 0x34 B、0x56

  C、 0x23 D、0x78

  141、在配置代理服务器时,若设置代理服务器的工作缓存为64MB,配置行应为 D 。

  A ) cache 64MB B) cache_dir ufs /usr/local/squid/cache 10000 16 256

  C) cache_ mgr 64MB D) cache_ mem 64MB

  142、安全管理涉及的问题包括保证网络管理工作可靠进行的安全问题和保护网络用户及网络管理对象问题。 C 属于安全管理的内容。

  A) 配置设备的工作参数 B) 收集与网络性能有关的数据

  C) 控制和维护访问权限 D) 监测故障

  143、 B 命令是在vi编辑器中执行存盘退出。

  A ) q B ) wq C) q! D) WQ

  144、下列哪个命令以文本菜单方式界面配置内核选项: A

  A Make menuconfig B make xconfig C make config D make mrproper

  145、切换用户登录的命令是: ( B )

  A. ps B. su C. kill D. changeuser

  146、已知有如下程序:

  #include

  void main(){

  int a[5]={1,2,3,4,5};

  int * p = (int *)(&a+1);

  printf(“%d”,p[-1]);

  }

  那么,输出结果为(B )

  A、该程序不可执行,无输出结果 B、 5

  C、1 D、不确定的随机值

  147、终止一个前台进程可能用到的命令和操作是(B )。

  A、kill B、+c

  C、shut down D、halt

  148、 B 目录存放着Linux的源代码。

  A) /etc B) /usr/src C) /usr D) /home

  149、如果要将文件名file1修改为file2,下列命令( B )可以实现。

  A. cp file1 file2

  B. mv file1 file2

  C. ls file1 >file2

  D. ll file1 >file2

  150、不存盘退出vi的指令是( B )。

  A、q B、q! C、w D、wq

  151、有关归档和压缩命令,下面描述正确的是 C 。

  A) 用uncompress命令解压缩由compress命令生成的后缀为.zip的压缩文件

  B) unzip命令和gzip命令可以解压缩相同类型的文件

  C) tar归档且压缩的文件可以由gzip命令解压缩

  D) tar命令归档后的文件也是一种压缩文件

  152、未定义指令异常的C处理函数在(C)文件中定义。

  A、arch/arm/kernel/traps.c B、arch/arm/mm/fault.c

  C、arch/arm/mm/irq.c D、arch/arm/calls.S

  153、仅当前一个命令执行出错时才执行后一条命令,需要采取的操作是:(C)

  A. command1 && command2

  B. command1 XOR command2

  C. command1 || command2

  D. command1 << command2

  154、具有很多C语言的功能,又称过滤器的是 C 。

  A) csh B) tcsh C) awk D) sed

  155、局域网的网络地址192.168.1.0/24,局域网络连接其它网络的网关地址是192.168.1.1。主机192.168.1.20访问172.16.1.0/24网络时,其路由设置正确的是 B 。

  A) route add –net 192.168.1.0 gw 192.168.1.1 netmask 255.255.255.0 metric 1

  B) route add –net 172.16.1.0 gw 192.168.1.1 netmask 255.255.255.255 metric 1

  C) route add –net 172.16.1.0 gw 172.16.1.1 netmask 255.255.255.0 metric 1

  D) route add default 192.168.1.0 netmask 172.168.1.1 metric 1

  156、不需要编译内核的情况是 D 。

  A) 删除系统不用的设备驱动程序时 B) 升级内核时 C) 添加新硬件时 D)将网卡激活

  157、 内核不包括的子系统是 D 。

  A) 进程管理系统 B) 内存管理系统 C) I/O管理系统 D)硬件管理系统

  158、请选择正确的命令( B),完成加载 NFS Server "svr.server.net"的 /home/nfs 到 /home2。

  A、 mount -t nfs svr.server.net:/home/nfs /home2

  B.、mount -t -s nfs svr.server.net /home/nfs /home2

  C.、nfsmount svr.server.net:/home/nfs /home2

  D、 nfsmount -s svr.server.net /home/nfs /home2

  159、下面(D )命令可以列出当前动态加载的模块清单,会把当前插入的所有内核模块都列出来。

  A、insmod B、rmmod

  C、dmesg D、lsmod

  160、下面对于Bootloader的描述不正确的是(C)

  A、是上电后运行的第一个程序 B、改变系统时钟

  C、Bootloader的两种模式对开发人员没有意义 D、向内核传递启动参数

  161、符号“|"在shell命令中表示:( D )

  A、输出追加 B、输入追加 C、输出重定向,原来的文件被改写 D、管道

  162、通常所说的32位微处理器是指 C 。

  A) 地址总线的宽度为32位     B) 处理的数据长度只能为32位

  C) CPU 字长为32位      D) 通用寄存器数目为32个

  163、在32位处理器上,假设栈顶指针寄存器的当前值为0x00FFFFE8,那么在执行完指令“push eax”(eax为32位寄存器)后,栈指针的当前值应为A

  A) 0x00FFFFE4 B) 0x00FFFFE6 C) 0x00FFFFEA D) 0x00FFFFEC

  164、有若干并发进程均将一个共享变量count 中的值加1 一次,那么有关count 中的值说法正确的是:______ 。(C )

  A、肯定有不正确的结果

  B、肯定有正确的结果

  C、若控制这些并发进程互斥执行count 加1 操作,count 中的值正确

  D、A,B,C 均不对

  165、使用Vim作为文本编辑器,在指令模式下要将光标移动到文档的最后一行的命令是(C)。

  A、0 B、$

  C、G D、GG

  166、已知某用户stud1,其用户目录为/home/stud1。如果当前目录为/home,进入目录/home/stud1/test的命令是 ()。

  A 、cd test B、cd /stud1/test

  C、 cd stud1/test D、cd home

  167.如果想配置一台匿名ftp服务器,应修改 C 文件。

  A) /etc/gateway B) /etc/ftpservers

  C) /etc/ftpusers D) /etc/inetd.conf

  168.要配置NFS服务器,在服务器端主要配置 C 文件。

  A) /etc/rc.d/rc.inet1 B) /etc/rc.d/rc.M

  C) /etc/exports D) /etc/rc.d/rc.S

  169、 Boot Loader 的stage2通常使用C语言实现,以完成复杂的功能,并增加可读性和可移植性,以下哪一步骤属于stage2的内容:__D____

  A . 为加载 Boot Loader 的 stage2 准备 RAM 空间

  B . 设置好堆栈

  C . 硬件设备初始化

  D . 将 kernel 映像和根文件系统映像从 flash 上读到 RAM 空间中

  170、执行以下程序段

  MOV SP, #3AH

  MOV A, #20H

  MOV B, #30H

  PUSH ACC

  PUSH B

  POP ACC

  POP B

  后,A和B的内容是(B )

  A、20H,30H B、30H,20H

  C、3AH,30H D、3AH,3AH

  171、一个文件名字为rr.Z,可以用来解压缩的命令是: D 。

  A) tar B) gzip C) compress D) uncompress

  172、在使用ln建立链接时,为了跨越不同的文件系统,需要使用(B )。

  A.普通链接 B.硬链接

  C.特殊链接 D.软链接

  173、( B )不是进程和程序的区别。

  A. 程序是一组有序的静态指令,进程是一次程序的执行过程

  B. 程序只能在前台运行,而进程可以在前台或后台运行

  C. 程序可以长期保存,进程是暂时的

  D. 程序没有状态,而进程是有状态的

  174、PV操作是在(D )上的操作。

  A、临界区 B、进程

  C、缓冲区 D、信号量

  175.在TCP/IP模型中,应用层包含了所有的高层协议,在下列的一些应用协议中, B 是能够实现本地与远程主机之间的文件传输工作。

  A) telnet B) FTP C) SNMP D) NFS

  176、中断向量是指(C ) 。

  A、中断断点的地址 B、中断向量表起始地址

  C、中断处理程序入口地址 D、中断返回地址

  177、 如果Boot Loader、内核、启动参数以及其他的系统映像四部分在固态存储设备上分别独立存放,则其存储结构的分配顺序应当是:_D____。

  A . 文件系统、内核、启动参数、Bootloader

  B . 启动参数、Bootloader、内核、文件系统

  C . Bootloader、内核、启动参数、文件系统

  D . Bootloader、启动参数、内核、文件系统

  178、关于Qt说法不正确的是(C )

  A、是跨平台的C++图形用户界面库 B、Qt Embedded(Qtopia)基于Framebuffer

  C、Qt的各元件通信是基于callback的 D、可以同几种Java虚拟机集成

  179、暂停当前(前台)任务并放到后台去的命令是(A)。

  A、 + Z B、 + C

  C、 + P D、&

  180、关于RISC指令系统描述不正确的是( C )。

  A、优先选取使用频率最高的一些指令 B、避免使用复杂指令

  C、不需要一个复杂的编译器 D、寻址方式种类少

  181、启动samba服务器进程,可以有两种方式:独立启动方式和父进程启动方式,其中前者是在 C 文件中以独立进程方式启动。

  A) /usr/sbin/smbd B) /usr/sbin/nmbd C) rc.samba D) /etc/inetd.conf

  182、Linux系统中的设备可分为三类:字符设备、块设备和网络设备,其中不是基于文件系统访问的设备是 ( C) 。

  A. 字符设备 B. 块设备

  C. 网络设备 D. 字符和块设备

  183、Samba服务器的配置文件是 D 。

  A) httpd.conf B) inetd.conf C) rc.samba D) smb.conf

  184、在给定文件中查找与设定条件相符字符串命令为(A )

  A、grep B、gzip

  C、find D、sort

  185、下列变量名中有效的shell变量名是: C 。

  A) -2-time B) _2$3 C )trust_no_1 D ) 2004file

  186、以下叙述中正确的是 C 。

  A) 宿主机与目标机之间只需要建立逻辑连接即可

  B) 在嵌入式系统中,调试器与被调试程序一般位于同一台机器上

  C) 在嵌入式系统开发中,通常采用的是交叉编译器

  D) 宿主机与目标机之间的通信方式只有串口和并口两种

  187、在使用GCC编译器的过程中,如果只想生成目标文件而不进行连接,需要使用选项( C )

  A.-S B.-o C.-c D.-E

  188、以下做法不利于嵌入式应用软件的移植的是 D 。

  A) 在软件设计上,采用层次化设计和模块化设计

  B) 在软件体系结构上,在操作系统和应用软件之间引入一个虚拟机层,把一些通用的、共性的操作系统API接口函数封装起来

  C) 将不可移植的部分局域化,集中在某几个特定的文件之中

  D) 在数据类型上,尽量直接使用C语言的数据类型

  189、对ARM处理器说法不正确的是( D )。

  A、小体积、低功耗、低成本、高性能

  B、支持Thumb(16位)/ARM(32位)双指令集

  C、只有Load/Store指令可以访问存储器

  D、寻址方式多而复杂

  190、嵌入式微控制器相比嵌入式微处理器的的最大特点(B )。

  A、体积大大减小 B、单片化

  C、功耗低 D、成本高

  191.c-shell中变量名ignoreeof表示 C

  A)执行之前显示每一条命令 B)使文件名结束

  C)必须用logout注销而不是^D D)禁止文件名扩展

  192.在某嵌入式操作系统中,若P、V操作的信号量S的初值为2,当前值为-1,则表示等待信号量S的任务个数为B 。

  A ) 0       B) 1       C) 2       D) 3

  193、在字符界面环境下注销LINUX,可用( C )命令。

  A. exit或quit

  B. quit或ctrl+D

  C. exit或ctrl+D

  D. 以上都可

  194、Linux文件权限一共10位长度,分成四段,第一段表示的内容是( A )

  A 文件类型 B 文件所有者的权限

  C 文件所有者所在组的权限 D 其他用户的权限

  195、对于所有用户具有读的文件权限,而文件主同时具有执行权限的文件权限是( B )

  a.655 b.544 c.644 d.540

  196、下面哪条命令可用来确保文件“file1”存在( B )

  A. cp file1 /dev/null

  B. touch file1

  C. create file1

  D. mkfile file1

  197、操作系统中同时存在着多个进程,它们(C )

  A、不能共享系统资源 B、不能调用同一段程序代码

  C、可以共享所有的系统资源 D、可以共享允许共享的系统资源

  198、在变址寻址方式中,操作数的有效地址等于(C)

  A、变址寄存器内容+形式地址(位移量)

  B、程序计数器内容+形式地址

  C、基址寄存器内容+形式地址

  D、堆栈指示器内容+形式地址

  199、下列文件系统中,采用了inode来标识文件的是( D )

  a.ntfs

  b.fat16

  c.fat32

  d.ext3

  200、如果我们需要设置一个文件,使它们作为可执行文件运行时,该进程是作为文件所有者的权限,此时我们需要额外设置该文件的 C

  A ) seg-GID位 B ) 粘滞位 C) set-UID位 D) UMASK

  二、多项选择题

  1. 嵌入式操作系统不同于通用操作系统的功能是( B C )

  A、任务调度 B、可裁减性 C、 强实时 D、设备管理  E、存储器管理

  2. linux操作系统支持的文件系统有( A B C D E )

  A、EXT2 B、VFAT C、NFS D、ISO9660  E、JFFS

  3. Linux系统中的设备文件通常有如下分类(B C D )

  A、虚拟设备 B、字符设备 C、网络设备 D、块设备 E、存储设备

  4. 片内总线是大规模集成电路(Large Scale Integrated Circuit:LSI)和超大规模集成电路(VLSI)内部各寄存器或功能单元之间的信息交换通道,它由生产厂家决定,下列属于片内总线的有(A B D )。

  A、AHB总线 B、APB总线 C、USB总线 D、ASB 总线  E、1394总线

  5. 下列能改变ARM处理器工作状态的指令有( C D)

  A、B指令 B、SUB指令 C、BX指令 D、BLX指令 E、BL指令

  6. 常用的软件开发模型有(B C D )

  A、结构型 B、 原型模型 C、 迭代型 D、瀑布型 E、综合型

  7. ARM处理器的工作模式中属于异常模式的有( C D E )

  A、用户模式usr B、系统模式sys C、 外部中断模式irq D、中止模式abt E、快速中断模式fiq

  8. 芯片总线又称元件级总线,它是指系统内或插件板内各元件之间所使用的总线,下列属于芯片总线的有( A C D )

  A、I2C总线 B、ISA总线 C、SPI总线 D、SCI总线  E、PCI总线

  9. 在ARM汇编语言程序设计中主程序和子程序参数的传递需要满足ATPCS规则,ATPCS规则中用来传递参数的寄存器是(A B C D )

  A、R0 B、R1 C、R2 D、R3 E、R4

  三、填空题

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

  2、 前台起动的进程使用 ctrl+c 终止。

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

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

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

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

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

  8、 在使用ls命令时,用八进制形式显示非打印字符应使用参数 -b 。

  9、 在shell编程时,使用方括号表示测试条件的规则是:方括号两边必须有 空格 。

  10、 在Windows9.x环境下共享Unix/Linux中的用户目录的一个工具是 Samba服务器。

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

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

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

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

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

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

  17、 在CPU和物理内存之间进行地址转换时,MMU将地址从虚拟(逻辑)地址空间映射到 物理地址空间 。

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

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

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

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

  22、 在Linux多线程编程时,需要包含头文件___pthread.h___。

  23、 卸载Linux内核模块使用命令___rmmod___。

  24、 ARM处理器有多种运行模式,用户程序运行在其中的___用户___模式。

  25、 ARM处理器的中断有两种处理模式,分别为___快速中断___模式和的___外部中断___模式。

  26、 Linux系统中,普通用户使用的命令通常保存在___/bin___目录中。

  27、 setenv命令的功能是___设置环境变量___。

  28、 Linux文件的链接可分为符号链接和___硬链接___两种。

  29、 在shell编程时,要把一个用户的输入赋值给一个变量,使用__read_______命令。

  30、 Qt/Embedded使用___信号___和___插槽___的机制实现函数的回调。

  31、 加载Linux内核模块使用命令___insmod___。

  32、 ARM处理器有多种运行模式,用户程序运行在其中的___用户___模式。

  33、 Linux系统在启动init进程时使用的配置文件是_/etc/inittab_____。

  34、 VI编辑器有三种工作模式:命令模式、插入模式和___末行模式___。

  35、 交叉编译是指___在一个平台上生成可以在另一个平台上执行的代码___。

  36、 setenv命令的功能是___设置环境变量___。

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

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

  39、 Qt/Embedded的底层图形引擎基于 FrameBuffer 接口技术。

  40、 Linux操作系统的系统管理员(也就是超级用户)帐号是root 。

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

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

  43、 内核分为 进程管理系统 、 内存管理系统 、 IO管理系统 和文件管理系统 等四个子系统。

  44、 嵌入式系统中按照总线所传送的信息类型,可以分为数据总线、地址总线和 控制总线 等几种。

  45、 嵌入式linux系统中,设备类型分为字符设备、块设备 和 网络设备 等三种。

  46、 Linux中所有用户的信息保存于__ /etc/passwd _和__/etc/shadow __文件。

  47、 链接分为__软连接 __和__硬链接 ____链接 。

  48、

  49、 某文件的权限位:d-rw-_r--_r--,用数值形式表示该权限,则该八进制数为_644 ,该文件属性是__目录 _。

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

  51、 进程从产生到终止进程可以具有的基本状态为: _运行态__ 、 _就绪态__ 和 等待态(阻塞态)。

  四、判断题

  1、 在gdb调试过程中,不退出gdb也可以执行UNIX shell命令。(对)

  2、 退出交互模式的shell,应键入quit。(错)

  3、 Linux文件系统的文件都按其作用分门别类地放在相关的目录中,对于外部设备文件,一般应将其放在/etc目录中。(错)

  4、 命令fdisk /mbr的作用是安装系统引导程序到主分区。(错)

  5、 在Linux系统中,测试DNS服务器是否能够正确解析域名的的客户端命令,使用命令 nslookup 。(对)

  6、 命令mount /dev/hdc /mnt/cdrom是将光盘CD-ROM(hdc)安装到文件系统的/mnt/cdrom目录下。(对)

  7、 /home/src目录存放着Linux的源代码。( 错)

  8、 uCOS-II操作系统属于顺序执行系统 。(错 )

  9、 Linux 文件名的长度不得超256个字符。(对 )

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

  11、 基于ARM架构的指令都是32位的。(错)

  12、 激活网卡需要编译内核。( 错)

  13、 可用ctrl+C强行结束后台进程。(错 )

  14、 写回Cache是指CPU在执行写操作时,必须把数据同时写入Cache和主存。(×)

  15、

  16、 文件系统的主要功能是实现虚拟存储。(错)

  17、 进程有三种状态是准备态、执行态和退出态。(错)

  18、 Samba服务器的进程由smbd和nmbd两部分组成。(对)

  19、 shell命令的第一个按键必须是字符、数字或者空格(错)

  20、 Linux 文件名的长度不得超256个字符。(对)

  21、 在gdb调试过程中,用make命令可以不用退出gdb就可以重新产生可执行文件。(对)

  22、 若一台计算机的内存为128MB,则交换分区的大小通常是64M。(错)

  23、 在重新启动Linux系统的同时把内存中的信息写入硬盘,应使用shutdown –r now命令实现。(对)

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

  25、 Samba服务器的进程由smbd和nmbd两部分组成。(对)

  26、 从后台启动进程,应在命令的结尾加上符号@。(错)

  27、 网络管理的重要任务是: 控制 和 监控 。(对)

  28、 函数的标量参数通过传值的方式进行传递,而数组名参数则具有传址调用的语义。( √ )

  29、 (X)根文件系统是具有操作系统的嵌入式系统必须的组成部分。

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

  31、 (V)在2.6内核中加入的抢占点提高了Linux的可抢占性,但Linux仍不能看作实时系统。

  32、 (X)目前的ARM处理器采用的是哈佛体系结构。

  33、 (V)ARM处理器的运行模式可通过中断或异常处理改变。

  34、 (X)C语言中的栈的压入和弹出是由操作系统管理的。

  35、 (X)BootLoader属于嵌入式操作系统的一部分。

  36、 (X)chmod命令可用来修改处理器的运行模式。

  37、 (X)CGI程序由Web服务器解释运行。

  38、 (V)Linux系统中的目录可以看作是一种特殊的文件。

  39、 (X)shell环境变量主要用于脚本的执行过程,不会作用于脚本之外的程序。

  40、 (V)Busybox常用于替代桌面系统中的init和shell等程序,为嵌入式用户提供使用环境。

  41、 (V)LINUX是一个真正的多用户、多任务操作系统,允许多个用户在相同的机器上一次运行很多程序,并能保证相互之间的共享和安全。

  42、 在嵌入式系统中,整个系统的加载启动任务就完全由 Boot Loader 来完成。( √ )

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

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

  45、 Linux 中的 ls 命令的功能是变换工作目录到目标指定目录。( × )

  46、 ARM包含32个通用寄存器。( × )

  47、 Qt Embedded的API同Qt/X11和Qt/Windows的相同,但它并不是基于X11库。( √ )

  48、 kmalloc和vmalloc的区别在于,前者申请到的是物理地址连续的内存空间,而后者则是虚拟地址连续的内存空间,不能用在中断时间。( √ )

  49、 LINUX是一个真正的多任务和分时操作系统,允许多个用户在相同的机器上一次运行很多程序。( √ )

  50、 (X)Linux采用线程调度程序选择线程占用CPU运行。

  51、 (V)在单机系统中可采用关中断的方式保证操作的原子性。

  52、 (X)根文件系统是系统启动时首先加载的文件系统,因此需要快速加载的内容应放置于其中,以加快系统的运行速度。

  53、 (X)线程切换成本小于进程,因此Linux系统中的多线程程序的调度开销要小于多进程程序。

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

  55、 (X)Linux内存管理采用了Slab机制,因此,无需硬件支持,Linux能够很好地支持虚拟存储。

  56、 (X)模块程序运行于内核模式,因此,它们能够访问内核中的所有函数。

  57、 (X)根文件系统所在的分区越大约好,因为根分区越大,Linux启动速度越快。

  58、 (V)一个shell脚本的第一行是:#! /bin/csh它的作用是注释,表示下面脚本是csh脚本。

  59、 (X)目前Linux平台上的各种线程库使得Linux能够在内核空间能够支持多线程。

  60、 (V)Linux允许内核以NFS的形式连接根文件系统

  61、 (V)EXT3文件系统是一种日志型的文件系统。

  62、 (V)BootLoader是嵌入式系统运行的第一个程序。

  63、 (X)自旋锁可以用在单机系统中来保证内核相关操作的原子性。

  64、 (X)Samba服务器在Linux平台上常用作Web服务器。

  65、 在vi编辑器中的命令模式下,重复上一次对编辑的文本进行的操作,可使用下箭头命令。(错 )

  66、 进程有三种状态是准备态、执行态和退出态。( 错 )

  67、 触摸屏是一种输入设备。(√)

  68、 VHDL是一种硬件描述语言,用于设计硬件电子系统。(√)

  69、 二极管具有单向导通性。(√)

  70、 CISC机器多采用Load/Store结构(×)

  71、 GDB是一个用来调试C和C++程序的调试器。(√)

  72、 DSP是专门用于数字信号处理方面的处理器。(√)

  73、 Nand Flash的特点是应用程序可以直接在闪存中运行,不需要把代码读到系统RAM中。(×)

  74、 LCD是一种输出设备。(√)

  五、简答题

  1、简述嵌入式系统中非占先式与占先式调度法的区别有哪些。

  答:

  非占先式调度法也称作合作型多任务(cooperative multitasking),各个任务彼此合作共享一个CPU。中断服务可以使一个高优先级的任务由挂起状态变为就绪状态。(1分)但中断服务以后控制权还是回到原来被中断了的那个任务,直到该任务主动放弃CPU的使用权时,那个高优先级的任务才能获得CPU的使用权。(2分)

  当系统响应时间很重要时,要使用占先式(preemptive)内核。(1分)最高优先级的任务一旦就绪,总能得到CPU的控制权。当一个运行着的任务使一个比它优先级高的任务进入了就绪态,当前任务的CPU使用权就被剥夺了,或者说被挂起了,那个高优先级的任务立刻得到了CPU的控制权。(2分)

  2、什么是硬实时操作系统、软实时操作系统以及二者的区别?

  答:

  在实时系统中,如果系统在指定的时间内未能实现某个确定的任务,会导致系统的全面失败,这样的系统被称为强实时系统或硬实时系统。(1分)强实时系统响应时间一般在毫秒或微秒级。(1分)

  在弱实时系统中,虽然响应时间同样重要,但是超时却不会发生致命的错误。(1分)

  其系统响应时间在毫秒至秒的数量级上,(1分)其实时性的要求比强实时系统要差一些。(2分)

  3、介绍一下嵌入式系统的设计步骤有哪些?各部分主要工作是什么?

  答:

  (1)需求分析阶段,罗列出用户的需求;(1分)

  (2)体系结构设计阶段,描述系统的功能如何实现;(1分)

  (3)详细设计阶段,进行硬件系统与软件系统的分类划分,以决定哪些功能用硬件实现,哪些用软件实现;(1分)

  (4)系统集成,把系统的软件、硬件和执行装置集成在一起,(1分)进行调试,发现并改进在设计过程中的错误;(1分)

  (5)系统测试,对设计好的系统进行测试,看其是否满足给定的要求。(1分)

  4、ARM支持哪两种数据存储格式,简单描述各自特点。

  答:

  分为大端格式和小端格式。(2分)

  大端格式:被存放字数据的高字节存储在存储系统的低地址中,而被存放的字数据的低字节则存放在存储系统的高地址中。(2分)

  小端格式:与大端存储格式相反,在小端存储格式中,存储系统的低地址中存放的是被放字数据中的低字节内容,存储系统的高地址存放的是被存字数据中的高字节内容。(2分)

  5、什么是BootLoader?主要有几种工作模式及主要功能是什么?

  答:

  简单说来,Bootloader就是操作系统内核运行的一段小程序,完成进行初始化系统硬件设置的任务,包括CPU、SDRRAM、Flash、串口等初始化,时钟的设置、存储器的映射。(2分)

  分为启动加载模式和下载模式。

  (1) 启动加载模式

  启动加载(Boot laoding)模式又称为“自主”(Autonomous)模式,是指 Bootloader 从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。(2分)

  (2) 下载模式

  在下载模式下,目标机上的 Bootloader 将先通过串口连接或网络连接等通信手段从宿主机下载文件。(2分)

  6、 简述Bootloader有何作用?

  答案要点:(1)首先,bootloader是在特定硬件平台运行的程序,严重依赖于硬件平台,需要移植;(2)是系统上电之后,第一个运行的程序,系统在上电或复位时通常都从地址 0x0 处开始执行,而在这个地址处安排的通常就是系统的 Boot Loader 程序;(3)bootloader程序的设计目标是启动嵌入式操作系统,嵌入式操作系统的启动需要一定的条件,这些条件由bootloader来满足;(4)Bootloader一般具有对存储器和网络接口操作的功能;如擦除、读写Flash,通过USB、串口下载文件等

  7、 程序、进程、线程有何区别?

  答案要点:程序是编译后形成的可执行代码,是静止的。进程是程序的一次执行,是活动的。线程是进程的可执行单元,同一进程的不同线程共享进程的资源和地址空间。

  8、 简述嵌入式系统的几个重要特征?

  答案要点:系统内核小 ;专用性强 ;系统精简 ;高实时性的系统软件;多任务的操作系统 ;需要专用的开发工具和环境。 答出上述4个并适当阐述的即可给满分。

  9、 什么是程序的局部性原理?

  答案要点:程序的局部性原理是指程序在执行过程中的一个较短时期内,它所执行的指令和访问的存储空间分别局限在一定的区域内。具体表现在时间局部性和空间局部性。时间局部性是指一条指令的一次执行和下一次执行、一个数据的一次访问和下一次访问,都集中在一个较短的时间内。空间局部性是指程序执行了某条指令,则它相邻的几条指令也可能马上执行。

  10、Linux作为嵌入式操作系统的优势?

  答:

  Linux作为嵌入式操作系统的优势主要有以下几点:

  1. 可应用于多种硬件平台。Linux已经被移植到多种硬件平台,这对于经费,时间受限制的研究与开发项目是很有吸引力的。原型可以在标准平台上开发后移植到具体的硬件上,加快了软件与硬件的开发过程。Linux采用一个统一的框架对硬件进行管理,从一个硬件平台到另一个硬件平台的改动与上层应用无关。(1分)

  2. Linux的高度模块化使添加部件非常容易。本身内置网络支持,而目前嵌入式系统对网络支持要求越来越高。(1分)

  3. Linux是一个和Unix相似、以内核为基础的、具有完全的内存访问控制,支持大量硬件(包括X86,Alpha、ARM和Motorola等现有的大 部分芯片)等特性的一种通用操作系统。(1分)

  4. Linux可以随意地配置,不需要任何的许可证或商家的合作关系。其程序源码全部公开,任何人可以修改并在GUN通用公共许可证(GNU General Public License)下发行。这样,开发人员可以对操作系统进行定制,适应其特殊需要。(1分)

  5. Linux带有Unix用户熟悉的完善的开发工具,几乎所有的Unix系统的应用软件都已移植到了Linux上。其强大的语言编译器GCC,C++等也可以很容易得到,不但成熟完善,而且使用方便。(分)

  11、简述网络文件系统NFS,并说明其作用。

  答:

  NFS即网络文件系统,是主机通过网络进行文件共享的协议(2分)。通常用于UNIX或类UNIX系统中。NFS服务器的共享目录可以被NFS客户端作为文件系统挂载到本地中(1分)。它的作用是通常用于局域网中用于文件共享(1分)。它的特点是不想http和ftp要把文件下载到本地才能够被访问,NFS不需要下载到本地即可访问(1分)。

  12、简述Boot Loader 的两种操作模式 (Operation Mode)?

  答:

  启动加载(Boot loading)模式:这种模式也称为"自主"(Autonomous)模式。也即 Boot Loader 从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。这种模式是 Boot Loader 的正常工作模式,因此在嵌入式产品发布的时侯,Boot Loader 显然必须工作在这种模式下。 (2.5分)

  下载(Downloading)模式:在这种模式下,目标机上的 Boot Loader 将通过串口连接或网络连接等通信手段从主机(Host)下载文件,比如:下载内核映像和根文件系统映像等。从主机下载的文件通常首先被 Boot Loader 保存到目标机的 RAM 中,然后再被 Boot Loader 写到目标机上的FLASH 类固态存储设备中。Boot Loader 的这种模式通常在第一次安装内核与根文件系统时被使用;此外,以后的系统更新也会使用 Boot Loader 的这种工作模式。工作于这种模式下的 Boot Loader 通常都会向它的终端用户提供一个简单的命令行接口。(2.5分)

  13、简述嵌入式系统设计过程。

  答;每条1分

  (1)需求分析 (4)设计硬件构件和软件构件

  (2)规格说明 (5)系统集成

  (3)体系结构设计 (6)系统测试

  14、ARM启动代码是系统加电后运行的第一段软件代码,由于这类代码直接面对处理器内核和硬件控制器进行编程,一般都是用汇编语言。一般通用的内容主要包括?

  答:每条1分

  中断向量表

  初始化存储器系统

  初始化堆栈

  初始化有特殊要求的断口,设备

  初始化用户程序执行环境

  改变处理器模式

  呼叫主应用程序

  15、什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?

  答:

  链接分硬链接和符号链接。

  符号链接可以建立对于文件和目录的链接。符号链接可以跨文件系统,即可以跨磁盘分区。符号链接的文件类型位是l,链接文件具有新的i节点。

  硬链接不可以跨文件系统。它只能建立对文件的链接,硬链接的文件类型位是-,且硬链接文件的i节点同被链接文件的i节点相同。

  16、进程的查看和调度分别使用什么命令?

  答:

  进程查看的命令是ps和top。

  进程调度的命令有at,crontab,batch,kill。

  17、简述嵌入式系统中非占先式与占先式调度法的区别有哪些。

  答:

  非占先式调度法也称作合作型多任务(cooperative multitasking),各个任务彼此合作共享一个CPU。中断服务可以使一个高优先级的任务由挂起状态变为就绪状态。(1分)但中断服务以后控制权还是回到原来被中断了的那个任务,直到该任务主动放弃CPU的使用权时,那个高优先级的任务才能获得CPU的使用权。(2分)

  当系统响应时间很重要时,要使用占先式(preemptive)内核。(1分)最高优先级的任务一旦就绪,总能得到CPU的控制权。当一个运行着的任务使一个比它优先级高的任务进入了就绪态,当前任务的CPU使用权就被剥夺了,或者说被挂起了,那个高优先级的任务立刻得到了CPU的控制权。(2分)

  18、什么是BootLoader,其主要功能是什么?

  答:Boot Loader相当于普通pc机的BIOS,是在系统复位后执行的第一段代码。因此,整个系统的加载启动任务就完全由Boot Loader来完成。它首先完成系统硬件的初始化,包括时钟的设置、存储器的映射等。并设置堆栈指针,然后跳转到操作系统内核入口,如系统在加电或复位时通常从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的Boot Loader程序。这样,将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。在此之后,系统的运行在操作系统的控制下了。通常,Boot Loader 是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的 Boot Loader 几乎是不可能的。尽管如此,我们仍然可以对 Boot Loader 归纳出一些通用的概念来,以指导用户特定的 Boot Loader 设计与实现。

  不同的嵌入式系统其Boot Loader一般是不同的。从操作系统的角度来看, Boot Loader的总目标就是正确地调用内核来执行。

  另外,由于大多数Boot Loader都分为阶段1和阶段2两部分。依赖于CPU的体系结构的代码,比如设备初始化代码等,通常都放在阶段1中,而且通常用汇编语言来实现,以达到短小精悍的目的。而阶段2通常用C语言来实现,这样可以实现一些复杂的功能,而且代码会具有更好的可读性和移植性。

  19、什么是硬实时操作系统、软实时操作系统以及二者的区别?

  答:

  在实时系统中,如果系统在指定的时间内未能实现某个确定的任务,会导致系统的全面失败,这样的系统被称为强实时系统或硬实时系统。(1分)强实时系统响应时间一般在毫秒或微秒级。(1分)

  在弱实时系统中,虽然响应时间同样重要,但是超时却不会发生致命的错误。(1分)

  其系统响应时间在毫秒至秒的数量级上,(1分)其实时性的要求比强实时系统要差一些。(2分)

  20、多线程有几种实现方法,线程间同步有几种实现方法,都是什么?

  答:

  两种实现方法,一种是继承Thread,另外一种是实现接口Runnable。

  同步的实现方法有两种,分别是synchronized, wait与notify。用synchronized可以对一段代码、一个对象及一个方法进行加锁。用wait与notify可以使对象处于等待及唤醒方式导致同步,因为每个对象都直接或间接的继承了Object类。

  21、介绍一下嵌入式系统的设计步骤有哪些?各部分主要工作是什么?

  答:

  (1)需求分析阶段,罗列出用户的需求;(1分)

  (2)体系结构设计阶段,描述系统的功能如何实现;(1分)

  (3)详细设计阶段,进行硬件系统与软件系统的分类划分,以决定哪些功能用硬件实现,哪些用软件实现;(1分)

  (4)系统集成,把系统的软件、硬件和执行装置集成在一起,(1分)进行调试,发现并改进在设计过程中的错误;(1分)

  (5)系统测试,对设计好的系统进行测试,看其是否满足给定的要求。(1分)

  22、某/etc/fstab文件中的某行如下:

  /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2

  请解释其含义。

  答:

  (1)第一列:将被加载的文件系统名;

  (2)第二列:该文件系统的安装点;

  (3)第三列:文件系统的类型;

  (4)第四列:设置参数;

  (5)第五列:供备份程序确定上次备份距现在的天数;

  (6)第六列:在系统引导时检测文件系统的顺序。

  23、ARM支持哪两种数据存储格式,简单描述各自特点。

  答:

  分为大端格式和小端格式。(2分)

  大端格式:被存放字数据的高字节存储在存储系统的低地址中,而被存放的字数据的低字节则存放在存储系统的高地址中。(2分)

  小端格式:与大端存储格式相反,在小端存储格式中,存储系统的低地址中存放的是被放字数据中的低字节内容,存储系统的高地址存放的是被存字数据中的高字节内容。(2分)

  25、什么是BootLoader?主要有几种工作模式及主要功能是什么?

  答:

  简单说来,Bootloader就是操作系统内核运行的一段小程序,完成进行初始化系统硬件设置的任务,包括CPU、SDRRAM、Flash、串口等初始化,时钟的设置、存储器的映射。(2分)

  分为启动加载模式和下载模式。

  (3) 启动加载模式

  启动加载(Boot laoding)模式又称为“自主”(Autonomous)模式,是指 Bootloader 从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。(2分)

  (4) 下载模式

  在下载模式下,目标机上的 Bootloader 将先通过串口连接或网络连接等通信手段从宿主机下载文件。(2分)

  26、简述进程的启动方式。

  答:

  在Linux中启动一个进程有手工启动和调度启动两种方式:

  (1)手工启动

  用户在输入端发出命令,直接启动一个进程的启动方式。可以分为:

  ①前台启动:直接在SHELL中输入命令进行启动。

  ②后台启动:启动一个目前并不紧急的进程,如打印进程。

  (2)调度启动

  系统管理员根据系统资源和进程占用资源的情况,事先进行调度安排,指定任务运行的时间和场合,到时候系统会自动完成该任务。

  27、简述Bootloader有何作用?

  答案要点:(1)首先,bootloader是在特定硬件平台运行的程序,严重依赖于硬件平台,需要移植;(2)是系统上电之后,第一个运行的程序,系统在上电或复位时通常都从地址 0x0 处开始执行,而在这个地址处安排的通常就是系统的 Boot Loader 程序;(3)bootloader程序的设计目标是启动嵌入式操作系统,嵌入式操作系统的启动需要一定的条件,这些条件由bootloader来满足;(4)Bootloader一般具有对存储器和网络接口操作的功能;如擦除、读写Flash,通过USB、串口下载文件等

  28、ARM处理器中,引起异常的原因是什么?

  答:(1)、指令执行引起的异常

  软件中断、未定义指令(包括所要求的协处理器不存在是的协处理器指令)、预取址中止(存储器故障)、数据中止。

  (2)、外部产生的中断

  复位、FIQ、IRQ。

  29、程序、进程、线程有何区别?

  答案要点:程序是编译后形成的可执行代码,是静止的。进程是程序的一次执行,是活动的。线程是进程的可执行单元,同一进程的不同线程共享进程的资源和地址空间。

  30、Linux系统中线程的同步方式有互斥量、信号量和条件变量等。假设现在需要设计一个多线程的应用程序,试分析一下以上几种同步方式分别可在什么场合下使用(6分)。

  参考答案:

  Mutex互斥量,用于操作某个临界资源时对该资源上锁,以实现互斥地对独占资源的使用(2分)

  Semophore信号灯,信号灯内有一计数器,可以用于对多个同类资源的分配。当资源用完时,申请资源的线程会在信号量上睡眠,有线程释放资源时,再将该线程唤醒继续运行。(2分)

  Condition条件变量,条件变量用于等待信号。当一个线程需要等待某个信号时,就可到条件变量上等待,当信号具备时,系统会唤醒该线程继续运行。(2分)

  31、简述嵌入式系统的几个重要特征?

  答案要点:系统内核小;专用性强 ;系统精简 ;高实时性的系统软件 ;多任务的操作系统 ;需要专用的开发工具和环境。 答出上述4个并适当阐述的即可给满分。

  32、什么是程序的局部性原理?

  答案要点:程序的局部性原理是指程序在执行过程中的一个较短时期内,它所执行的指令和访问的存储空间分别局限在一定的区域内。具体表现在时间局部性和空间局部性。时间局部性是指一条指令的一次执行和下一次执行、一个数据的一次访问和下一次访问,都集中在一个较短的时间内。空间局部性是指程序执行了某条指令,则它相邻的几条指令也可能马上执行。

  33、简述Busybox的工作原理。(4分)

  参考答案:Busybox是通过一个程序去实现原来Linux的众多命令程序。这样可使原来3.5MB左右的工具包压缩大约200KB大小一个程序,这对嵌入式系统非常重要(2分)。

  为了使用的方便,Busybox通过创建其原文件的符号连接来达到传递具体执行命令的目的。例如,创建一个mv的符号连接,当用户键入mv后,mv实际上会以C语言中的argv[0]传递给Busybox的主程序。这样Busybox就可据此跳转到相应的代码去执行。(2分)

  34、Linux作为嵌入式操作系统的优势?

  答:

  Linux作为嵌入式操作系统的优势主要有以下几点:

  1. 可应用于多种硬件平台。Linux已经被移植到多种硬件平台,这对于经费,时间受限制的研究与开发项目是很有吸引力的。原型可以在标准平台上开发后移植到具体的硬件上,加快了软件与硬件的开发过程。Linux采用一个统一的框架对硬件进行管理,从一个硬件平台到另一个硬件平台的改动与上层应用无关。(1分)

  2. Linux的高度模块化使添加部件非常容易。本身内置网络支持,而目前嵌入式系统对网络支持要求越来越高。(1分)

  3. Linux是一个和Unix相似、以内核为基础的、具有完全的内存访问控制,支持大量硬件(包括X86,Alpha、ARM和Motorola等现有的大 部分芯片)等特性的一种通用操作系统。(1分)

  4. Linux可以随意地配置,不需要任何的许可证或商家的合作关系。其程序源码全部公开,任何人可以修改并在GUN通用公共许可证(GNU General Public License)下发行。这样,开发人员可以对操作系统进行定制,适应其特殊需要。(1分)

  5. Linux带有Unix用户熟悉的完善的开发工具,几乎所有的Unix系统的应用软件都已移植到了Linux上。其强大的语言编译器GCC,C++等也可以很容易得到,不但成熟完善,而且使用方便。(分)

  35、简述Linux需要进行进程调度的时机(6分)

  参考答案:(每小点1分)

  Linux执行进程调度一般是在以下情况发生的:

  (1)正在执行的进程运行完毕;

  (2)正在执行的进程调用阻塞原语将自己阻塞起来进入等待状态;

  (3)正在执行的进程调用了P原语操作,从而因资源不足而被阻塞;或调用了V原语操作激活了等待资源的进程队列;

  (4)执行中的进程提出I/O请求后被阻塞;

  (5)系统分配的时间片已经用完;

  以上都是CPU为不可剥夺方式下的引起进程调度的原因。在CPU方式是可剥夺时,还有下面的原因:

  (6)就绪队列中的某个进程的优先级变得高于当前运行进程的优先级,从而也将引起进程调度。

  37、什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?(6分)

  参考答案:

  链接分硬链接和符号链接。

  符号链接可以建立对于文件和目录的链接。符号链接可以跨文件系统,即可以跨磁盘分区。符号链接的文件类型位是l,链接文件具有新的i节点。(3分)

  硬链接不可以跨文件系统。它只能建立对文件的链接,硬链接的文件类型位是-,且硬链接文件的i节点同被链接文件的i节点相同。(3分)

  38、简述Boot Loader 的两种操作模式 (Operation Mode)?

  答:

  启动加载(Boot loading)模式:这种模式也称为"自主"(Autonomous)模式。也即 Boot Loader 从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。这种模式是 Boot Loader 的正常工作模式,因此在嵌入式产品发布的时侯,Boot Loader 显然必须工作在这种模式下。 (2.5分)

  下载(Downloading)模式:在这种模式下,目标机上的 Boot Loader 将通过串口连接或网络连接等通信手段从主机(Host)下载文件,比如:下载内核映像和根文件系统映像等。从主机下载的文件通常首先被 Boot Loader 保存到目标机的 RAM 中,然后再被 Boot Loader 写到目标机上的FLASH 类固态存储设备中。Boot Loader 的这种模式通常在第一次安装内核与根文件系统时被使用;此外,以后的系统更新也会使用 Boot Loader 的这种工作模式。工作于这种模式下的 Boot Loader 通常都会向它的终端用户提供一个简单的命令行接口。(2.5分)

  39、模块的编程和普通程序的编程有哪些区别?(6分)

  参考答案:

  主要区别为:

  (1)因为内核模块运行在内核态,所以包含的头文件是内核程序相关的头文件,而普通程序则包含的是glibc的头文件(1分)

  (2)模块程序没有main函数,而是通过init_module函数在加载后初始化。(2分)

  (3)模块程序内可直接调用内核函数,而普通程序则只能通过系统调用使用内核函数。(2分)

  (4)普通用户程序可运行多次,而内核函数通常则只能加载1次(1分)。

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

  参考答案:

  [每行1分]

  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

  43、简述Linux的VFS机制及其特点?(5分)

  参考答案:

  VFS是一种抽象的文件机制,内核中对文件系统的相关操作系统实际上都通过操作VFS实现,也就是说VFS是对各具体文件系统的抽象。(3分)

  VFS使得内核其他部分无须关心不同文件系统之间的差异,使得Linux可以支持多种类型的文件系统。当然,因为增加了抽象层,会有类型转换的开销。(2分)

  44、模块的编程和普通程序的编程有哪些区别?(5分)

  参考答案:

  主要区别为:

  (1)因为内核模块运行在内核态,所以包含的头文件是内核程序相关的头文件,而普通程序则包含的是glibc的头文件(1分)

  (2)模块程序没有main函数,而是通过init_module函数在加载后初始化。(2分)

  (3)模块程序内可直接调用内核函数,而普通程序则只能通过系统调用使用内核函数。(2分)

  45、BootLoader有哪几种工作模式?各有什么特点(5分)

  参考答案:启动加载模式和下模式(2分)。前者“自主”,不需要用户干预,后者可响应用户的交互请求。(3分)

  46、简述嵌入式系统调试有哪几种方式(5分)

  参考答案:

  模拟器方式(1分)、在线仿真器方式(1分)、监控器方式(1分)、在线调试器方式,如JTAG(2分)。

  47、Qt/Embedded的主要特点是什么?(5分)

  参考答案:

  是一个专门为嵌入式系统设计的图形用户界面的工具包(1分)。支持UNIX和Windows平台(1分)。采用面向对象的思想开发(1分),开发接口与桌面的Qt相同,因此桌面应用程序可方便的移植到Qt/E(1分)。不分层的架构使得其他运行速度很快(1分)。

  48、简述嵌入式系统的开发流程。

  参考答案:

  需求分析阶段(1分)

  体系结构设计(1分)

  硬件/软件设计(1分)

  系统集成(1分)

  代码固化(1分)

  49、简述C语言中数组和指针的异同点。

  参考答案:

  相同点:(1)表达式中的数组名被编译器当作一个指向该数组第一个元素的指针(1分)

  (2)下标总是与指针偏移量相同(1分)

  (3)在函数参数的声明中,数组被编译器当作一个指向该数组第一个元素的指针(1分)

  不同点:(1)指针用于保存数据的地址,而数组用于保存数据(1分)

  (2)指针是间接访问而数组是直接访问方式(1分)

  50、什么是交叉编译?为什么要采用交叉编译(5分)

  参考答案:所谓交叉编译,是指在一个平台上编译生成在另一个平台上运行的可执行程序。(3分)。之所以采用交叉编译,是因为目标平台上不具备直接运行开发环境的条件。(2分)

  。

  51、什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?

  参考答案:

  链接分硬链接和符号链接。

  符号链接可以建立对于文件和目录的链接。符号链接可以跨文件系统,即可以跨磁盘分区。符号链接的文件类型位是l,链接文件具有新的i节点。(3分)

  硬链接不可以跨文件系统。它只能建立对文件的链接,硬链接的文件类型位是-,且硬链接文件的i节点同被链接文件的i节点相同。(2分)

  52、简述Boot Loader的主要功能。

  参考答案:

  基本硬件设备初始化。(1分)

  设置好堆栈。 (1分)

  检测系统内存映射(memory map)。 (1分)

  将 kernel 映像和根文件系统映像从 flash 上读到 RAM 空间中。(1分)

  为内核设置启动参数,调用内核。(1分)

  53、嵌入式Linux系统的根文件系统通常应该包括哪个内容?

  参考答案:

  通常包括:init、libc库、驱动模块、必需的应用程序和系统配置脚本。(各1分)

  54、

  55、回答下面问题:

  a) 对于整形变量A=0x12345678,请画出在little endian及big endian的方式下在内存中是如何存储的。

  b) 在ARM系统中,函数调用的时候,参数是通过哪种方式传递的?

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

  答:

  a) 0x12345678

  little endian big endian 刚好反过来

  高地址--〉 0x12 低地址--〉 0x12

  0x34 0x34

  0x56 0x56

  低地址--〉 0x78 高地址--〉 0x78

  b)

  答:应用程序中使用中间寄存器及数据栈来传递参数。

  在arm汇编中,如果第1~4个参数通过r0 -r3寄存器来传递,超过4个的使用数据栈进行传递,输出函数由r0传递。

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

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

  56、某Linux主机的/etc/rc.d/rc.inet1文件中有如下语句,请修正错误,并解释其内容。

  /etc/rc.d/rc.inet1:

  ……

  ROUTE add –net default gw 192.168.0.101 netmask 255.255.0.0 metric 1

  ROUTE add –net 192.168.1.0 gw 192.168.0.250 netmask 255.255.0.0 metric 1

  答:修正错误:

  (1)ROUTE应改为小写:route;(2)netmask 255.255.0.0应改为:netmask 255.255.255.0;

  (3)缺省路由的子网掩码应改为:netmask 0.0.0.0;

  (4)缺省路由必须在最后设定,否则其后的路由将无效。

  解释内容:

  (1)route:建立静态路由表的命令;(2)add:增加一条新路由;

  (3)-net 192.168.1.0:到达一个目标网络的网络地址;

  (4)default:建立一条缺省路由;(5)gw 192.168.0.101:网关地址;

  (6)metric 1:到达目标网络经过的路由器数(跳数)。

  6.下述代码取自u-boot,请对其加以逐行注释和分析。

  typedef int (init_fnc_t) (void);

  init_fnc_t *init_sequence[] = {

  cpu_init,

  board_init,

  env_init,

  serial_init,

  display_banner,

  NULL,

  };

  init_fnc_t **init_fnc_ptr;

  for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr)

  {

  if ((*init_fnc_ptr)() != 0) {

  hang ();

  }

  }

  4.简述2.4与2.6内核模块机制的改变对编写设备驱动程序的影响?

  答:2.4内核中,模块的编译只需内核源码头文件;需要在包含linux/modules.h之前定义MODULE;编译、连接后生成的内核模块后缀为.o。2.6内核中,模块的编译需要配置过的内核源码;编译、连接后生成的内核模块后缀为.ko;

  在2.6 内核中,内核模块必须调用宏module_init 与module_exit() 去注册初始化与退 出函数。在2.4内核中,如果初始化函数命名为init_module()、退出函数命名为cleanup_module()。

  2.4内核中,模块自身通过MOD_INC_USE_COUNT、MOD_DEC_USE_COUNT宏来管理自己被使用的计数。2.6内核提供了更健壮、灵活的模块计数管理接口try_module_get(&module)及module_put (& module)取代2.4中的模块使用计数管理宏;模块的使用计数不必由自身管理,而且在管理模块使用计数时考虑到SMP与 PREEMPT机制的影响。

  2.4 内核下,缺省情况时模块中的非静态全局变量及函数在模块加载后会输出到内核空间。2.6内核下,缺省情况时模块中的非静态全局变量及函数在模块加载后不会输出到内核空间,需要显式调用宏EXPORT_SYMBOL。

  57、论述一下问题

  (1) ARM中引起异常的原因

  (2) 在ARM体系中,异常中断向量表的大小是多少,其中每个异常中断占据多少字节

  (3) 异常中断的处理、返回过程。

  答:(1)原因主要:

  a.指令执行引起的异常

  软件中断、未定义指令(包括所要求的协处理器不存在是的协处理器指令)、预取址中止(存储器故障)、数据中止。

  b.外部产生的中断

  复位、FIQ、IRQ。

  (2)在ARM体系中,异常中断向量表的大小为32字节,其中每个异常中断占据4个字节大小,保留了4个字节空间。

  (3)ARM处理器对异常中断的响应过程是首先保存处理器当前状态、中断屏蔽位及CPSR寄存器中的各个条件标志位。这是通过将当前程序状态寄存器CPSR的内容保存到将要执行的异常中断对应的SPSR寄存器中实现的。其次设置当前程序状态寄存器CPSR中相应的位。再次将寄存器LR_mode(R14_mode)设置成返回地址。最后将PC设置成该异常中断的中断向量地址,从而跳转到对应的中断处理程序处执行。

  ARM处理器从异常中断程序中返回的过程:首先恢复被中断程序的处理器状态,也就是将SPSR_mode 内容复制到CPSR。然后返回到发生异常中断指令的下一条指令处执行,即将LR_mode(R14_mode)寄存器的内容复制到PC中。

  58、在linux中如何编译C程序,使之成为可执行文件(3分)?如何调试(3分)?

  答案:

  [问题1](3分)

  1)检查程序中.h文件所在的目录,将其加入系统PATH中;

  2)执行C编译:#gcc [源文件名] -o [目标文件名]

  3)改变目标文件为可执行文件:#chmod +x [目标文件名]

  4)如需将多个可执行文件连续执行,可用vi生成批处理文件,最后记得将该批处理文件属性改为可执行(同上一步)

  [问题2](3分)

  调试:在编译时使用-g参数,就可以使用gdb进行调试。

  59、时间片的大小对系统有什么影响?(3分)在选取时间片是应考虑哪些因素?(3分)

  参考答案:

  [问题1](3分)

  在轮转法中,时间片长度的选取非常重要,将直接影响系统开销和响应时间。如果时间片长度很小,则调度程序剥夺处理机的次数频繁,加重系统开销;反之,如果时间片长度选择过长,比方说一个时间片就能保证就绪队列中所有进程都执行完毕,则轮转法就退化成先进先出算法。

  [问题2](3分)

  影响时间片大小的主要因素有:系统响应时间、就绪进程数目和计算机处理能力

  60、模块的编程和普通程序的编程有哪些区别?(6分)

  参考答案:

  主要区别为:

  (1)因为内核模块运行在内核态,所以包含的头文件是内核程序相关的头文件,而普通程序则包含的是glibc的头文件(1分)

  (2)模块程序没有main函数,而是通过init_module函数在加载后初始化。(2分)

  (3)模块程序内可直接调用内核函数,而普通程序则只能通过系统调用使用内核函数。(2分)

  (4)普通用户程序可运行多次,而内核函数通常则只能加载1次(1分)。

  61、什么是交叉编译?为什么要采用交叉编译(5分)

  参考答案:所谓交叉编译,是指在一个平台上编译生成在另一个平台上运行的可执行程序。(3分)。之所以采用交叉编译,是因为目标平台上不具备直接运行开发环境的条件。(2分)

  62、简述嵌入式Linux系统的初始化过程(5分)

  参考答案:

  嵌入式Linux系统开机首先运行BootLoader,然后由BootLoader引导启动内核,由内核检查和初始化硬件设备,载入设备的驱动程序模块,安装root文件系统,然后内核将启动一个名为init的进程(2分)。在init运行完成并启动其它必要的后续进程后,系统开始运行,引导过程结束。init进程启动时需要读取inittab配置文件,该文件确定init在系统启动和关机时的工作特性。(3分)

  六、阅读程序题

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

  #include

  #include

  #include

  #include

  #include

  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]); (4)

  sleep(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]); (6)

  exit(0);

  }

  else if(pid>0) (7)

  {

  close(pipe_fd[0]); (8)

  if(write(pipe_fd[1],"Hello",5)!=-1) (9)

  printf("parent write1 success!\n");

  if(write(pipe_fd[1]," Pipe",5)!=-1)

  printf("parent write2 success!\n");

  close(pipe_fd[1]); (10)

  sleep(3);

  waitpid(pid,NULL,0);

  exit(0);

  }

  }

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

  (10) 关闭父进程写描述符

  2. 阅读下面shell程序,写出执行结果:

  #!/bin/sh

  for name in Tom Jack Harry

  do

  echo "$name is my friend"

  done

  1、答:

  Tom is my friend

  Jack is my friend

  Harry is my friend

  3. 用变量a给出下面的定义

  a) 一个指向整型数的指针(A pointer to an integer)

  b) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer)

  c) 一个有10个整型数的数组(An array of 10 integers)

  d) 一个有10个指针的数组,该指针是指向一个整型数的(An array of 10 pointers to integers)

  e) 一个指向有10个整型数数组的指针(A pointer to an array of 10 integers)

  2、答:

  a) int *a; // A pointer to an integer

  b) int **a; // A pointer to a pointer to an integer

  c) int a[10]; // An array of 10 integers

  d) int *a[10]; // An array of 10 pointers to integers

  e) int (*a)[10]; // A pointer to an array of 10 integers

  4. 根据下面给出的声明和数据,对每个表达式进行求值并写出他的值。在每个表达式进行求值是使用原来给出的值(也就是说,某个表达式的结果不影响后面的表达式)。假定ints数组在内存中的起始位置是100,整型值和指针的长度都是4字节。

  in tints[20]={

  10, 20, 30, 40, 50, 60, 70, 80, 90, 100,

  110, 120, 130, 140, 150, 160, 170, 180, 190, 200

  };

  (Other declarations)

  int *ip=ints+3;

表达式

ints

__   ____

ints[4]

__   ____

ip

__   ____

ip[4]

__   ____

*(ip+4)

__   ____

  答:(每项1分)

表达式

ints

__     100   ____

Ints[4]

    50   ____

ip

__  112 ____

ip[4]

__  80 ____

*(ip+4)

__   80____

  5、请对下列shell程序加注释,并说明程序的功能和调用方法:

  #!/bin/sh

  #

  # /etc/rc.d/rc.httpd

  #

  # Start/stop/restart the Apache web server.

  #

  # To make Apache start automatically at boot, make this

  # file executable: chmod 755 /etc/rc.d/rc.httpd

  #

  case "$1" in

  'start')

  /usr/sbin/apachectl start ;;

  'stop')

  /usr/sbin/apachectl stop ;;

  'restart')

  /usr/sbin/apachectl restart ;;

  *)

  echo "usage $0 start|stop|restart" ;;

  esac

  答:

  1)程序注释

  #!/bin/sh 定义实用的shell

  #

  # /etc/rc.d/rc.httpd 注释行,凡是以星号开始的行均为注释行。

  #

  # Start/stop/restart the Apache web server.

  #

  # To make Apache start automatically at boot, make this

  # file executable: chmod 755 /etc/rc.d/rc.httpd

  #

  case "$1" in #case结构开始,判断“位置参数”决定执行的操作。本程序携带一个“位置参数”,即$1

  'start') #若位置参数为start

  /usr/sbin/apachectl start ;; #启动httpd进程

  'stop') #若位置参数为stop

  /usr/sbin/apachectl stop ;; #关闭httpd进程

  'restart') #若位置参数为stop

  /usr/sbin/apachectl restart ;; #重新启动httpd进程

  *) #若位置参数不是start、stop或restart时

  echo "usage $0 start|stop|restart" ;; #显示命令提示信息:程序的调用方法

  esac #case结构结束

  (2)程序的功能是启动,停止或重新启动httpd进程

  (3)程序的调用方式有三种:启动,停止和重新启动。

  七、应用实践题

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

  #include

  #include

  #include

  #include

  #include

  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]); (4)

  sleep(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]); (6)

  exit(0);

  }

  else if(pid>0) (7)

  {

  close(pipe_fd[0]); (8)

  if(write(pipe_fd[1],"Hello",5)!=-1) (9)

  printf("parent write1 success!\n");

  if(write(pipe_fd[1]," Pipe",5)!=-1)

  printf("parent write2 success!\n");

  close(pipe_fd[1]); (10)

  sleep(3);

  waitpid(pid,NULL,0);

  exit(0);

  }

  }

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

  (10) 关闭父进程写描述符

  2、用Shell编程,判断一文件是不是字符设备文件,如果是将其拷贝到 /dev 目录下。

  答:

  #!/bin/sh

  FILENAME=

  echo “Input file name:”

  read FILENAME

  if [ -c "$FILENAME" ]

  then

  cp $FILENAME /dev

  fi

  3.下列程序实现了著名的生产者—消费者问题的模型,主程序中分别启动了生产者线程和消费者线程。生产者不断顺序地将0-1000的数字写入共享的循环缓冲区,同时消费者线程不断地从共享的循环缓冲区中读取数据。完成如下问题。

  进行生产(put) 进行消费(get)

  1)生产者 写入共享的循环缓冲区PUT函数的流程图如下,试完成流程图中标号所在处的内容。(4.5分)

  (1)写指针+1是否等于读指针 (2)等待条件变量not full (3) 设置条件变量notempty

  2)生产者 写入共享的循环缓冲区PUT函数的流程图如下,试完成流程图中标号所在处的内容。(4.5分)

  (4)写指针是否等于读指针 (5) 等待条件变量not empty (6) 设置条件变量notfull

  void put(struct prodcons * b, int data)

  { pthread_mutex_lock(&b->lock);

  while ((b->writepos + 1) % BUFFER_SIZE == b->readpos) {

  printf("wait for not full\n");

  pthread_cond_wait(&b->notfull, &b->lock);

  }

  b->buffer[b->writepos] = data;

  b->writepos++;

  if (b->writepos >= BUFFER_SIZE) b->writepos = 0;

  pthread_cond_signal(&b->notempty);

  pthread_mutex_unlock(&b->lock);

  }

  int get(struct prodcons * b)

  {

  int data;

  pthread_mutex_lock(&b->lock);

  while (b->writepos == b->readpos) {

  printf("wait for not empty\n");

  pthread_cond_wait(&b->notempty, &b->lock);

  }

  data = b->buffer[b->readpos];

  b->readpos++;

  if (b->readpos >= BUFFER_SIZE) b->readpos = 0;

  pthread_cond_signal(&b->notfull);

  pthread_mutex_unlock(&b->lock);

  return data;

  }

  void * producer(void * data)

  { int n;

  for (n = 0; n < 1000; n++) {

  printf(" put-->%d\n", n);

  put(&buffer, n);

  }

  put(&buffer, OVER);

  printf("producer stopped!\n");

  return NULL;

  }

  void * consumer(void * data)

  { int d;

  while (1) {

  d = get(&buffer);

  if (d == OVER ) break;

  printf(" %d-->get\n", d);

  }

  printf("consumer stopped!\n");

  return NULL;

  }

  int main(void)

  { pthread_t th_a, th_b;

  void * retval;

  init(&buffer);

  pthread_create(&th_a, NULL, producer, 0);

  pthread_create(&th_b, NULL, consumer, 0);

  pthread_join(th_a, &retval);

  pthread_join(th_b, &retval);

  return 0;

  }

  4、设计一个Shell程序,在/userdata目录下建立50个目录,即user1~user50,并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行。

  答:

  #!/bin/sh

  i=1

  while [ i -le 50 ]

  do

  if [ -d /userdata ];then

  mkdir -p /userdata/user$i

  chmod 754 /userdata/user$i

  echo "user$i"

  let "i = i + 1" (或i=$(($i+1))

  else

  mkdir /userdata

  mkdir -p /userdata/user$i

  chmod 754 /userdata/user$i

  echo "user$i"

  let "i = i + 1" (或i=$(($i+1))

  fi

  done

  5、用变量a给出下面的定义

  f) 一个指向整型数的指针(A pointer to an integer)

  g) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer)

  h) 一个有10个整型数的数组(An array of 10 integers)

  i) 一个有10个指针的数组,该指针是指向一个整型数的(An array of 10 pointers to integers)

  j) 一个指向有10个整型数数组的指针(A pointer to an array of 10 integers)

  2、答:

  a) int *a; // A pointer to an integer

  b) int **a; // A pointer to a pointer to an integer

  c) int a[10]; // An array of 10 integers

  d) int *a[10]; // An array of 10 pointers to integers

  e) int (*a)[10]; // A pointer to an array of 10 integers

  6.根据下面给出的声明和数据,对每个表达式进行求值并写出他的值。在每个表达式进行求值是使用原来给出的值(也就是说,某个表达式的结果不影响后面的表达式)。假定ints数组在内存中的起始位置是100,整型值和指针的长度都是4字节。

  in tints[20]={

  10, 20, 30, 40, 50, 60, 70, 80, 90, 100,

  110, 120, 130, 140, 150, 160, 170, 180, 190, 200

  };

  (Other declarations)

  int *ip=ints+3;

表达式

ints

__   ____

ints[4]

__   ____

ip

__   ____

ip[4]

__   ____

*(ip+4)

__   ____

  答:(每项1分)

表达式

ints

__     100   ____

Ints[4]

    50   ____

ip

__  112 ____

ip[4]

__  80 ____

*(ip+4)

__   80____

  7、由于Boot Loader的实现依赖于 CPU 的体系结构,因此大多数Boot Loader都分为 stage1 和 stage2 两大部分。依赖于 CPU 体系结构的代码,比如设备初始化代码等,通常都放在 stage1 中,而且通常都用汇编语言来实现,以达到短小精悍的目的。而stage2 则通常用C语言来实现,这样可以实现给复杂的功能,而且代码会具有更好的可读性和可移植性。请根据你对嵌入式系统中bootloader的理解,简要设计一下stage1和stage2需要完成的功能。

  参考答案:

  BootLoader 的 stage1 通常包括以下步骤(以执行的先后顺序):(3分)

  基本硬件设备初始化。

  为加载 Boot Loader 的 stage2 准备 RAM 空间。

  拷贝 Boot Loader 的 stage2 到 RAM 空间中。

  设置好堆栈。

  跳转到 stage2 的C入口点。

  BootLoader 的 stage2 通常包括以下步骤(以执行的先后顺序): (3分)

  初始化本阶段要使用到的硬件设备。

  检测系统内存映射(memory map)。

  将 kernel 映像和根文件系统映像从 flash 上读到 RAM 空间中。

  为内核设置启动参数。

  调用内核。

  8、Qt/Embedded对嵌入式GUI提供了强大的支持,信号和插槽机制是QT的核心机制,使用QT实现如下界面的登陆程序,其原代码如下所示,请回答如下问题:

  1)什么是Qt中的信号插槽机制?(3分)

  2)应用程序中用到了哪些控件,列举2个并说明该控件的特点?(4分)

  3)根据注释完成程序中相应的语句?(4分)

  #include

  #include "window.h"

  CWinDlg::CWinDlg(QWidget* parent) : QDialog(parent)

  {

  setWindowTitle("Example");

  Edit1 = new QLineEdit;

  Button1 = new QPushButton("OK");

  Edit1->setEchoMode(QLineEdit::Password);

  QVBoxLayout* Layout1 = new QVBoxLayout;

  Layout1->addWidget(Edit1);

  Layout1->addWidget(Button1);

  (1) ;

  (2) ;

  }

  CWinDlg::~CWinDlg()

  {

  delete Edit1;

  delete Button1;

  }

  void CWinDlg::function()

  {

  if(Edit1->text() == "example")

  {

  QMessageBox::warning(this, "warning", "Pass!", QMessageBox::Yes);

  }

  else

  {

  QMessageBox::warning(this, "warning", "Error!", QMessageBox::Yes);

  }

  }

  #include

  #include "window.h"

  int main(int argc, char* argv[])

  {

  QApplication app(argc, argv);

  CWinDlg dlg;

  return dlg.exec();

  }

  答案要点:

  1)什么是Qt中的信号插槽机制?与回调函数机制有何不同?(3分)

  答案要点:回调函数机制是事先将一个回调函数指针传递给一个处理过程,当这个处理过程得到执行时,回调预先定义好的回调函数以期实现激活其他处理程序的目的。不同与回调函数机制,Qt提供了信号和插槽机制,信号是一个特定的标识;一个槽就是一个函数,与一般函数不同,槽函数既能和信号关联,当某个事件出现时,通过发送信号,可以将与之相关联的槽函数激活,执行相应代码。

  2)应用程序中用到了哪些控件,列举2个并说明该控件的特点?(4分)

  答案要点:应用程序中用到的控件有(1)文本框控件Edit,文本框控件主要用来显示或接收用户的输入信息。(2)按钮控件Button,按钮控件主要响应用户单击功能。

  3)根据注释完成程序中相应的语句?(4分)

  (1)setLayout(Layout1);

  (2)connect(Button1, SIGNAL(clicked()), this, SLOT(function()));

  9、 在Linux操作系统下,完成下列任务:

  1、 编程实现以下功能

  ² 主程序hello.c(打印Hello World!)

  ² 主程序通过头文件hello.h调用message函数

  ² 头文件hello.h(声明message函数)

  ² message函数由message.c定义(打印This is a message!)

  1、答:

  hello.c:

  # include

  # include

  # include

  # include "head.h"

  int main (int argc,char *argv[])

  {

  printf("Hello World!\n");

  message();

  return 0;

  }

  head.h:

  void message(void);

  message.c:

  # include

  void message (void){

  printf("This is a message!\n");

  }

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

  1、

  (1)(5分)

  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)(5分)

  objects = main.o

  exec = main

  all:$(objects)

  gcc –o $(exec) $(objects)

  main.o:main.c

  gcc –c main.c

  clean:

  rm –r $(exec) $(objects)

  11、假如你需要设计并编写一个音频采集程序。该程序每50ms采集一次数据,大小为1480个字节。为了进一步压缩处理的需要,你需要建立一个能够至少保存5次所采集数据的缓存,该缓存的大小会根据系统的负载情况动态调整。请利用你所学的C语言内存管理及相关数据结构的知识,设计一个缓存结构,包括其内存分配的形式(如堆、栈等)及其组织结构(如数组、链表等)。

  参考答案:

  堆适合大块连续内存的分配,需要自行管理(2分)

  栈适合小块局部使用内容的分配,程序自动管理(2分)

  数组查找快,但大小固定,而链表正好相反。(2分)

  题目需要大容量存储,且需要动态改变大小,因此可设计为采用动态(堆)分配的链表型缓存结构。每个链表节点为1480B。(4分)

  12、 假定你在目录/home/arm下有一个C程序,他由几个单独的文件组成,而这几个文件又分为包含了其他文件,如下图所示:

文件

包含文件

main.c

stdio.h, table.h

list.c

list.h

symbol.c

symbol.h

table.c

table.h

table.h

symbol.h, list.h

  完成下列任务:

  1. 编写makefile文件,最终的目标文件为hello(交叉编译器为arm-linux-gcc)

  2. 在目标机上通过网络文件系统挂载/mnt 到宿主机上的/home/arm目录

  1、答:

  hello: main.o list.o symbol.o table.o

  gcc -o prog main.o list.o symbol.o table.o

  main.o: main.c table.h symbol.h list.h

  gcc -c -o main.o main.c

  list.o: list.c list.h

  gcc -c -o list.o list.c

  symbol.o: symbol.c symbol.h

  gcc -c -o symbol.o symbol.c

  table.o: table.c table.h symbol.h list.h

  gcc -c -o table.o table.c

  clean:

  rm hello *.o

  2、Mount –t nfs –o noclock 192.168.0.10:/home/armtest/hello /mnt

  13、假如你需要设计一个BootLoader,在具体开发之前,你需要确定哪几个主要问题?

  参考答案:

  需要考虑的问题:(1)与主机连接的方式(2)硬件CPU类型,如何初始化(3)内存空间大小以及如何使用 (4)内核运行前需要准备哪些条件(5)BootLoader需要支持几种模式。(每点各2分)

  14、Linux系统中线程的同步方式有互斥量、信号量和条件变量等。假设现在需要设计一个多线程的应用程序,试分析一下以上几种同步方式分别可在什么场合下使用。

  参考答案:

  Mutex互斥量,用于操作某个临界资源时对该资源上锁,以实现互斥地对独占资源的使用(3分)

  Semophore信号灯,信号灯内有一计数器,可以用于对多个同类资源的分配。当资源用完时,申请资源的线程会在信号量上睡眠,有线程释放资源时,再将该线程唤醒继续运行。(3分)

  Condition条件变量,条件变量用于等待信号。当一个线程需要等待某个信号时,就可到条件变量上等待,当信号具备时,系统会唤醒该线程继续运行。(4分)

  15、进程间通信的方式有多种,假设需要在Linux系统上设计本地运行的两个进程,一个负责采集视频,另一个负责播放。试为两者设计一种数据的通信方式。进一步考虑当两个进程处于不同机器上时,需要采用的通信方式。说明你的设计理由。

  参考答案:

  本地:共享内存+信号量, 适合于大量数据传输。Linux支持系统V和POSIX的共享内存和信号量。(5分)

  远程:Socket+应用协议。适合于跨网络的(大量)数据传输。Linux支持BSD的socket。应用层协议需要自行设计。(5分)

【嵌入式软件助理工程师认证考试试题题库】相关文章:

嵌入式助理工程师认证考试题库10-20

嵌入式助理工程师认证考试题库及答案05-29

初级嵌入式软件工程师认证考试试题07-28

sun java认证考试题库09-04

Oracle认证考试题库下载10-20

2017年adobe认证考试题库试题08-14

关于Photoshop认证试题题库06-15

2017年adobe认证考试题库09-17

2017年Oracle认证考试题库07-18

2017年思科认证考试题库10-29