练习题(一)一、填空题1.嵌入式系统一般包括_____________、嵌入式操作系统和。
2.Arm7内核采用的是体系结构。
3.S3C2410X芯片包含通道PWM定时器和____________通道内部计时器。
4.gcc的编译流程分为预处理、编译、和______________。
5.C语言中的预处理语句是以符号开头的。
6.多任务系统中有3个功能单位:任务、和____________。
二、选择题1.下列操作系统中,具有Windows图形界面的是()A.VxWorks B.QNX C.Windows CE D.Linux2.使vi编辑器处于可编辑状态的命令是()A.r B.p C.i D.b3.下列选项中,能帮助用户生成makefile的工具是()A.gcc B.autotools C.gdb D.vi4.可以使用TFTP通过网络下载文件的命令是()A.run B.tftpboot C.sleep D.mv5.下列不属于Linux系统中线程的是()A.用户级现程B.网络级线程C.轻量级线程D.内核级线程6.下列选项中,常用于网络中不同机器之间的进程间通信的是()A.套接字B.管道C.信号D.信号量7.使用有关线程操作的函数时必须包含的头文件是()A.pthread.h B.stdio.h C.time.h D.string.h8.TCP/IP参考模型包含几层()A.4 B.5 C.6 D.79.在TCP中,用于发送数据的函数是()A.bind()B.send()C.accept()D.recv()10.下列选项中,不属于Linux系统的设备分类的是()A.字符设备B.数据设备C.块设备D.网络设备三、判断对错1.Arm9采用的是5级指令流水线。
()2.Vi编辑器有4种模式:标准模式、插入模式、命令行模式和可视模式。
()3.NFS文件系统的目的是让不同的机器、不同的操作系统之间可以共享文件。
()4.一个线程可以包含多个进程。
()5.TCP和UDP都是面向可靠的传输服务。
()6.设备驱动程序可以使用模块的方式动态加载到内核去。
()7.标准I/O提供了3种类型的缓冲存储:全缓冲、行缓冲、不带缓冲。
()8.交叉编译操作需要在安装交叉编译器后才能进行。
()9.Linux环境下不能同时打开多个终端。
()10.进程具有动态性、交互性和异步性,但不具有并发性。
()四、问答题1.简述并行通信和串行通信的概念及各自的特点。
并行通信是指利用多条数据传输线将一个字数据的各比特位同时传送。
它的特点是传输速度快,适用于传输距离短且传输速度较高的通信。
串行通信是指利用一个传输线将数据以比特位为单位顺序传送。
特点是通信线路简单,利用简单的线缆就可以实现通信,成本低,适用于传输距离长且传输速度较慢的通信。
2.阐述什么是交叉编译,并解释为什么要进行交叉编译。
所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。
由于一般通用计算机拥有非常丰富的系统资源、使用方便的集成开放环境和调试工具等,而嵌入式系统的系统资源非常紧缺,无法在其上运行相关的编译工具,因此,嵌入式系统的开发需要借助宿主机(通用计算机)来编译出目标机的可执行代码。
3.画出OSI参考模型与TCP/IP参考模型的对应关系。
五、程序填空题1.在书写makefile时,适当使用变量替换会使其进一步得到简化。
题中给出了一个makefile 的原始写法,随后给出了经变量替换后的前三行语句,请在下划线上填写后续语句。
完整的makefile原始写法如下:david: kang.o yul.ogcc kang.o yul.o –o davidkang.o: kang.c kang.hgcc –Wall –g –c kang.c –o kang.oyul.o: yul.c yul.hgcc –Wal l –g –c yul.c –o yul.o经过变量替换后的makefile如下:OBJS=kang.o yul.oCC=gccCFLAGS=-Wall –g(1)(2)(3)(4)(5)(6)2.已知hello.h和hello.c两个文件,按要求将所需命令写在下划线上。
预处理阶段的命令是:(1)编译阶段的命令是:(2)汇编阶段的命令是:(3)链接阶段的命令是:(4)运行可执行文件的命令是:(5)六、综合题(共34分)1.用QT编写一个显示“ welcome linux ”的窗口程序。
2.有如下二叉树,写出它的先序序列、中序序列和后序序列。
3.编程实现如下功能:使用fork()函数创建一个子进程,根据其返回值result判断函数fork()的返回情况,并进行错误处理。
练习题(二)一、填空题1.嵌入式系统一般具备的三个基本要素是:“计算机系统”、__________和。
2.ARM(Advanced RISC Machines)有3种含义,它是一个_______的名称,也是一类_________ 的通称,还是一种技术的名称。
3.S3C2410X芯片提供通道的DMA,并具有_________请求引脚。
4.Vim有________种模式,在其他任何模式下按下________按键都可以回到命令模式。
5.一个makefile文件中通常包含三方面内容:_________、dependency_file和_____________。
二、单项选择题1.下列选项中,不属于嵌入式系统特点的是()A.面向特定应用B.量体裁衣C.对代码要求低D.不具备二次开发功能2.使vi编辑器处于标准模式的命令是()A.Ctrl B.p C.Esc D.b3.嵌入式Linux开发中常用到的一种调试工具是()A.gcc B.gdb C.arm-linux-gcc D.kernal4.单向链表的最后一个节点的指针域为()A.next B.NULL C.First D.prev5.可以让不同的机器、不同的操作系统直接进行彼此共享文件的文件系统是()A.SMBA B.NFS C.TFTP D.根文件系统6.下列Linux内源码顶层目录的文件夹中,存放有关体系结构代码的是()A.Arch B.driver C.fs D.Net7.在对文件的操作中,既可以对文件施加建议性锁,又可以施加强制锁的函数是()A.fcntl( )B.lockf( ) C.lseek( ) D.select( )8.下列选项中,不属于Unix进程间通信的方式是()A.变量B.管道C.FIFO D.信号9.下列选项中,不属于设备驱动程序特点的是()A.可装载B.可移植C.可设置D.动态性10.下列选项中,用于在内核空间向控制台输出信息的函数是()A.printf()B.printk()C.print()D.putchar()三、判断对错1.在S3C2410芯片中,对内核的供电电压和对存储器的供电电压可以不同。
()2.gcc的编译流程可分为4个步骤:预处理、编译、汇编、链接。
()3.tftp服务中使用的tftp协议是基于UDP实现的。
()4.BootLoader是不依赖硬件平台的,所以在新电路板上无需移植U-boot程序。
()5.在Linux中,所有的设备文件一般都位于“/dev”下,其中串口一和串口对应的设备名是相同的,都是“/dev/ttyS”。
()6.设备驱动程序既可以用静态方式编译在内核中,也可以动态加载到内核中。
()7.TCP协议适于可靠传输,UDP协议适于不可靠传输。
()8.嵌入式Linux驱动的设备号是一个数字,由主设备号和次设备号组成。
()9.嵌入式Linux系统中控制一个LED小灯,直接对其操作即可,无需编写驱动。
()10.进程具有动态性、交互性和异步性,但不具有并发性。
()四、问答题1.简述vim编辑器的几种工作模式。
Vim编辑器的使用按不同的使用方式可以分为4种模式:标准模式、插入模式、命令行模式和可视模式。
标准模式:在此模式下任何键盘的输入都是作为命令来对待。
命令的输入通常是不回显的,只显示执行的结果。
在此模式下用户可以输入命令来控制屏幕光标的移动,字符、子或行的删除等操作,也可进入到其它3种模式下。
在其它任何模式下按下“Esc”键都可以回到此模式。
插入模式:用户只有在此模式下才可以进行文字输入和修改等编辑工作,因此也称此模式为编辑模式。
在标准模式下输入“i”即可进入此模式。
命令行模式:在此模式下,用户可以将文件保存或退出vim,也可设置编辑环境,比如查找字符、列出行号等。
在命令模式中输入“:”(一般命令)、“/”(正向搜索)或“?”(反向搜索)进入该模式,在此模式下输入的命令会在底行显示,这些命令输入后要按“Enter”键才执行。
可视模式:在命令模式中输入“v”(按字符选择)、“V”(按行选择)、“ctrl”+“v”(按块选择)进入该模式。
在此模式下,通过移动光标来选择文本,选择的文本将反白显示。
2.简述嵌入式Linux中I/O处理的五种模型。
I/O处理的模型有以下五种。
(1)阻塞I/O模型:在此模型下,若调用的I/O函数没有完成相关的功能,则会使进程挂起,直到相关数据到达才会返回。
(2)非阻塞模型:在此模型下,当请求的I/O操作不能完成时,不让进程睡眠,而且立即返回。
非阻塞I/O使用户可以调用不会阻塞的I/O操作,如open()、write()、read()。
如果该操作不能完成,则会立即返回出错或者返回0。
(3)I/O多路转接模型:此模型下,如果请求的I/O操作阻塞,且它不是真正阻塞I/O,而是让其中一个函数等待,期间,I/O还能进行其他操作。
(4)信号驱动I/O模型:此模型下,通过安装一个信号处理程序,系统可以自动捕获特定信号,从而启动I/O。
这是由内核通知用户何时启动一个I/O操作决定的。
(5)异步I/O模型:此模型下,当一个描述符已准备好,可以启动I/O时,进程会通知内核。
3.列举并简述嵌入式Linux中使用较多的进程间通信的几种工作方式。
现在在Linux中使用较多的进程间通信方式主要有以下几种。
(1)管道及有名管道:管道可用于具有亲缘关系进程间的通信,有名管道除具有管道所有的功能外,还允许无亲缘关系进程间的通信。
(2)信号:信号是在软件层次上对中断机制的一种模拟,它是比较复杂的通信方式,用于通知进程有某事件发生,一个进程收到一个信号与处理器收到一个中断请求效果上可以说是一样的。
(3)消息队列:消息队列是消息的链接表,包括POSIX消息队列,System V消息队列。
它克服了前两种通信方式中信息量有限的缺点,具有写权限的进程可以按照一定的规则向消息队列中添加新消息;对消息队列有读权限的进程则可以从消息队列中读取消息。
(4)共享内存:它使得多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程中对共享内存中数据的更新,这种通信方式需要依靠某种同步机制,如互斥锁或信号量等。