嵌入式Linux考试复习.docx

上传人:b****8 文档编号:30027507 上传时间:2023-08-04 格式:DOCX 页数:21 大小:183.28KB
下载 相关 举报
嵌入式Linux考试复习.docx_第1页
第1页 / 共21页
嵌入式Linux考试复习.docx_第2页
第2页 / 共21页
嵌入式Linux考试复习.docx_第3页
第3页 / 共21页
嵌入式Linux考试复习.docx_第4页
第4页 / 共21页
嵌入式Linux考试复习.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

嵌入式Linux考试复习.docx

《嵌入式Linux考试复习.docx》由会员分享,可在线阅读,更多相关《嵌入式Linux考试复习.docx(21页珍藏版)》请在冰豆网上搜索。

嵌入式Linux考试复习.docx

嵌入式Linux考试复习

1、两次过程考核(20分左右)

2、嵌入式系统的定义

嵌入式系统是以应用为中心,以计算机技术为基础,采用可剪裁软硬件,适用于对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统,用于实现对其他设备的控制、监视或管理等功能

3、嵌入式系统与桌面通用系统的区别(列出来两个)

(1)嵌入式系统中运行的任务是专用而确定的,而桌面通用系统需要支持大量的、需求多样的应用程序

(2)嵌入式系统往往对实时性提出较高的要求。

(3)嵌入式系统中使用的操作系统一般是实时操作系统

(4)嵌入式系统运行需要高可靠性保障,比桌面系统的故障容忍能力弱很多

(5)嵌入式系统大都有功耗约束

(6)嵌入式系统比桌面通用系统可用资源少得多,其开发需要专用工具和特殊方法

(7)嵌入式系统开发是一项综合的计算机应用技术

4、(填空)文件的类型;ls–l命令执行后后显示的文件各个属性的意思

文件的类型:

普通文件,目录文件,链接文件,设备文件,管道,堆栈,套接字

各个属性:

(1)第一个字符显示文件的类型

(2)第一个字符之后有3个三位字符组:

第一个三位字符组表示对于文件拥有者(u)对该文件的权限;

第二个三位字符组表示文件用户组(g)对该文件的权限;

第三个三位字符组表示系统其他用户(o)对该文件的权限;

若该用户组对此没有权限,一般显示“-”字符

5、(选择题)文件系统

ext2和ext3

swap文件系统

vfat文件系统

NFS文件系统

ISO9660文件系统

内存文件系统:

proc、sys、ramdisk

嵌入式文件系统:

cramfs、jffs、yaffs等

6、linux目录结构下面放什么(了解常用)

/bin该目录中存放Linux的常用命令

/boot该目录下存放的都是系统启动时要用到的程序

/dev该目录包含了Linux系统中使用的所有外部设备,它实际上是访问这些外部设备的端口,你可以访问这些外部设备,与访问一个文件或一个目录没有区别

/usr用户应用程序和文件都存放在该目录下

/etc该目录存放了系统管理时要用到的各种配置文件和子目录,例如网络配置文件、文件系统等。

/home用来存放该用户的主目录。

/lib该目录用来存放系统动态连接共享库,几乎所有的应用程序都会用到该目录下的共享库

/mnt该目录在一般情况下也是空的,你可以临时将别的文件系统挂在该目录下

7、文件比较命令(必考)

diff:

比较两个不同的文件或不同目录下的两个同名文件功能,并生成补丁文件。

格式:

diff[选项]文件1文件2

diff比较文件1和文件2的不同之处,并按照选项所指定的格式加以输出。

diff的格式分为命令格式和上下文格式,其中上下文格式又包括了旧版上下文格式和新版上下文格式,命令格式分为标准命令格式、简单命令格式及混合命令格式,它们之间的区别会在使用实例中进行详细地讲解。

当选项缺省时,diff默认使用混合命令格式。

 

8、网络相关命令

ifconfig:

查看和配置网络接口的参数

ifconfig[选项][网络接口]

ftp:

利用ftp协议上传和下载文件

telnet:

利用telnet协议浏览信息

telent[选项][IP地址/域名]

9、GCC编译器能编译哪些程序?

编译的四个过程?

常见编译选项?

可以编译如C、C++、ObjectC、Java、Fortran、Pascal、Modula-3和Ada等多种语言

四个过程:

预处理,编译,汇编,链接

常见编译选项:

10、知道动态库和静态库扩展名(必考)

动态库:

.so

静态库:

.a

11、GDB调试:

list加行号,查看当前信息,实验的相关操作(必考)

12、makefile:

过程考核题目;使用变量(那个例子必考)

