嵌入式操作系统应用开发复习题及答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1、简述Linux操作系统具有的特点。答:1,LINUX具备现代一切功能UNIX系统所具备的全部特征,其中包括整整的多任务、虚拟内存、共享库、需求装载、优秀的内存管理及TCP/IP网络支持等。2、解释POSIX。答:POSIX表示可移植操作系统接口,可以提高UNIX环境下应用程序的可移植性。3、解释通用公共许可证GPL。答:GPL的文本保存在Linux系统的不同目录中的COPYING文件里,主要目标是保证软件对所有用户来说是自由的。4、Linux系统下,常用的在线帮助文件有哪些?答:1、man手册2、info手册3、How-To。5、Linux系统下进行C程序开发的主要两个标准。答:1、ANSIC标准2、POSIX标准。6、一般Linux系统调用函数,如果执行成功将返回什么值?如果执行失败将返回什么值?并对哪个系统全局变量进行赋值,以指示具体的错误情况。答:成功时返回为0,不成功时返回非0.7、画出Linux函数库调用和系统调用的示意图,简单说明系统调用(API)函数的作用。答:应用程序系统调用时操作系统提供给外部程序的接口,在C语言中,操作系统的系统调用通常通过函数调用的形式完成。因为这些函数封装了系统调用的细节,将系统调用的入口、参数以及返回值用C语言的函数调用过程实现。8、简单说明在Linux程序开发过程中,利用GCC工具将C语言程序编译成一个可执行程序文件的四个步骤。答:1、预处理2、编译3、汇编4、连接9、解释gcc工具的o、c、I、L、l等5个参数的功能作用。答:o:把文件输出到output_filename,c:只编译,不连接I:在头文件的搜索路径列表中添加dirname目录,是在预编译过程中使用的选项L:在库文件的搜索路径列表中添加dirname目录l:10、可执行程序文件在存储时(没有调入到内存)分为几部分,说明各段的主要内容。答:1、代码区:存放CPU执行的机器指令。2、数据区:该区包含了在程序中明确被初始化的全局变量、已经初始化的静态变量和数据变量。3、未初始化数据区:存入的是全局未初始化变量和未初始化静态变量该区数据在程序开始执行之前被内核初始化为0或空指针。11、可执行程序文件调入到内存产生进程后,分为几个存储区域,说明各区域的主要内容与作用。答:1、代码区:加载的是可执行代码段,加载到内存中的位置有加载器王朝。2、数据区:加载的是可执行文件数据段,位置可放在数据段后也可分开。3、未初始化数据区:加载的是可执行文件BSS段,位置可分开,也可仅靠数据段。4、栈区:由编译器自动分配释放,存放函数的参数值、返回值、局部变量等。5、堆区:用于动态内存分配。12、Linux系统下,用C语言编程,进行文件管理,有哪两类函数可用?试比较两类函数的优缺点。答:ANSIC和POSIX优缺点:ANSIC库I/O函数其实是对POSIX库I/O函数的封装,在其基础上加了三流的概念。13、Linux系统中,系统默认为每个进程打开了几个个文件?即每个进程可以直接操作哪几个流?答:3个,1、标准输入流2、标准输出流3、标准错误输出流。14、标准输入输出设备的文件描述符和文件流指针分别是什么?文件流指针与文件描述符有什么区别?答:文件描述符是任何打开的文件都被分配一个唯一非负整数用于表示该打开的文件。文件流指针:在操作一个文件时要打开该文件使用ANSIC库函数fopen打开一个文件后返回一个文件指针流与该文件关联,所有对该文件的读写操作都可以通过该指针流完成。15、比较POSIX标准与ANSI标准I/O操作的效率,两者在可移植上有哪些差异,两者之间的关系是什么?有什么区别?答:ANSIC和POSIC前者函数丰富,使用方法跟控制台读写一致,可以跨操作系统,但效率低一些,后者直接调用系统接口,效率高。但函数少,不能跨操作系统。16、Linux文件类型,在shell应用层面用ls-l查看命令不同类型的文件分别显示什么内容?答:文件的类型,文件权限,应连接个数,拥有者,拥有者所在组,文件大小,最后一次修改时间。17、在Linux某个文件系统下,文件属性中惟一标识某个文件的是什么?惟一标识一个打开的文件是什么?答:索引节点,文件描述符。18、ls–lc,-lu,-lt分别列出的是什么时间?答:–lc:最后一次修改属性时间.-lu:最后一次访问时间.-lt:最后一次修改内容时间19、一个文件设置了setuid位,该可执行文件在执行时有什么主要的影响。答:该文件被执行时,进程的有效用户ID被设置成该文件的所有者,及对系统其他文件的访问权限上升为当前文件拥有者对该文件的访问权限。20、一个常规文件的大小可以为0(st_size字段定义),那么目录和符号连接的长度是否可以为0?答:不为0.因为目录文件记录着该目录下的文件名和索引节点之间的对应关系,符号链接,文件包含着另一个文件的路径名。21、Linux系统下,进程结束的方法有哪几种?答:1、向exit或_exit发布一个调用。2、在main函数中执行return。3、隐含的离开main函数。22、Linux系统下,线程结束的方法有哪几种?答:1、调用pthread_exit函数退出。2、调用pthread_cancel函数取消该线程。3、创建线程的进程退出或者整个函数结束。4、其中的一个线程执行了exec类函数执行新的进程。23、线程间通信的机制有哪几种?答:1、互斥锁通信机制2、条件变量通信机制3、读写锁通信机制4、线程与信号24、进程间通信的机制有哪几种?答:1、无名管道2、有名管道3、信号25、什么是守护进程?编写守护进程的基本过程是什么?答:守护进程是在后台运行的一种特殊进程,脱离终端。1、屏蔽一些控制终端操作信号。2、在后台运行。3、脱离控制终端和进程组。4、禁止进程重新打开控制终端。5、关闭打开的文件描述符。6、改变当前工作目录。7、重设文件创建掩模。8、处理SIGCHLD信号。26、画出面向连接的(TCP)socket通信模型,并解释说明其中主要的socket函数。答:主机:创建socket文件描述符socket-绑定IP地址端口bind-向某主机发起两节connect-发送/接受数据包read/write/send/recv-关闭连接close/shutdown服务器:创建socket文件描述符socket-绑定IP地址端口bind-让该socket监听网络listen-接受连接accept-发送/接受数据包read/write/send/recv-关闭连接close/shutdown27、画出面向非连接的(UDP)socket通信模型,并解释说明其中主要的socket函数。答:客户端:socket-bind-revcfrom/recvmsg-sendto/sendmsg-Close/shutdow服务器:socket-bind-sendto/sendmsg-revcfrom/recvmsg-Close/shutdow28、Linux系统IO操作有哪几种方式?答:1、阻塞I/O2、非阻塞I/O3、多路选择I/O4、信号驱动I/O29、字节排列顺序有几种方式?答:大端方式:对操作数的存放方式是从高字节到底字节。小端方式:对操作数的存放方式是从高字节到底字节。30、POSIX标准下,文件管理的基本操作函数有哪些?答:open打开文件close关闭文件create创建文件25、gcc的编译流程分为了4个步骤,分别为:预处理,编译,汇编,连接26、gcc选项-c的作用是:只编译,不连接27、gcc选项-S的作用是:只编译,不汇编28、gcc选项-E的作用是:只进行预编译,不做其他处理29、gcc选项-g的作用是:产生符号调试工具所必要的符号资讯。30、gcc选项-Idir的作用是:将dir所指出的目录加入到程序头文件目录列表中。31、gcc选项-Ldir的作用是:将dir所指出的牡蛎加入到程序函数档案库文件的目录列表中,是在连接过程中使用的参数32、gcc选项-llib的作用是:连接名为lib的库文件。33、gcc选项-Wall的作用是:允许发出gcc提供的所有有用的报警信息。34、gcc选项-std=gnu99的作用是:支持GNU99的编译器,还有一种是C99。42、什么是系统调用系统调用是指操作系统提供用户程序调用的一组“特殊”接口,相当于API43、标准I/O和低级I/O的区别标准I/O有缓冲区低级I/O没有缓冲区44、什么是进程进程是操作系统结构的基础,是一个执行的程序;45、简述创建进程的方法:用fork函数来创建进程46、管道的读规则、管道的写规则父子进程在运行时,它们的先后次序并不能保证,因此,在这里为了保证父进程已经关闭了读描述符,可在子进程中调用sleep函数。47、有名管道的打开规则、有名管道的读规则、有名管道的写规则只有在管道的读端存在时向管道中写入数据才有意义向管道中写入数据时,linux将不保证写入的原子性,管道缓冲区一有空闲区域,写进程就会试图向管道写入数据。如果读进程不读取管道缓冲区中的数据,那么写操作将会一直阻塞。51、什么是线程:线程是进程的一个实体,一个进程中可以有多个线程,线程的资源是共享的。52、简述二进制信号量和互斥量的作用信号量的作用:用来保证两个或多个关键代码段不被并发调用,在这个关键代码段之前必须获取一个信号量,否则一直等待下去;互斥锁的作用:保证共享数据操作的完整性;53、什么是套接字:套接字就是程序利用socket创建而获得的一个非负整型值,进程之间的通信都是通过操作套接字来完成的55、用C或是伪代码描述4种基于TCP的服务器模型select的TCP的服务器模型socketbindlisten初始化数组(用来放套接字描述符是否存在),select实现多路复用acceptsend/recvclosepoll的TCP的服务器模型socketbindlisten初始化结构体pollfd,poll实现多路复用acceptsend/recvclosepthread的TCP的服务器模型socketbindlistenacceptpthread_createsend/recvcloseprocesssocketbindlistenacceptforksend/recvclose22简述Linux下编程的一般步骤。(本题满分6分)(1)在linux的命令提示符下启动编辑器,如输入vi,启动vi编辑器。---2分(2)输入程序的内容,然后保存,退出。---1分(3)如果编写的是shell程序,在运行前需要增加执行权限,可通过如下语句:chmod+xfilename如果编写的是c程序,则进行编译,GCC源文件–o目标文件。----1分(3)如果发现程序有语法错误或者逻辑错误,则需要继续调试程序,直至程序无任何语法错误或逻辑错误。----1分(4)运行程序./可执行文件名-----1分

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功