答案13级高级编程复习范围_第1页
答案13级高级编程复习范围_第2页
答案13级高级编程复习范围_第3页
答案13级高级编程复习范围_第4页
答案13级高级编程复习范围_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、答案13级高级编程复习范围1.进程 是一个具有一定独立功能的程序的一次运行活动。内核空间与用户空间是程序执行的两种不同状态,通过 系统调用 和 硬件中断 能够完成从用户空间到内核空间的转移。 嵌入式Linux应用中,主要的存储设备为 Flash和RAM linux 中有四种常见的文件类型, 分别是 普通文件,目录文件,设备文件,链接文件。使用alarm函数可以在进程中设置一个定时器,当定时器指定的时间到时,它就向进程发送SIGALARM&号。connect函数函数是客户端用来同服务端连接的,成功时返回00 TCP/IP协议族的网络模型包括 网络接口层、 传输层、网络层和应用层四个层次。嵌入式L

2、inux系统由Linux内核和文件系统两部分构成,两者缺一不可。作为嵌入式系统的主要存储媒介,主要有 NOR和NAND两种技术。.进程的运行环境包括:代码段 ,数据段,堆,栈,环境变量,系统数据。.在嵌入式系统中,通常没有像 BIOS那样的固件程序,因此整个系统的加载启动任务就完全 由uboot 来完成。利用lseek函数的返回值为文件的长度的函数调用是lseek(fd, 0, SEEK_END)进程中访问临界资源的那段程序代码称为临界区。中的网络编程通过Socket接口实现,它是一种文件描述符。人工创建字符设备节点文件 /dev/test ,主设备号为 250,次设备号为 0的命令为mkno

3、d/dev/test c 250 0.ARM Linux启动过程分为四步,分别是启动引导程序,加载内核,加载根文件系统,启动用户应用程序下列基于Arm开发板的内核制作步骤错误的是:(B ).make distclean B . make manuconfig C . make menuconfig ARCH=arm.make ulmage ARCH=arm CROSS_COMPILE=arm-linux-.下列主要使用NANIfi flash的文件系统的是:(B ).JFFS2 B . Yaffs C . Cramfs D . NFS)3.如果把bootloader的启动过程分为stagl和s