Makefile格式:

target:

dependency_files

command/*该行必须以tab键开头*/

如:

hello.o:

hello.chello.h

gcc–chello.c–ohello.o

自定义变量:

用来代替一个文本字符串

变量定义的两种方式

递归展开方式VAR=var

简单方式VAR:

=var

变量使用$(VAR)

自动变量:

$@:

目标文件,$∧:

所有的依赖文件,$<:

第一个依赖文件.

13、交叉编译时宿主机与目标机间的连接方式

(1)串行通讯接口

(2)以太网接口

(3)USB接口

(4)JTAG等接口

 

14、主机环境变量配置最后一个实验

/etc/profile是系统启动过程执行的一个脚本,对所有用户都生效。

~/.bash_profile是用户的脚本,在用户登录时生效。

~/.bashrc也是用户的脚本,在~/.bash_profile中调用生效。

把环境变量配置的命令添加到其中一个文件中,之后再注销重新登录即可。

PATH=$PATH:

/usr/share/jdk1.5.0_05jdk

exportPATH

注解:

a.将/usr/share/jdk1.5.0_05jdk改为你的应用程序安装目录

 b.linux下用冒号“:

”来分隔路径

 c.$PATH/$CLASSPATH/$JAVA_HOME是用来引用原来的环境变量的值,在设置环境变量时特别要注意不能把原来的值给覆盖掉了,这是一种常见的错误。

d.export是把个变量导出为全局变量。

15、串口命令台(参考实验)

串行通讯接口很适合作为控制台,在各种操作系统上一般都有现成的控制台程序可以使用。

Linux系统通常使用minicom串口通讯工具。

Minicom的配置界面是菜单方式。

在Shell下执行“minicom–s”命令,出现配置菜单。

15、bootloader的作用?

常见的有哪些?

作用:

初始化硬件设备、建立内存空间的映射图,下载操作系统映像文件到SDRAM中,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核或用户应用程序准备好正确的环境

常见:

u-boot,vivi,blob

16、系统调用和API

系统调用是指操作系统提供给用户程序调用的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务。

在实际使用中程序员调用的通常是用户编程接口——API

 

17、文件描述符

文件描述符是一个非负的整数,它是一个索引值,并指向在内核中每个进程打开文件的记录表。

对于Linux而言,所有对设备和文件的操作都是使用文件描述符来进行的。

当打开一个现存文件或创建一个新文件时,内核就向进程返回一个文件描述符;当需要读写文件时,也需要把文件描述符作为参数传递给相应的函数

一个进程启动时,都会打开3个文件:

0:

标准输入

1:

标准输出

2.标准出错

18、IO处理模型的概念

(1)阻塞I/O模型

(2)非阻塞模型

(3)I/O多路转接模型

(4)信号驱动I/O模型

(5)异步I/O模型

19、进程和程序区别和联系

程序是静态的,它是一些保存在磁盘上的指令的有序集合,没有任何执行的概念;而进程是一个动态的概念,它是程序执行的过程,包括了动态创建、调度和消亡的整个过程。

它是程序执行和资源管理的最小单位。

20、进程控制块包括哪些信息?

进程控制块包含了进程的描述信息、控制信息以及资源信息

(1)进程标识符

(2)处理机的信息

(3)进程调度信息

(4)进程控制信息

状态转换图:

 

21、linux中的进程包含哪些段?

Linux中的进程包含3个段,分别为“数据段”、“代码段”和“堆栈段”。

 

22、fork()函数的返回值及每个参数的含义

实际上是在父进程中执行fork()函数时,父进程会复制出一个子进程,而且父子进程的代码从fork()函数的返回开始分别在两个地址空间中同时运行。

可以通过返回值来判定该进程是父进程还是子进程。

23、exec作用

exec函数族就提供了一个在进程中启动另一个程序执行的方法。

