【单选题】将高级语言源程序翻译成机器语言程序的过程中,常引入中间代码。以下关于中间代码的叙述中,不正确的是______。
A、中间代码不依赖于具体的机器
B、使用中间代码可提高编译程序的可移植性
C、中间代码可以用树或图表示
D、中间代码可以用栈和队列表示
答案:D
解析:本题考查程序语言基础知识。从原理上讲,对源程序进行语义分析之后就可以直接生成目标代码,但由于源程序与目标代码的逻辑结构往往差别很大,特别是考虑到具体机器指令系统的特点,要使翻译一次到位很困难,而且用语法制导方式机械生成的目标代码往往是烦琐和低效的,因此有必要设计一种中间代码,将源程序首先翻译成中间代码表示形式,以利于进行与机器无关的优化处理。由于中间代码实际上也起着编译器前端和后端分水岭的作用,所以使用中间代码也有助于提高编译程序的可移植性。常用的中间代码有后缀式、三元式、四元式和树(图)等形式。
【单选题】假设段页式存储管理系统中的地址结构如下图所示,则系统( )。
A、最多可有256个段,每个段的大小均为2048个页,页的大小为8K
B、最多可有256个段,每个段的最大允许有2048个页,页的大小为8K
C、最多可有512个段,每个段的大小均为1024个页,页的大小为4K
D、最多可有512个段,每个段最大允许有1024个页,页的大小为4K
答案:B
解析:本题考查操作系统页式存储管理方面的基础知识。从图中可见,页内地址的长度是13位,213=8192,即8K;页号部分的地址长度是11位,每个段最大允许有211=2048个页;段号部分的地址长度是8位,28=256,最多可有256个段。故本题的正确答案为B。
【单选题】POP3协议采用______模式,客户端代理与POP3服务器通过建立TCP连接来传送数据。
A、Browser/Server
B、Client/Server
C、Peer to Peer
D、Peer to Server
答案:B
解析:本题考查POP3协议及POP3服务器方面的基础知识。POP3协议是TCP/IP协议簇中用于邮件接收的协议。邮件客户端通过与服务器之间建立TCP连接,采用Client/Server计算模式来传送邮件。
【单选题】以下协议中属于应用层协议的是( ),该协议的报文封装在(请作答此空)中传送。
A、TCP
B、IP
C、UDP
D、ICMP
答案:C
解析:ARP和ICMP是网络层协议,X.25是数据链路层协议,只有SNMP是应用层协议。SNMP协议的报文是封装在UDP协议中传送。
【单选题】以下关于文件系统的叙述中,不正确的是______。
A、文件控制块是文件系统中最重要的数据结构,但不是文件存在的唯一标志
B、文件控制块主要包括文件的标识、位置和访问权限等信息
C、文件目录将系统中所有的文件控制块按照某种规律组织起来以便于检索
D、文件目录也是一种文件
答案:A
解析:本题考查计算机文件系统方面的基础知识。文件控制块是文件系统中最重要的数据结构,是文件存在的唯一标志,它存放文件的一些基本信息。主要包括三大部分:文件的标识信息,包括文件名、所有者名、文件类型、文件最近修改时间等;文件的位置信息,包括文件的长度、文件存放位置等;文件的访问权限信息,例如口令、保存时限、保护类别等。文件目录是文件控制块的有序集合,将系统中所有的文件控制块按照某种规律组织起来以便于检索,就形成了文件目录,文件目录也由文件组成。
【单选题】Linux系统对普通文件默认的访问权限是( )。
A、-rwxrwx---
B、-rw-rw-r--
C、-rwx------
D、-rw-r--r--
答案:D
解析:Linux系统文件访问的三种处理模式是读取,、写入w和执行x。对普通文件默认的访问权限是:文件所有者能够读写,但不能执行;文件所有者同组成员和其他成员只能读取,即“-rw-r--r--”。
【单选题】阅读下面的C语言程序,请给出正确的输出结果( )。#include#define N 10#define s(x)x*x#define f(x)(x*x)#define g(x)((x)*(x))main( ){int i1,i2,i3,i4;i1=1000/s(N);i2=1000/f(N);i3=f(N+1);i4=g(N+1);printf(“i1=%d,i2=%d,i3=%d,i4=%d\n”,i1,i2,i3,i4);}
A、i1=1000,i2=10,i3=21,i4=121
B、i1=10,i2=10,i3=121,i4=121
C、i1=1000,i2=1000,i3=21,i4=21
D、i1=10,i2二1000,i3=121,i4=21
答案:A
解析:本题考查宏概念,以及宏替换相关的基础知识。表达式1000/s(N)宏替换后为:1000/10*10,因此结果为1000,而不是期待的10。表达式1000/f(N)宏替换后为:1000/(10*10),因此结果为10,是期待的结果。表达式f(N+1)宏替换后为:(10+1*10+1),因此结果为21,而不是期待的121。表达式g(N+1)宏替换后为:((10+1)*(10+1)),结果为121,是期待的结果。因此,题中程序运行结果为“i1=1000,i2=10,i3=21,i4=121”。
【单选题】以下关于嵌入式软件开发的叙述中,正确的是( )。
A、宿主机与目标机之间只需要建立逻辑连接即可
B、调试器与被调试程序一般位贵同一台机器上
C、嵌入式系统开发通常采用的是交叉编译器
D、宿主机与目标机之间的通信方式只有串口和并口两种
答案:C
解析:本题考查嵌入式系统软件开发调试的基础知识。嵌入式系统的软件开发与通常软件开发的区别:要在于软件实现部分,其中又可以分为编译和调试两部分,下面分别对这两部分进行讲解。第一是交叉编译。嵌入式软件开发所采用的编译为交叉编译。所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。编译的最主要的工作就在将程序转化成运行该程序的CPU所能识别的机器代码,由于不同的体系结构有不同的指令系统。因此,不同的CPU需要有相应的编译器,而交叉编译就如同翻译一样,把相同的程序代码翻译成不同CPU的对应可执行二进制文件。要注意的是,编译器本身也是程序,也要在与之对应的某一个CPU平台上运行。这里一般将进行交叉编译的主机称为宿主机,也就是普通的通用PC,而将程序实际的运行环境称为目标机,也就是嵌入式系统环境。由于一般通用计算机拥有非常丰富的系统资源、使用方便的集成开发环境和调试工具等,而嵌入式系统的系统资源非常紧缺,无法在其上运行相关的编译工具,因此,嵌入式系统的开发需要借助宿主机(通用计算机)来编译出目标机的可执行代码。第二是交叉调试。嵌入式软件经过编译和链接后即进入调试阶段,调试是软件开发过程中必不可少的一个环节,嵌入式软件开发过程中的交叉调试与通用软件开发过程中的调试方式有很大的差别。在常见软件开发中,调试器与被调试的程序往往运行在同一台计算机上,调试器是一个单独运行着的进程它通过操作系统提供的调试接口来控制被调试的进程。而在嵌入式软件开发中,调试时采用的是在宿主机和目标机之间进行的交叉调试,调试器仍然运行在宿主机的通用操作系统之上,但被调试的进程却是运行在基于特定硬件平台的嵌入式操作系统中,调试器和被调试进程通过串口或者网络进行通信,调试器可以控制、访问被调试进程,读取被调试进程的当前状态,并能够改变被调试进程的运行状态。
【单选题】DHCP客户端可从DHCP服务器获得______。
A、DHCP服务器的地址和Web服务器的地址
B、DNS服务器的地址和DHCP服务器的地址
C、客户端地址和邮件服务器地址
D、默认网关的地址和邮件服务器地址
答案:B
解析:本题考查DHCP协议的工作原理。DHCP客户端可从DHCP服务器获得本机IP地址,DNS服务器的地址,DHCP服务器的地址,默认网关的地址等,但没有Web服务器、邮件服务器地址。
【单选题】下列关于C语言中结构类型的叙述中,错误的是( )。
A、结构第一个成员的地址和整个结构的地址相同
B、缺省条件下,编译器为每个成员按自然对齐(alignment)条件分配空间
C、结构成员按照它们被声明的顺序在内存中顺序存储
D、结构是一种复合数据类型,其构成元素只能是基本数据类型
答案:D
解析:结构类型即结构体struct,结构体第一个成员放在偏移为0的地方,称为首地址,和整个结构体的地址相同;每个特定平台有默认的对齐系数,程序员可以通过预编译命令#pragma pack(n),n=1,2,4,8,16来改变这一系数,缺省条件下,编译器为每个成员按自然对齐条件分配空间;结构体成员是按照声明的顺序在内存中顺序存储;结构体是C语言中聚合数据类型,可以被声明为变量、指针、数据等,用来实现复杂的数据结构,结构体的成员也可以包含其他结构体。