4、tag2 ,那么下边哪一项不是 stagel完 成的工作:(、基本硬件初始化。B、加载内核映像和根文件系统映像。C、跳转到stage2的C语言入口点D、设置堆栈指针SP,为执行C语言代码做准备。.关于Linux中的链接文件,下列说法不正确的是(C )、linux系统中链接文件分为硬链接和软链接两种。、软链接又称为符号链接,类似于 Windows中的“快捷方式”。、硬链接文件相当于建立一个新文件。D软链接文件相当于建立一个新文件。关于无名管道,下列说法错误的是:(D ).它只能用于具有亲缘关系进程之间的通信.它是一个半双工的通信模式,具有固定的读端和写端。.通常先使用pipe函数创建一个管道,再

5、通过fork函数创建一个子进程,该子进程继承父 进程所创建的管道,父子进程关闭相应不用的端口就可以建立通信的管道。.管道可以看作为普通的文件,是文件系统中的一种。.linux内核中加载模块的命令是哪个? ( C ).lsmod B . modinfo C . insmod D . rmmod关于信号下列说法错误的是:(B ).发送信号的函数主要有 kill() 、raise() 、alarm()以及pause()。.raise既可以向自身发送信号,也可以向其他进程发送信号。.alarm也称为闹钟函数,一个进程只能有一个闹钟时间。.当系统捕捉到某个信号时,可以忽略该信号或是使用指定的处理函数来处

6、理。.关于说法错误的是:(C ). UDP提供不可靠的非连接型传输层服务,它允许在源和目的地之间传送数据。. TCP是重要的传输层协议,目的是允许数据同网络上的其他节点进行可靠的交换.UDPft、议具有严格的内装差错检验算法确保数据的完整性。. UDP无连接的,不可靠的传&服务,它执行速度比TCP快。.下列关于字符设备和块设备说法错误的是:(B ).字符设备是一种按字节来访问的设备。B.块设备只能以块为单位接受输入和返回输出。C.字符设备对于I/O请求要求有对应的缓冲区。D.字符设备只能被顺序读写,而块设备可以随机访问。.关于驱动程序,下列说法错误的是(C )、通过驱动程序可以对设备进行初始化

7、和释放。、通过驱动程序可以把数据从内核传送给对应的硬件设备。、驱动程序运行在用户空间。、通过驱动程序可以从对应的硬件设备读取数据。下列说法错误的是:(C ).exec启动一个新进程,替换原有的进程,因此进程的 PID不变。.exec函数组的参数传递有逐个列举和将整个参数构成指针数组传递两种方式。C. exec函数组第六位为p,表示指定当前进程所使用的环境变量。.exec函数组中argv和envp数组忘记以NULLM尾了,止匕时errno被设置为EFAULT卜列(B )函数是动态分配一个主设备号int register_chrdev_region(dev_t first,unsigned int

8、 count,char *name);.int alloc_chrdev_region(dev *dev,unsigned int firstminor,unsigned int count,char*name);ar . void unregister_chrdev_region(dev_t first,unsigned int count);.void * kmalloc (size_t size, int flags);,设备驱动程序中动态开辟内存时,调用函数(C).malloc() B . realloc() C . kmalloc() D . ksizeof()下列说法错误的是:(D

9、 ).循环服务器在同一个时刻只可以响应一个客户端的请求.并发服务器在同一个时刻可以响应多个客户端的请求.UDFW环服务器对于每一个客户机的请求总是能够满足。.TCP1环服务器一次能处理多个客户端的请求。.下面对于块设备和字符设备的说法中不正确的是(C )、块设备以块为单位接收输入和返回输出,而字符设备以字节为单位。、块设备对于I/O请求有对应的缓冲区,因此它们可以选择以什么顺序进行响应,字符设备 无需缓冲且可被直接读写。、字符设备没有次设备号。D字符设备只能顺序读写,而块设备可以随机访问。关于设备驱动说法错误的是:(C ).Linux用户程序通过设备文件来使用驱动程序操作字符设备和块设备。主设

10、备号用来标示与设备文件相连的驱动程序;.使用MINOR(Dev_t dev)分解出主设备号。.字符设备和块设备都有主、次设备号。.下列哪一项不是匿名管道的特点(C)、匿名管道中的数据是单向流动的。R匿名管道没有名字。、匿名管道存在于文件系统中。D、只能通过写端口向匿名管道中写入数据。.Kill函数原型为 int kill (pid_t pid, int signo );当第一个参数 pid0 时,表示(B )发送信号给进程组ID和该进程相同的进程;B.发送信号给进程ID为pid的进程;发送信号给进程组内进程ID为pid的绝对值的进程;D.发送信号给系统的所有进程关于进程间通信下列说法错误的是(

11、B ).无名管道只能用于具有亲缘关系的进程之间的通信。.无名管道是一个全双工的通信模式,两端都可以读写。.管道也可以看成是一种特殊的文件,对于它的读写也可以使用普通的 read、write等。.数据被一个进程读出后,将被从管道中删除,其它读进程将不能再读到这些数据。关于信号下列说法错误的是:(B ).发送信号的函数主要有 kill() 、raise() 、alarm()以及pause()。raise既可以向自身发送信号,也可以向其他进程发送信号 .alarm也称为闹钟函数,一个进程只能有一个闹钟时间。.当系统捕捉到某个信号时,可以忽略该信号或是使用指定的处理函数来处理。关于消息队列下列说法错误

12、的是(D ).消息队列就是一个消息的列表,可以从中添加消息、读取消息等。.消息队列中创建或打开消息队列使用的函数是msgget。.添加消息使用的函数是 msgsnd函数,它把消息添加到已打开的消息队列末尾.从消息队列读取消息与FIFO相同的是,也遵循先进先出原则。关于驱动程序,下列说法错误的是(D ).驱动程序提供对设备初始化和释放的功能。.通过驱动程序可以把数据从内核传送给对应的硬件设备。.通过驱动程序可以检测和处理硬件设备出现的错误。.当用户进程调用驱动程序时,系统仍然运行在用户态。下列(A )选项可以分解出主设备号。.MAJORdev_t dev )B. MINOR(dev_t dev

13、).MKDEV(major minor)D. MINOR(inode-i_rdev).关于说法错误的是(D ). UDP提供不可靠的非连接型传输层服务。. TCP能提供端口编号的译码,以识别主机的应用程序,而且完成数据的可靠传输, .TCPB议具有严格的内装差错检验算法确保数据的完整性。. TCPtMT速度比UDP快。.下列哪个命令可以查看已安装的设备的主设备号( A )cat /proc/devices B ls /dev/test C cat /etc/passwd D cat /etc/profile下列说法错误的是:(C ).循环服务器在同一个时刻只可以响应一个客户端的请求。.并发服务