(它可以根据指定的文件名或目录名找到可执行文件,并用它来取代原调用进程的数据段、代码段和堆栈段,在执行完之后,原调用进程的内容除了进程号外,其他全部被新的进程替换了。

24、进程间通信:

信号量;通信的种类;深入了解信号的来源、分类、生命周期、处理方式

通信的种类:

(1)管道(Pipe)及有名管道(namedpipe)

(2)信号(Signal)

(3)消息队列(MessgeQueue)

(4)共享内存(Sharedmemory)

(5)信号量(Semaphore)

(6)套接字(Socket)

信号来源:

硬件的原因(比如我们按下了键盘);

软件的原因(比如我们使用系统函数或者是命令发出信号).

信号的种类:

SIGTRMIN:

不可靠信号

SIGTRMAX:

可靠信号

 

信号生命周期:

一个完整的信号生命周期可以分为3个重要阶段,这3个阶段由4个重要事件来刻画的:

信号产生、信号在进程中注册、信号在进程中注销、执行信号处理函数

信号处理方式:

用户进程对信号的响应可以有3种方式。

忽略信号,即对信号不做任何处理,但是有两个信号不能忽略,即SIGKILL及SIGSTOP。

捕捉信号,定义信号处理函数,当信号发生时,执行相应的自定义处理函数。

执行缺省操作,Linux对每种信号都规定了默认操作。

25、线程的作用?

线程的作用:

(1)进一步减少处理机的空转时间

(2)支持多处理器

(3)减少上下文切换开销

26、信号量同步或者互斥锁

同步与互斥参照“生产者和消费者”实验

27、socket编程:

概念,表示方法,类型,两个数据结构和转化

概念:

在Linux中的网络编程是通过socket接口来进行的。

socket是一种特殊的I/O接口,它也是一种文件描述符。

它是一种常用的进程之间通信机制,通过它不仅能实现本地机器上的进程之间的通信,而且通过网络能够在不同机器上的进程之间进行通信。

表示方法:

每一个socket都用一个半相关描述{协议、本地地址、本地端口}来表示

类型:

(1)流式socket(使用TCP协议)

(2)数据报socket(使用UDP协议)

(3)原始socket(使用IP或ICMP进行直接访问)

两个数据结构:

structsockaddr{

unsignedshortsa_family;/*地址族*/

charsa_data[14];/*14字节的协议地址,包含该socket的IP地址和端口号。

*/

};

structsockaddr_in

{

shortintsa_family;/*地址族*/

unsignedshortintsin_port;/*端口号*/

structin_addrsin_addr;/*IP地址*/

unsignedcharsin_zero[8];/*填充0以保持与structsockaddr同样大小*/

};

转化:

数据存储优先顺序的转化

地址格式转化

名字地址转化

28、accept函数(必考),阻塞和非阻塞通信

accept函数等待并接受客户请求:

函数原型:

intaccept(intsockfd,structsockaddr*addr,socklen_t*len)

返回:

非负描述字——成功,-1——失败

参数sockfd就是上面解释中的监听套接字,这个套接字用来监听一个端口,当有一个客户与服务器连接时,它使用这个一个端口号。

参数addr,是一个结果参数,它用来接受一个返回值,这返回值指定客户端的地址,如果对客户的地址不感兴趣,那么可以把这个值设置为NULL。

参数len,也是结果的参数,用来接受上述addr的结构的大小的,它指明addr结构所占有的字节个数。

同样的,它也可以被设置为NULL。

如果accept成功返回,则服务器与客户已经正确建立连接了,此时服务器通过accept返回的套接字来完成与客户的通信。

阻塞式通信是指,当试图对文件描述符进行读写时,如果当时没有东西可读,或者暂时不可写,程序就进入等待状态,直到有东西可读或者可写为止。

而对于非阻塞状态,如果没有东西可读,或者不可写,读写函数马上返回,而不会等待

29、设备分类,设备驱动程序与外界的接口(了解实现)

Linux系统的设备分为三类:

字符设备、块设备和网络设备

Linux设备驱动程序与外界的接口可以分为如下3个部分:

(1)驱动程序与操作系统内核的接口:

这是通过数据结构file_operations来完成的。

(2)驱动程序与系统引导的接口:

这部分利用驱动程序对设备进行初始化

(3)驱动程序与设备的接口:

这部分描述了驱动程序如何与设备进行交互,这与具体设备密切相关。

 

30、file-operaions(重点)

structfile_operations

{

loff_t(*llseek)(structfile*,loff_t,int);

ssize_t(*read)(structfile*filp,char*buff,size_tcount,loff_t*offp);

ssize_t(*write)(structfile*filp,constchar*buff,size_tcount,loff_t*offp);

int(*readdir)(structfile*,void*,filldir_t);

unsignedint(*poll)(structfile*,structpoll_table_struct*);

int(*ioctl)(structinode*,structfile*,unsignedint,unsignedlong);

int(*mmap)(structfile*,structvm_area_struct*);

int(*open)(structinode*,structfile*);

int(*flush)(structfile*);

int(*release)(structinode*,structfile*);

int(*fsync)(structfile*,structdentry*);

int(*fasync)(int,structfile*,int);

int(*check_media_change)(kdev_tdev);

int(*revalidate)(kdev_tdev);

int(*lock)(structfile*,int,structfile_lock*);

};

 

31、为什么是释放设备而不是关闭?

因为可能有其他应用程序还使用该设备。

当一个进程释放设备时,其他进程还能继续使用该设备,而当一个进程关闭设备时,其他进程必须重新打开此设备才能使用它。

32、(程序填空题)底层IO操作的例子

/*copy_file.c*/

#include

#include

#include

#include

#include

#include

#defineBUFFER_SIZE1024/*每次读写缓存大小,影响运行效率*/

#defineSRC_FILE_NAME"src_file"/*源文件名*/

#defineDEST_FILE_NAME"dest_file"/*目标文件名文件名*/

#defineOFFSET10240/*复制的数据大小*/

intmain()

{

intsrc_file,dest_file;

unsignedcharbuff[BUFFER_SIZE];

intreal_read_len;

/*以只读方式打开源文件*/

src_file=open(SRC_FILE_NAME,O_RDONLY);

/*以只写方式打开目标文件,若文件不存在则创建该文件,访问权限值为644*/

dest_file=open(DEST_FILE_NAME,O_WRONLY|O_CREAT,

S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);

if(src_file<0||dest_file<0)

{

printf("Openfileerror\n");

exit

(1);

}

/*将源文件的读写指针移到最后10KB的起始位置*/

lseek(src_file,-OFFSET,SEEK_END);

/*读取源文件的最后10KB数据并写到目标文件中,每次读写1KB*/

while((real_read_len=read(src_file,buff,sizeof(buff)))>0)

{

write(dest_file,buff,real_read_len);

}

close(dest_file);

close(src_file);

return0;

}

 

嵌入式系统PPT归纳总结

Linux常用操作命令

su:

用于将普通用户身份转变为超级用户

su[选项][使用者]

ps:

显示当前系统中由该用户运行的进程列表

ps[选项]

top:

动态显示系统中运行的程序(一般为每隔5s)top

kill:

输出特定的信号给指定PID(进程号)的进程

kill[选项]进程号(PID)

uname显示系统的信息(可加选项-a)

uname[选项]

setup:

系统图形化界面配置

setup

shutdown:

关闭或重启Linux系统

shutdown[选项][时间]

clear:

清除屏幕上的信息

clear

free:

查看当前系统内存的使用情况

free[选项]

mount:

挂载文件系统

mount[选项][类型]设备文件名挂载点目录

cd:

改变当前工作目录

cd[路径]

ls:

列出目录和文件的信息

ls[选项][文件]

mkdir:

创建一个目录

mkdir[选项]路径

cat:

连接并显示指定的一个和多个文件的有关信息。

cat[选项]文件1文件2…

其中的文件1、文件2为要显示的多个文件。

cp:

将给出的文件或目录复制到另一文件或目录中。

cp:

cp[选项]源文件或目录目标文件或目录

mv:

为文件或目录改名或将文件由一个目录移入另一个目录中。

mv[选项]源文件或目录目标文件或目录

rm:

删除一个目录中的一个或多个文件或目录。

rm[选项]文件或目录

34、静态库与动态库的比较

动态库只有在使用它的程序执行时才被链接使用,而不是将需要的部分直接编译入可执行文件中,并且一个动态库可以被多个程序使用故可称为共享库,而静态库将会整合到程序中,因此在程序执行时不用加载静态库

35、嵌入式Linux系统从软件的角度看通常可以分为四个层次:

(1).引导加载程序

(2).Linux内核。

(3).文件系统。

(4).用户应用程序。

4、底层文件IO常用函数:

36、进程是Linux系统的基本调度和管理资源的单位,它是通过进程控制块来描述的。

37、进程的执行模式:

用户模式和内核模式。

用户模式:

运行的是用户程序/应用程序或者内核之外的系统程序;

内核模式:

运行操作系统核心程序。

用户程序执行过程中出现系统调用或者发生中断事件,用户模式切换成内核模式。

38、socket编程的基本函数有socket()、bind()、listen()、accept()、send()、sendto()、recv()以及recvfrom()等,其中根据客户端还是服务端,或者根据使用TCP协议还是UDP协议,这些函数的调用流程都有所区别。

 

39、网络通信时两种套接字:

监听套接字:

在调用listen函数之后,一个套接字会从主动连接的套接字变身为一个监听套接字

连接套接字:

accept返回是一个连接套接字,它代表着一个网络已经存在的点对点连接。

40、模块在调用insmod命令时被加载,此时的入口点是init_module()函数,通常在该函数中完成设备的注册。

同样,模块在调用rmmod命令时被卸载,此时的入口点是cleanup_module()函数,在该函数中完成设备的卸载。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 国外设计风格

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1