还剩11页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
嵌入式Linux第一章1嵌入式系统概念以应用为中心,以计算机控制系统为基础,并且软硬件可剪裁,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统2嵌入式系统的三个基本要素嵌入性,专用性,计算机系统3嵌入式系统的组成应用软件、嵌入式操作系统、硬件设备(嵌入式处理器/外围设备)4特点
(1)面向特定应用
(2)嵌入式系统的硬件和软件都必须进行高效地设计,量体裁衣,去除冗余
(3)嵌入式系统是将先进的计算机技术,半导体技术和电子技术与各个行业的具体应用相结合后的产物
(4)为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在储存芯片中或单片机本身,而不是存储于磁盘中
(5)嵌入式开发软件代码尤其要求高质量,高可靠性
(6)嵌入式系统本身不具备二次开发功能
5.嵌入式系统的开发主要分为系统总体开发、嵌入式硬件开发和嵌入式软件开发三大部分
6.交叉编译环境就是在一个平台上生成可以在另一个平台上执行的代码第二章1vimvi特点移植性最好,功能最强,使用最广2vim编辑器的4种模式标准模式,插入模式,命令模式,可视模式标准模式(Normalmode)通常进入vim后默认处于标准模式(或者称为命令模式)在此模式下任何键盘的输入都是作为命令来对待命令的输入通常是不回显的,只显示执行的结果插入模式(InsertMode)用户只有在插入模式下才可以进行字符输入,用户按[Esc]键可回到命令行模式下命令行模式(Command-linemode)在此模式下,用户可以将文件保存或退出vim,也可以设置编辑环境,如寻找字符串、列出行号等可视模式(Visualmode)在此模式下,通过移动光标选择文本,选中的文本将反白显示,这样提供高效、直观的编辑功能用户按下ESC键可回到命令行模式3vim的进入,保存,退出过程在命令终端下键入“vim文件名”,在shell中键入“vimhello.c”进入;“q”——不保存并退出,“q!”——不保存并强制退出;“wq”——保存并退出;4gcc编译的4个步骤*.c预处理*.i、编译*.s、汇编*.o、链接*.exe5gcc中gcc的选项“-E”可以使编译器在预处理结束时就停止编译,选项“-o”是指定GCC输出的结果,其命令格式为如下所示gcc–E–o[目标文件][编译文件]“.i”文件是经过预处理的C原始程序$gcc-E-ohello.ihello.c6-S编译之前停止.s汇编语言原始程序$gcc-S-ohello.shello.i7-c可以看见汇编代码已转化为“.o”的二进制目标代码$gcc-chello.shello.o8-c只编译汇编不连接;-S只编译不汇编,生成汇编代码;-E只进行预编译;-g可执行程序中包含标准调试信息;-ofile将file文件指定为输出文件;-v打印出9函数库静态库和动态库;静态库是一系列的目标文件(.o文件)的归档文件(libname.a);动态库(libname.so[主版本号.次版本号.发行号])在程序编译时并不会被链接到目标代码中,而是在程序运行时才被载入区别动态库仅当使用它的程序执行时才被链接使用,不必参与编译,一个动态库可以被多个程序使用;静态库将整合到程序中,程序执行是不加载静态库优缺点静态库会使程序臃肿,难以升级,容易部署动态库会使程序轻便,易于升级,部署困难10make工程管理器是个自动编译管理器,能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件的内容来执行大量的编译工作11在一个makefile中通常包含的内容
(1)需要由make工具创建的目标体(target)通常是目标文件或可执行文件;
(2)要创建的目标体所依赖的文件
(3)创建每个目标体时需要运行的命令,这一行必须以制表符“tab”键开头12makefile的变量定义有两种方式递归展开方式和简单方式13隐式规则所有“.o”文件都可自动由“.c”文件使用命令“$CC$CPPFLAGS$CFLAGS-cfile.c-ofile.o”来生成
14.GDB调试四项基本功能
(1)能够运行程序,设置所有能影响程序运行的参数
(2)能够让程序在指定的条件下停止
(3)能够在程序停止时检查所有参数的情况
(4)能够根据指定条件改变程序的运行
15.GDB的使用流程进入GDB——gdbtest查看文件——l设置断点——b6查看断点处情况——infob运行代码——r查看变量值——pn/pi单步运行——n恢复程序运行——c观察变量——watchn退出GDB——q第三章1预处理指在进行编译的第一遍扫描之前所做的工作2宏在C语音源程序中允许用一个标识符来表示一串符号3宏的分类带参数和不带参数4无参宏定义无参宏的宏名(也就是标识符)后不带参数,其定义的一般形式为#define标识符字符串5宏定义说明
(1)宏定义用宏名来表示一串符号,至替换,不检查
(2)不是声明或语句,在行末不必加分号;
(3)作用域包括从宏定义命名起到源程序结束,使用#undef命令来取消宏作用域
(4)宏名在源程序中若用引号括起,则预处理程序不对起进行宏替换
(5)宏定义允许嵌套
(6)宏名用大写字母,区别变量
(7)对输出格式做宏定义,减少程序编写过程中麻烦6带参宏定义#define宏名(形参表)字符串说明
(1)带参宏定义中,宏名和形参表之间不能有空格出现;
(2)形式半数不分配内存单元,不必做类型定义;
(3)在宏定义中形参是标识符,而宏调用中的实参可以是表达式;
(4)在宏定义中,字符串内的形参通常要用括号括起来以避免出错7堆与栈的区别申请方式;申请后系统的响应;申请大小的限制;申请速度的限制;堆和栈中的存储内容申请方式栈(stack)自动分配堆(head)手动分配申请后系统的响应堆遍历栈溢出申请大小的限制堆高地址扩展,灵活,大栈低地址扩展,受限,小申请速度的限制堆malloc(),慢栈自动分配,快堆和栈中的存储内容堆堆大小,内容随意安排栈语句地址,参数(左←右),局部变量8内嵌汇编的语法__asm__汇编语句模板由汇编语句序列组成,语句之间使用“;”、“\n”或“\n\t”分开每条指令都必须被双引号括起来两条指令必须用换行或分号分开指令中的操作数可以使用占位符引用C语言变量,操作数占位符最多10个,名称如为%0,%1,...,%9输出部分用来指定当前内嵌汇编语句的输出输入部分指定当前内嵌汇编语句的输入,每个操作数描述符由限定字符串和C语言表达式或者C语言变量组成,格式为形如“constraint”variable的列表破坏描述部分通知gcc当前内嵌汇编语句可能会对某些寄存器或内存进行修改,希望gcc在编译时能够将这一点考虑进去9双向链表的常见操作
(1)增加节点
(2)删除节点10Linux内核链表
(1)声明和初始化这里是使用LIST_HEAD这个宏来构建的#defineLIST_HEAD_INITname{namename}#defineLIST_HEADnamestructlist_headname=LIST_HEAD_INITname构建了一个空链表staticinlineintlist_emptyconststructlist_head*head{returnhead-next==head;}
(2)插入staticinlinevoid__list_addstructlist_head*newstructlist_head*prevstructlist_head*next{next-prev=new;new-next=next;new-prev=prev;prev-next=new;}staticinlinevoidlist_addstructlist_head*newstructlist_head*head{__list_addnewheadhead-next;}staticinlinevoidlist_add_tailstructlist_head*newstructlist_head*head{__list_addnewhead-prevhead;}11对链表的插入操作在表头插入和在表尾插入12红黑树的定义
(1)每个节点要么是红色,要么是黑色
(2)所有的叶子节点都是空节点,并且都是黑色
(3)如果一个节点是红色,那么它的两个子节点都是黑色
(4)节点到其子孙节点的每条简单路径都包含相同数目的黑色节点
(5)根节点永远是黑色的13哈希表定义为了能够迅速找到所需要的记录,最为直接的方法是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使每个关键字和结构中一个唯一的存储位置相对应14Bootloader定义是在操作系统运行之前执行的一段小程序,通过这段小程序,可以初始化硬件设备,建立内存空间的映像表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备15Linux内核主要功能包括进程管理,内存管理,文件管理,设备管理,网络管理第4章嵌入式linux开发环境的搭建
1.tftp分为客户端和服务器两种
2.NFS文件系统原理NFS可以让不同的主机通过网络将远端的NFS服务器共享出来的文件安装到自己的系统中,从客户端看来,使用NFS的远端文件就像是使用本地文件一样在嵌入式中使用NFS会使应用程序的开发变得十分方便,并且不用反复地进行烧写过程NFS服务器端通过读入它的配置文件“/etc/exports”来决定所共享的文件目录客户端可以根据相应的权限
3.NFS服务器端通过读入它的配置文件“/etc/exports”来决定所共享的文件目录
4.Bootloader是一段小程序,可以初始化硬件设备建立内存空间的映像表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备
5.Linux内核主要功能包括进程管理、内存管理、文件管理、设备管理、网络管理等配置minicomnfstftp等1rpm–Uvh*.rpm搭建好交叉编译环境2vi/etc/exports修改相应的内容第二行改写为/home/nfsrw注意空格保存退出3cd/etc/rc.d/init.d/
4./nfsstart启动主机下的NFS5终端下输minicom–s修改第三个选项6配置波特率115200,按a修改/dev/ttyS0最后选yes保存退出7ifconfigeth
0192.
168.
0.2配置ip地址8ping
192.
168.
0.3查看是否与主机相连上9chmod777/home/nfs改变文件夹的属性10mkdir/mnt/yaffs11servernfsrestart重新启动12mount–onolock
192.
168.
0.2:/home/nfs/mny/yaffs完成把主机上的/home/nfs下的文件挂载到实验系统的/mnt/yaffs目录下第五章嵌入式文件I/O编程1系统调用指操作系统提供给用户程序调用的一组“特殊”接口,用户程序可以通过这组“特殊”接口获得操作系统内核提供的服务1将程序的运行空间分为内核空间和用户空间(即内核态和用户态)2调用内核空间程序用户空间的进程需要获得一定的系统服务,这时,操作系统就必须利用系统提供给用户的特殊接口——系统调用规定用户进程进入进程进入内核空间的具体位置4VFS定义把各种具体的文件系统的公共部分抽取出来,形成一个抽象层,是系统内核的一部分它位于用户程序和具体的文件系统之间,对用户程序提供了标准的文件系统调用接口5VFS文件引入了通用文件模型,此模型的核心超级块对象,索引节点对象,文件对象,目录项对象6文件描述符是一个非负的整数,它是一个索引值,并指向在内核中每个进程打开文件的记录表当打开一个现存文件或创建一个新文件时,内核就向进程返回一个文件描述符;当需要读写文件时,也需要把文件描述符作为参数传递给相应的函数7I/O操作的系统调用,主要函数open、read、write、Jseek、close这些函数特点不带缓存,直接对文件或设备进行读写操作8文件锁建议性锁和强制性锁建议性锁要求每个上锁文件的进程都要检查是否有锁存在,并且尊重已有的锁强制性锁是由内核执行的锁,当一个文件被上锁进行写入操作的时候,内核将阻止其他任何文件对其进行读写操作9建议性锁要求每个上锁文件的进程都要检查是否有锁存在,并且尊重已有的锁强制性锁由内核执行的锁,当一个文件被上锁进行写入操作的时候,内核将阻止其他任何文件对其进行读写操作10终端的3种工作模式规范模式,非规范模式,原始模式11标准I/O提供流缓冲的目的是尽可能减少使用read()和write()等系统调用的数量
(1)全缓冲
(2)行缓冲
(3)不带缓第六章多任务编程
1.进程的特性并发性,动态行,交互性,独立性,异步性
2.进程的状态运行状态,可中断的阻塞状态,不可中断的阻塞状态,可终止的阻塞状态,暂停状态,跟踪状态,僵尸状态,僵尸撤销状态进程中的状态阻塞态、暂停态、僵尸态、运行态进程的创建、执行和终止
3.虚拟内存管理技术,大小为4G的线性虚拟空间,4G空间会被分成两个部分用户空间和内核空间
4.用户空间包括的功能区域只读段;数据段;堆;堆栈;共享库的内存映射区域4fork函数从已存在的进程中创建一个新进程父进程中执行fork()函数时,父进程会复制出一个子进程,而且父子进程的代码从fork()函数的返回开始分别在两个地址空间中同时运行从而两个进程分别获得其所属fork()的返回值,其中在父进程中的返回值是子进程的进程号,而在子进程中返回06编写守护进程
(1)创建子进程,父进程退出
(2)在子进程中创建新会话
(3)改变当前目标为根目录
(4)重设文件权限掩码
(5)关闭文件描述符7常用的进程间通信机制(掌握)
(1)管道(Pipe)及有名管道(namedpipe)管道可用于具有亲缘关系进程间的通信;有名管道,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信
(2)信号(Signal)信号是在软件层次上对中断机制的一种模拟,它是比较复杂的通信方式,用于通知进程有某事件发生,一个进程收到一个信号与处理器收到一个中断请求效果上可以说是一样的
(3)消息队列(MessgeQueue)消息队列是消息的链接表,包括Posix消息队列SystemV消息队列它克服了前两种通信方式中信息量有限的缺点,具有写权限的进程可以按照一定的规则向消息队列中添加新消息;对消息队列有读权限的进程则可以从消息队列中读取消息
(4)共享内存(Sharedmemory)可以说这是最有效的进程间通信方式它使得多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程中对共享内存中数据的更新这种通信方式需要依靠某种同步机制,如互斥锁和信号量等
(5)信号量(Semaphore)主要作为进程之间以及同一进程的不同线程之间的同步和互斥手段
(6)套接字(Socket)这是一种更为一般的进程间通信机制,它可用于网络中不同机器之间的进程间通信,应用非常广泛
9.管道,是把一个程序的输出直接连接到另一个程序的输入,Linux的管道主要包括2种无名管道和有名管道8管道通信无名管道和有名管道无名管道特点
(1)具有亲缘关系的进程之间的通信;
(2)半双工的通信模式,具有固定的读端和写端;
(3)也可以看成是一种特殊的文件,并且只存在与内存中9有名管道特点
(1)可以使互不相关的两个进程实现彼此通信
(2)可以通过路径名来指出
(3)FIFO严格的遵循先进先出规则10标准流管道将一系列的创建过程合并到一个函数popen中完成创建一个管道;建立一个子进程;在父子进程中关闭不需要的文件描述符;执行exec函数族调用;执行函数中所指定的命令11信号可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以利用它来通知用户空间进程发生了哪些系统事件它可以在任何时候发给某一进程,而无需知道该进程的状态如果该进程当前并未处于执行态,则该信号就由内核保存起来,知道该进程回复执行再传递給它为止;如果一个信号被进程设置为阻塞,则该信号的传递被延迟,直到其阻塞被取消时才被传递给进程12使用信号量通常分为4步骤
(1)创建信号量或获得在系统已存在的信号量,此时需要调用semget函数不同进程通过使用同一个信号量键值来获得同一信号量
(2)初始化信号量,此时使用semctl函数的SETVAL操作当使用二维信号量时,通常将信号量初始化为1
(3)进行信号量的PV操作,此时调用semop函数实现进程之间的同步和互斥的核心工作部分
(4)如果不需要信号量,则从系统中删除它,此时使用semctl函数的IPC_RMID操作此时需要注意,在程序中不应该出现对已经被删除的信号量的操作13共享内存的实现
(1)创建共享内存,用函数shmget,从内存中获得一段共享内存区域
(2)映射共享内存,把这段创建的共享内存映射到具体的进程空间中,这里使用shmat14消息队列的实现创建或打开消息队列,添加消息,读取消息和控制消息队列15PV原子操作对整数计数器信号量的操作P操作如果有可用的资源(信号量值0),则占用一个资源(给信号量值减去一,进入临界区代码);如果没有可用的资源(信号量值等于0),则被阻塞到,直到系统将资源分配给该进程(进入等待队列,一直等到资源轮到该进程)V操作如果在该信号量的等待队列中有进程在等待资源,则唤醒一个阻塞进程如果没有进程等待它,则释放一个资源(给信号量值加一)16线程属性绑定属性;分离属性;堆栈属性;堆栈大小;优先级17绑定属性定义指一个用户线程固定地分配给一个内核线程,因为CPU时间片的调度是面向内核线程的,因此具有绑定属性的线程可以保证在需要的时候总有一个内核线程与之对应非绑定属性指用户线程和内核线程的关系不是始终固定的,而是由系统来控制分配的第七章网络编程1OSI模型和TCP/IP参考模型层次应用层;表示层;会话层;传输层;网络层;数据链路层;物理层2TCP/IP分层模型中有两大边界特性一个是地址边界特性,它将IP逻辑地址与底层网络的硬件地址分开;一个是操作系统边界特性,它将网络应用与协议软件分开3套接字类型流式套接字;数据包套接字;原是套接字
4.网络高级编程三种解决I/O多路复用的解决方法,分别为非阻塞和异步式处理(使用fcntl()函数)以及多路复用处理(使用select()或poll()函数)第八章设备驱动编程1Linux系统的设备分类字符设备(像普通文件或字节流);块设备(一些需要以块为单位随机读写的设备);网络设备(通过网络能够与其他主机进行数据通信的设备)2设备驱动程序的特点
(1)内核代码;
(2)内核接口;
(3)内核机制和服务;
(4)可装载;
(5)可设置;
(6)动态性3重要的内核数据结构file_operation(函数)file(表示打开的文件描述符)inode(表示文件)课后题
1.什么是嵌入式系统,它具有哪些特点?从各方面比较嵌入式系统与通用计算器的区别解嵌入式系统是以应用为中心,以计算机控制系统为基础,并且软硬件可剪裁,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统特点
(1)面向特定应用
(2)软硬件都高效的设计、剪裁适当
(3)是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物
(4)高执行速度和可靠性
(5)代码高质量、高可靠性
(6)本身不具备二次开发功能区别嵌入式系统与通用计算机系统有着完全不同的技术要求和技术发展方向通用计算机系统的技术要求是高速、海量的数值计算,其技术发展方向是总线速度的无限提升、存储容量的无限扩大;而嵌入式计算机系统的技术要求则是智能化控制,技术发展方向是与对象系统密切相关的潜入性能、控制能力与控制的可靠性不断提高嵌入式系统(简称“嵌”)和通用计算机(简称“通”)的主要区别包括以下几点1形式与类型:“通”实实在在的计算机按其体系结构、运算速度和规模可分为大型机、中型机、小型机和微机“嵌”“看不见”的计算机,形式多样,应用领域广泛2按应用进行分类组成:“通”通用处理器、标准总线和外设、软硬件相对独立“嵌”面向特定应用的微处理器,总线和外设一般集成在处理器内部,软硬件紧密结合3系统资源:“通”系统资源充足,有丰富的编译器、集成开发环境、调试器等“嵌”系统资源紧缺,没有编译器等相关开发工具4开发方式:“通”开发平台和运行平台都是通用计算机“嵌”采用交叉编译方式,开发平台一般是通用计算机,运行平台是嵌入式系统5二次开发性:“通”应用程序可重新编程“嵌”一般不能重新编程开发6发展目标:“通”编程功能电脑,普遍进入社会“嵌”变为专用电脑,实现“普及计算”
2.嵌入式系统由哪些部分组成?常用的嵌入式操作系统有哪些?分别有什么特点?解由硬件设备、嵌入式操作系统和应用软件组成常用的嵌入式操作系统
(1)嵌入式Linux低成本、多硬件支持、优异的性能和良好的网络支持
(2)μC/OS-Ⅱ免费公开源代码,结构小巧、基于优先级的可抢先的硬实时内核
(3)VxWorks:实时性好,延迟短
(4)QNX分布式、嵌入式、可扩展,核心小巧,运行速度很快
(5)windowsCE图形界面相当出色
(6)PalmOS优秀的移动设备的支持,最明显的特点是精简
3.CISC处理器和RISC处理器分别有哪些优点和缺点?指标RISCCISC流水线一个周期执行一条指令,通过简单指令的组合实现复杂操作;指令长度固定指令长度不固定,执行需要多个周期寄存器流水线没周期前进一步指令的执行需要调用微代码的一个微程序Load/Stroe结构独立的Load和Store指令完成数据在寄存器和外部存储器之间的传输处理器能够直接处理存储器中的数据
4.简述ARM处理器和各个系列的特点
(1)ARM7内核采用冯•诺伊曼体系结构,数据和指令使用同一条总线内核有一条3级流水线,执行ARMv4指令集
(2)ARM9采用5级指令流水线,能够运行在比ARM7更高的时钟频率上,改善了处理器的整体性能;存储器系统根据哈佛体系结构重新设计,区分了数据总线和指令总线
(3)ARM9系列的下一代处理器基于ARM9E-S内核,这个内核是ARM9内核带有E扩展的一个可综合版本,执行v5TE架构指令
(4)ARM1020E和ARM1020E处理器核,其核心在于使用向量浮点(VFP)单元VFP10提供高性能的浮点解决方案,从而极大提高了处理器的整型和浮点运算性能
(5)ARM10E系列处理器采用了新的节能模式,提供了64位的Load/Store体系,系统集成更加方便,拥有完整的硬件和软件开发工具
5.什么是交叉编译?为什么进行交叉编译?解交叉编译是指在一个平台上生成可以在另一个平台上执行的代码原因是由于不同的体系结构有不同的指令系统因此,不同的cpu需要有相应的编译器,而交叉编译就如同翻译一样,把相同的程序代码翻译成不同的cpu的对应的可执行的二进制文件
6.嵌入式开发的常用调试手段有哪几种?说出它们各自的优缺点嵌入式的调试手段主要是交叉调试嵌入式系统的交叉调试有多种方法,主要可分为软件方式和硬件方式两种·调试器和被调试进程运行在不同的机器上,调试器运行在PC机(宿主机),而被调试的进程则运行在各种专业调试板上(目标板)·调试器通过某种通信方式(串口、并口、网络、JTAG等)控制被调试进程·在目标机上一般会具备某种形式的调试代理,它负责与调试器共同配合完成对目标机上运行着的进程的调试这种调试代理可能是某些支持调试功能的硬件设备,也可能是某些专门的调试软件(如gdbserver)·目标机可能是某种形式的系统仿真器,通过在宿主机上运行目标机的仿真软件,整个调试过程可以在一台计算机上运行此时物理上虽然只有一台计算机,但逻辑上仍然存在着宿主机和目标机的区别
7.设计一个汉诺塔游戏#includestdio.hvoidmoveintncharsourcechartarget{printf第%d个盘子从%c移到%c.\nnsourcetarget;}voidhanoiintncharAcharBcharC{ifn==1move1ACelse{hanoin-1ACB;hanoinAC;hanoin-1BAC;}}voidmain{intnum;scanf%dnum;hanoinumABC;}
8.在主机上搭建交叉编译环境,并用交叉编译器编译hello.c程序
(1)将压缩包解压至一个目录下;
(2)查看并修改环境变量echo$PATH查看exportPATH=$PATH:/opt/host/arm4l/binsource/etc/exportsarmval-unknown-linux-gcchello.c-ohello
9.移植与编译FS2410目标板平台的U-Boot、内核U-Boot不用看了,太难不考内核配置
(1)下载内核源码,解压;
(2)修改内核目录树跟下的Makefile,指明交叉编译器
(3)设置环境变量
(4)配置内核产生的.config文件
(5)运行makemenuconfig命令进行配置
(6)makezImage命令来生成镜像文件
(7)将镜像复制到nfs的共享目录下,进行烧写
10.在主机上安装和配置minicom、tftp、nfs等应用程序和服务器,并通过软件进行嵌入式的应用程序的开发minicom-s打开minicom的配置界面修改A-SerialDevice为E-Bps/Par/Bits:8N1进入后调传输率为115200,奇偶校验位等设置然后保存退出tftp的配置不用搭建了,跟nfs的作用是一样的,上课时咱们讲的用的是nfsnfs的搭建过程1).新建一个用于网络共享的目录,通常是建立/home/nfs2).在终端运行setup,关掉防火墙3).修改/etc/export配置文件,添加/home/nfsrw4).ifconfigeht
0192.
168.
0.2配置ip地址5).建立挂载目录mkdir/mnt/yaffs6).启动nfs服务servernfsstart7).挂载nfsmount
192.
168.
0.2:/mnt/yaffs/home/nfs
11.简述虚拟文件系统在linux系统中的重要地位和通用文件系统模型VFS是将各种具体的文件系统的公共部分抽取出来,形成一个抽象层,是系统内核的一部分位于用户程序和具体的文件系统之间,对用户程序提供了标准的文件系统调用接口对于不同具体的文件系统,它通过一系列的对不同文件系统公用的函数指针来实际调用具体的文件系统函数,完成实际的各有差异的操作任何使用文件系统的程序必须经过这层接口来使用它通过这种方式,VFS对用户屏蔽了底层文件系统的实现细节和差异通用文件模型,核心是4个对象类型超级块对象是用来描述整个文件系统的信息;索引节点对象存放关于具体文件的一般信息;目录项对象存放目录项与对应文件链接的信息;文件对象用于表示一些进程已打开的文件
12.底层文件操作和标准文件操作之间有哪些区别
(1)底层文件操作没有缓存,标准文件操作有全缓冲、行缓冲和不带缓冲三种形式
(2)底层文件的读写操作需要每次都进行read和write函数的调用,标准的文件操作只进行一次read和write操作即可
13.什么叫多任务系统?任务、进程、线程分别是什么?它们之间有什么区别?多任务处理:用户可以在同一时间内运行多个应用程序,每个应用程序被称作一个任务任务:由一个软件完成的活动,或者是一系列共同达到某一目的的操作通常一个任务是一个程序的一次运行,一个任务包含一个或多个完成独立功能的子任务,这个独立的子任务是进程或者是线程进程:是指一个具有独立功能的程序在某个数据集合上的一次动态执行过程,它是系统进行资源分配和调度的基本单元线程它是进程内独立的一条运行路线,处理器调度的最小单元,也可以称为轻量级进程区别程序是静态的一段代码,是一些保存在非易失性存储器的指令的有序集合,没有任何执行的概念;进程是一个动态的概念,它是程序执行的过程,包括了动态创建、调度和消亡的整个过程,它是程序执行和资源管理的最小单位
14.简述linux下进程管理机制的工作原理进程的创建和执行fork和exec函数族fork通过拷贝当前进程创建一个子进程,子进程与父进程的区别仅仅在于不同的PID、PPID和某些资源及统计量exec函数族负责读取可执行文件并将其载入地址空间开始运行进程的终止Linux首先把终止的进程设置为僵尸状态,这个时候,进程无法投入运行了,它的存在只为父进程提供信息,申请死亡父进程得到信息后,开始调用wait函数族,最终赐死子进程,子进程占用的所有资源被全部释放
15.分析在linux内核中如何实现fork函数fork函数用于从已存在的进程中创建一个新进程使用fork函数得到的子进程是父进程的一个复制品,它从父进程处继承了整个进程的地址空间,而子进程所独有的只有它的进程号、资源使用和计时器等。