14、器在同一个时刻可以响应多个客户端的请求。. TCP1环服务器一次能处理多个客户端的请求。.UDPW环服务器对于每一个客户机的请求总是能够满足。.下面对于块设备和字符设备的说法中不正确的是(C )块设备以块为单位接收输入和返回输出,而字符设备以字节为单位。块设备对于I/O请求可以选择以什么顺序进行响应。.字符设备是以字节为单位进行输入输出的,可以随机访问。.字符设备和块设备都有主、次设备号。.int select(int maxfd, fd_set *readfds, fd_set *writefds, fe_set *exceptfds, const struct timeval *timeo

15、ut) ,下列说法错误的是(D.maxfd必须至少比待检测的最大文件描述符大1 o.参数exceptfds指定了被例外条件监控的文件描述符集。.正常情况下,返回值为满足要求的文件描述符个数。.经过了 timeout等待后仍无文件满足要求,返回值为-1。,将交叉编译工具arm-linux-gcc-4.3.2.tar.gz解压到/目录下的命令是(A )tar xvzf arm-linux-gcc-4.3.2.tar.gz- C /B . tar xjvfarm-linux-gcc-4.3.2.tar.gz - C /.tar xvf arm-linux-gcc-4.3.2.tar.gz - C /

16、 D . tar xjvf arm-linux-gcc-4.3.2.tar.gz.编译arm平台内核的命令(C ).make menuconfig B . make menuconfig ARCH = arm.make bzImage D . make uImage ARCH=arm CROSS_COMPILE=arm-linux-.下列主要使用NANDH flash的文件系统的是:(A ).JFFS2 B . Yaffs C . Cramfs D . NFS )关于内核配置,下类说法错误的是( A )make config:基于文本模式的交互式配置。make config:基于文本模式的交互

17、式配置。B. make menuconfig :基于文本模式的菜单型配置。C. make oldconfig :使用已有的配置文件(.config),不会询问新增的配置选项.make xconfig :图形化的配置(需安装图形化系统)。关于内核模块下类说法错误的是( D ).内核模块本身并被编译进内核文件(zImage或者bzImage)。模块加载函数通过 module_init宏来指定。.模块卸载函数通过module_exit宏来指定。,加载模块的命令是rmmod卸载模块的命令是insmod,显示模块的命令是lsmod。关于无名管道,下列说法错误的是:(B ).它只能用于具有亲缘关系进程之间

18、的通信。.它是一个全双工的通信模式,两端都可以读写。.使用pipe函数创建管道,再通过fork函数创建子进程,该子进程继承父进程所创建的管 道,父子进程关闭相应不用的端口就可以建立通信的管道。.数据被一个进程读出后,将被从管道中删除,其它读进程将不能再读到这些数据。关于信号下列说法错误的是:(C ).发送信号的函数主要有 kill() 、raise() 、alarm()以及pause().Kill既可以向自身发送信号,也可以向其他进程发送信号。.alarm也称为闹钟函数,一个进程可以有多个闹钟时间。.当系统捕捉到某个信号时,可以忽略该信号或是使用指定的处理函数来处理该信号。关于消息队列下列说法

19、错误的是(C ).消息队列就是一个消息的列表,用户可以从消息队列种添加消息、读取消息等。.消息队列中创建或打开消息队列使用的函数是msgget。.读取消息使用的函数是 msgrcv,与FIFO相同的是,也遵循先进先出原则。.添加消息使用的函数是 msgsnd函数,它把消息添加到已打开的消息队列末尾。关于多线程下列说法错误的是( B ).编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a.hello.c 是一个多线程的程序,编译命令为gcc hello.c -o hello.线程自己调用pthread_exit函数正常退出。.线程的正常退出方

20、式包括线程从启动例程中返回。.关于说法错误的是:(C ). UDP提供不可靠的非连接型传输层服务,它允许在源和目的地之间传送数据。. TCP是重要的传输层协议,目的是允许数据同网络上的其他节点进行可靠的交换。.UDPft、议具有严格的内装差错检验算法确保数据的完整性。. UDP无连接的,不可靠的传&服务,它执行速度比TCP快。下列说法错误的是:(D ).循环服务器在同一个时刻只可以响应一个客户端的请求.并发服务器在同一个时刻可以响应多个客户端的请求.UDPW环服务器对于每一个客户机的请求总是能够满足。.TCP环服务器一次能处理多个客户端的请求。关于设备驱动说法错误的是:(C ).Linux用户

21、程序通过设备文件来使用驱动程序操作字符设备和块设备。主设备号用来标示与设备文件相连的驱动程序;.使用MINOR(Dev_t dev)分解出主设备号。D.字符设备和块设备都有主、次设备号。下列(A )函数是静态申请一个主设备号。.int register_chrdev_region(dev_t first,unsigned int count,char *name);.int alloc_chrdev_region(dev *dev,unsigned int firstminor,unsigned int count,char *name);.void unregister_chrdev_reg

22、ion(dev_t first,unsigned int count); void * kmalloc (size_t size, int flags);.下列关于字符设备和块设备说法错误的是:(B ).字符设备是一种按字节来访问的设备。块设备只能以块为单位接受输入和返回输出。.字符设备对于I/O请求要求有对应的缓冲区.字符设备只能被顺序读写,而块设备可以随机访问。,下面关于vfork()与fork()的说法错误的是(B ).vfork()产生的子进程一定比父进程先运行。 B. fork()产生的子进程一定比父进程先运 行。C. vfork()产生的子进程完全共享父进程的地址空间。 D. fo

23、rk()产生的子进程复制父 进程的代码段和堆栈段。名词解释及简答:.Boot LoaderLoader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为 最终调用操作系统内核准备好正确的环境。.什么是共享内存?共享内存实现的两个步骤是什么?共享内存是被多个进程共享的一部分物理内存。共享内存是进程间共享数据的一种最快的方 法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其 中的内容。共享内存实现分为两个步骤:(1)创建共享内存,使用shmget函数;(2)映射共享

24、内存,将这段共享内存映射到具体的进程空间去,使用 shmat函数。.简述tcp服务器和客户端的编程步骤。基于TCP客户端:(1)创建一个socket ,用函数socket();(2)绑定IP地址、端口等信息到socket上,用函 数bind()(3)设置允许的最大连接数,用函数listen()(4)接收客户端上来的连接,用函数 accept();(5)收发数据,用函数send()和recv(),或者read()和write()(6)关闭网络连接。基于TCP客户端:(1) 创建一个socket,用函数socket();(2)设置要连接的对方的IP地址和端口等属性;(3) 连接服务器,用函数 co

25、nnect();(4)收发数据,用函数send()和recv(),或者read()和write();(5)关闭网络连接。.VFS (Virtual File system)是一个内核软件层,用来处理与UNIX标准文件系统相关的所有系统调用,具强壮性表现在能 为各种文件系统提供一个通用的接口。通过这组接口,用户就可以将系统中的文件视为统一 的VFS文件,而不必关心其具体的文件系统是什么样的。.有了进程为什么还要引入多线程?(1)和进程相比,它是一种非常“节俭”的多任务操作方式。在 Linux系统下,启动一个新 的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据 段,

26、这是一种“昂贵”的多任务工作方式。(2)程间方便的通信机制。对不同进程来说,它们具有独立的数据空间,要进行数据的传递 只能通过进程间通信的方式进行,这种方式不仅费时,而且很不方便。线程则不然,由于同 一进程下的线程之间共享数据空间,所以一个线程的数据可以直接为其它线程所用,这不仅 快捷,而且方便。除了以上所说的优点外,多线程程序作为一种多任务、并发的工作方式,有如下优点:(3)使多CPUS统更加有效。操作系统会保证当线程数不大于CP曲目时,不同的线程运行于不同的CPU上。(4)改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独立 的运行部分,这样的程序会利于理解和修改。

27、程序分析题:#include #include main()(using _exit.);(can you see this?);_exit(0);/ 若改为 exit()答案: using _exit.#include #include main(int argc, char* argv) num = 2; int pid; pid = fork(); if(pid 0 ) (fork error!);0;if(pid = 0)(num:%d, num);(0);(2);(num:%d,num);答案:num:3:2#include #include #include cleanup(void *arg)*thr_fn(void *arg) main()_t tid;void *tret;pthread_create(&tid,NULL,thr_fn,(void *)1);pthread_cleanup_push(cleanup,threadfirstpush);pthread_cleanup_push(cleanup

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论