《最新嵌入式OSPPT课件.ppt》由会员分享,可在线阅读,更多相关《最新嵌入式OSPPT课件.ppt(67页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、进入夏天,少不了一个热字当头,电扇空调陆续登场,每逢此时,总会想起进入夏天,少不了一个热字当头,电扇空调陆续登场,每逢此时,总会想起那一把蒲扇。蒲扇,是记忆中的农村,夏季经常用的一件物品。记忆中的故那一把蒲扇。蒲扇,是记忆中的农村,夏季经常用的一件物品。记忆中的故乡,每逢进入夏天,集市上最常见的便是蒲扇、凉席,不论男女老少,个个手持乡,每逢进入夏天,集市上最常见的便是蒲扇、凉席,不论男女老少,个个手持一把,忽闪忽闪个不停,嘴里叨叨着一把,忽闪忽闪个不停,嘴里叨叨着“怎么这么热怎么这么热”,于是三五成群,聚在大树,于是三五成群,聚在大树下,或站着,或随即坐在石头上,手持那把扇子,边唠嗑边乘凉。孩
2、子们却在周下,或站着,或随即坐在石头上,手持那把扇子,边唠嗑边乘凉。孩子们却在周围跑跑跳跳,热得满头大汗,不时听到围跑跑跳跳,热得满头大汗,不时听到“强子,别跑了,快来我给你扇扇强子,别跑了,快来我给你扇扇”。孩。孩子们才不听这一套,跑个没完,直到累气喘吁吁,这才一跑一踮地围过了,这时子们才不听这一套,跑个没完,直到累气喘吁吁,这才一跑一踮地围过了,这时母亲总是,好似生气的样子,边扇边训,母亲总是,好似生气的样子,边扇边训,“你看热的,跑什么?你看热的,跑什么?”此时这把蒲扇,此时这把蒲扇,是那么凉快,那么的温馨幸福,有母亲的味道!蒲扇是中国传统工艺品,在是那么凉快,那么的温馨幸福,有母亲的味
3、道!蒲扇是中国传统工艺品,在我国已有三千年多年的历史。取材于棕榈树,制作简单,方便携带,且蒲扇的表我国已有三千年多年的历史。取材于棕榈树,制作简单,方便携带,且蒲扇的表面光滑,因而,古人常会在上面作画。古有棕扇、葵扇、蒲扇、蕉扇诸名,实即面光滑,因而,古人常会在上面作画。古有棕扇、葵扇、蒲扇、蕉扇诸名,实即今日的蒲扇,江浙称之为芭蕉扇。六七十年代,人们最常用的就是这种,似圆非今日的蒲扇,江浙称之为芭蕉扇。六七十年代,人们最常用的就是这种,似圆非圆,轻巧又便宜的蒲扇。蒲扇流传至今,我的记忆中,它跨越了半个世纪,圆,轻巧又便宜的蒲扇。蒲扇流传至今,我的记忆中,它跨越了半个世纪,也走过了我们的半个人
4、生的轨迹,携带着特有的念想,一年年,一天天,流向长也走过了我们的半个人生的轨迹,携带着特有的念想,一年年,一天天,流向长长的时间隧道,袅长的时间隧道,袅嵌入式OS提纲提纲虚拟文件系统VFS的作用VFS的数据结构文件系统类型文件系统安装路径名查找VFS系统调用的实现文件加锁11/2/20222嵌入式嵌入式OS通用文件模型有下列对象类型组成超级块对象(superblock object)存放文件系统相关信息:例如文件系统控制块索引节点对象(inode object)存放具体文件的一般信息:文件控制块/inode文件对象(file object)存放已打开的文件和进程之间交互的信息目录项对象(den
5、try object)存放目录项与文件的链接信息11/2/20229嵌入式嵌入式OS三个不同的进程打开同一个文件三个不同的进程打开同一个文件两个不同的硬链接同一个硬链接11/2/202210嵌入式嵌入式OSVFS所处理的系统调用所处理的系统调用mount、umount:挂载/卸载文件系统sysfs:获取文件系统信息statfs、fstatfs、ustat:获取文件系统统计信息chroot:更改根目录chdir、fchdir、getcwd:操纵当前工作目录mkdir、rmdir:创建/删除目录getdents、readdir、link、unlink、rename:对目录项进行操作readlink
6、、symlink:对符号链接进行操作chown、fchown、lchown:更改文件所有者chmod、fchmod、utime:更改文件属性open、close、create 11/2/202211嵌入式嵌入式OS上述大部分操作之需要与通用文件模型中的一些对象打交道,而不需要真正操作具体的文件系统和文件,因此可以把VFS看成是一个“通用”的文件系统,在必要时依赖某种具体的文件系统11/2/202212嵌入式嵌入式OSVFS的数据结构的数据结构每个VFS对象都对应一定的数据结构,在这个数据结构中包含对象的属性及其方法一个具体的文件系统:超级块对象:super_block所有超级块链表:super
7、_blocks:s_list域文件系统特有信息:s_fs_info域脏标志:s_dirt域文件系统特有方法:super_operations数据结构及域include/linux/fs.h11/2/202213嵌入式嵌入式OS一个具体的文件:Inode对象:inodeInode特有的方法目录项对象:dentry一个打开文件:文件对象:file文件操作指针f_pos文件对象特有的方法专用高速缓存:“filp”,filp_cachep include/linux/fs.hinclude/linux/dcache.hinclude/linux/fs.h11/2/202214嵌入式嵌入式OS11/2/
8、202215嵌入式嵌入式OS11/2/202216嵌入式嵌入式OS与进程相关的文件与进程相关的文件文件系统相关信息fs_struct打开文件相关信息files_structinclude/linux/fs_struct.hinclude/linux/path.h11/2/202217嵌入式嵌入式OSinclude/linux/fdtable.hinclude/linux/fdtable.hinclude/linux/types.hinclude/linux/posix_types.h11/2/202218嵌入式嵌入式OS11/2/202219嵌入式嵌入式OS文件系统类型文件系统类型特殊文件系统
9、用来为系统程序员、系统管理员等提供一种容易的方式来操作内核的数据结构并实现操作系统的特殊特征常用的特殊文件系统11/2/202220嵌入式嵌入式OS11/2/202221嵌入式嵌入式OS文件系统类型的注册文件系统类型的注册文件系统类型:file_system_type在系统初始化期间,register_filesystem()用来注册编译时指定的每个文件系统相应的文件系统对象被插入到file_systems链表中unregister_filesystem()11/2/202222嵌入式嵌入式OS文件系统的挂载文件系统的挂载根文件系统在系统初始化过程中被直接mount提供系统初始化脚本以及基本命
10、令每个文件系统都有自己的根目录如果一个文件系统的根目录是系统目录树的根目录,那个这个文件系统就是根文件系统其他文件系统可以挂载到系统的目录树上这样的目录称为挂载点(mount点,安装点)文件系统之间的挂载关系对应文件系统之间的父子关系11/2/202223嵌入式嵌入式OS例如,放在软盘/dev/fd0上的ext2文件系统,可通过下列命令安装在/flp上mount-t ext2/dev/fd0/flp 一般情况下,只允许挂载一次在umount之前,其他对/dev/fd0的挂载命令会失败在2.4中,可以挂载多次不管被挂载多少次,只有一个真实的文件系统,因此只有一个超级块对象11/2/202224嵌
11、入式嵌入式OS已挂载文件系统描述符vfsmount挂载根文件系统第一阶段:安装一个特殊的文件系统,该文件系统仅提供一个作为初始安装点的空目录:init_mount_tree第二阶段:mount_root挂载一个文件系统sys_mount卸载一个文件系统sys_umount11/2/202225嵌入式嵌入式OS路径名查找路径名查找VFS是如何从文件路径名找到相应的索引节点的?分析路径名,将它拆分成一个文件名序列除了最后一个文件名之外,其他所有文件名必定都是目录名搜索的起点:绝对路径:currentfsroot相对路径:currentfspwd11/2/202226嵌入式嵌入式OS首先找到起点目录
12、的索引节点在这个索引节点的目录文件中,找到第一个目录名(文件名)所对应的索引节点在第一个目录名的索引节点的目录文件中找到第二个目录名(文件名)所对应的索引节点反复,直到文件名序列的最后一项11/2/202227嵌入式嵌入式OS在上述查找过程中要处理的其他问题:对每个目录的访问权限必须进行检查若是符号链接,需要进行扩展要考虑符号链接的循环引用(进行处理)目录名可能是一个文件系统的安装点,必须扩展到一个新的文件系统中路径名查找数据结构:struct nameidata在需要进行路径名查找的时候,依此调用如下函数:path_init,path_walk,path_release11/2/202228
13、嵌入式嵌入式OS查找操作的标志查找操作的标志11/2/202229嵌入式嵌入式OS标准查找操作标准查找操作要处理的问题跳过第一个路径名分量前的任何/考虑符号链接的查找检查权限考虑“.”考虑“.”考虑普通目录,要在目录项高速缓存中查找11/2/202230嵌入式嵌入式OS父路径名的查找父路径名的查找在很多情况下,查找操作的真正目的不是路径名的最后一个分量,而是最后分量的前一个分量例如创建一个文件时此时,路径解析的结果中存放最后一个分量所在目录对应的对象11/2/202231嵌入式嵌入式OS符号链接的查找符号链接的查找关于符号链接的解析由内核来完成如何识别这是一个符号链接?如何处理符号链接的循环情
14、况?11/2/202232嵌入式嵌入式OSVFS系统调用的实现系统调用的实现仍然考虑$cp/floppy/TEST/tmp/test假定cp执行下列代码片段(实际要更复杂)inf=open(/floppy/TEST,O_RDONLY,0);outf=open(/tmp/test,O_WRONLY|O_CREAT|O_TRUNC,0600);do len=read(inf,buf,4096);write(outf,buf,len);while(len);close(outf);close(inf);11/2/202233嵌入式嵌入式OSopen()系统调用sys_openread和write系统
15、调用sys_writesys_readclose系统调用sys_close11/2/202234嵌入式嵌入式OSExt2文件系统简介文件系统简介EXT2文件系统是EXT文件系统的升级,在Linux中得到了广泛的使用。介绍EXT2文件系统的磁盘组织目录项和支持的文件类型11/2/202236Linux OS analysis(一)(一)EXT2文件系统的磁盘组织文件系统的磁盘组织 除了引导扇区之外,EXT2磁盘分区被顺序划分为若干个磁盘块组(磁盘块组(Block Group)。每个块组由若干个磁盘块,按照相同的方式组织,具有相同的大小。EXT2磁盘块组中的磁盘块按顺序被组织成:一个用作超级块超级
16、块的磁盘块。在这个磁盘块里,存放了文件系统超级块的一个拷贝;N个记录组描述符组描述符的磁盘块;1个记录数据块位图数据块位图的磁盘块;1个记录索引结点位图索引结点位图的磁盘块;N个用作索引结点表索引结点表的磁盘块;N个用作数据块数据块的磁盘块。11/2/202237Linux OS analysisEXT2的超级块的超级块每个块组的第一个磁盘块用来保存所在EXT2 fs的超级块多个块组中的超级块形成冗余在某个或少数几个超级块被破坏时,可用于恢复被破坏的超级块信息。11/2/202238Linux OS analysis超级块超级块11/2/202239Linux OS analysis11/2/
17、202240Linux OS analysisLinux 2.4.18中在内存中记录中在内存中记录ext2超级块的数超级块的数据结构据结构11/2/202241Linux OS analysis组描述符组描述符组描述符用来描述一个磁盘块组的相关信息11/2/202242Linux OS analysis索引结点索引结点 EXT2中所有的索引结点大小相同,都是128个字节。11/2/202243Linux OS analysis11/2/202244Linux OS analysis索引节点表索引节点表EXT2的一个磁盘块组中的索引结点存储在一组连续的磁盘块中,形成一个索引结点表。这组磁盘块中的
18、第一个磁盘块的块号存储在超级块的bg_inode_table数据项中。根据磁盘块的大小,可以计算出每个磁盘块能容纳多少个索引结点根据索引结点的总个数,可以计算出索引结点表所需要占用的磁盘块的个数。11/2/202245Linux OS analysis关于索引节点中的关于索引节点中的i_blockext2的索引结点中使用了组合索引方式。前12项用作直接索引第13项用作间接索引第14项用作二次间接索引第15项用作三次间接索引 11/2/202246Linux OS analysis数据块位图和索引结点块位图数据块位图和索引结点块位图EXT2的空闲盘块分配算法采用了位图法位图:为便于查找数据块或索
19、引结点的分配信息每个位(bit)都对应了一个磁盘块:0,表示对应的磁盘块(或索引结点)空闲1,表示占用。2个位图分别占用一个专门的磁盘块。根据磁盘块的大小,可以计算出每个块组中最多能容纳的数据块个数和索引节点块个数。11/2/202247Linux OS analysis(二)(二)EXT2中的目录项和文件类型中的目录项和文件类型 在EXT2中,目录是一种特殊的文件,这种文件的数据块中存放了该目录下的所有目录项 11/2/202248Linux OS analysis新版的目录项结构11/2/202249Linux OS analysisEXT2支持的文件类型支持的文件类型 EXT2在目录项中
20、存放了文件的类型信息。文件类型可以是07中的任意一个整数。它们分别代表如下含义:0:文件类型未知;1:普通文件类型;2:目录;3:字符设备;4:块设备;5:有名管道FIFO;6:套接字;7:符号链接。11/2/202250Linux OS analysis注意:注意:11/2/202251Linux OS analysis(三)创建一个(三)创建一个ext2文件系统文件系统在磁盘上创建文件系统通常有两个步骤:格式化磁盘Linux中:superformat或者fdformat创建文件系统Ext2:mke2fsmke2fs的缺省参数磁盘块大小:1024字节分片:目前不支持,因此与磁盘块一样分配in
21、ode的个数:1/8192B永久保留的块的个数:511/2/202252Linux OS analysis创建流程创建流程1.初始化超级块和组描述符2.Optionally,检查是否有坏块,若有创建坏块列表3.对每个块组,保留所有用来存放超级块、组描述符、inode表、2个位图的磁盘块4.初始化每个块组中的位图5.初始化每个块组中的inode表6.创建/root 目录7.创建 lost+found 目录(供e2fsck 使用,与坏块相关)8.为上述两个目录而更新位图信息9.若有坏块,则将其在 lost+found 目录中组织起来11/2/202253Linux OS analysis以以1.4
22、4MB的软盘为例,创建的软盘为例,创建ext2文件系统后文件系统后11/2/202254Linux OS analysis(四)(四)Ext2提供的各种对象方法提供的各种对象方法超级块对象方法11/2/202255Linux OS analysis索引节点对象方法11/2/202256Linux OS analysis文件对象方法11/2/202257Linux OS analysis(五)管理(五)管理ext2的磁盘空间的磁盘空间存储在磁盘上的文件与用户所“看到”的文件有所不同:用户感觉,文件在逻辑上是连续的而在磁盘上,存储文件数据的磁盘块可能分散在磁盘各处用户感觉,文件可能比较大而在磁盘上
23、,由于文件空洞的存在,分配给文件的磁盘空间可能小于用户感觉到的文件大小。11/2/202258Linux OS analysis涉及到如下操作:创建/删除一个索引节点数据块的寻址文件空洞分配/释放一个数据块11/2/202259Linux OS analysis创建创建/删除一个索引节点删除一个索引节点创建一个磁盘索引节点删除一个索引节点11/2/202260Linux OS analysis关于数据块的寻址关于数据块的寻址任何一个常规文件都会包含一系列数据块文件内块号 vs.逻辑块号根据数据在文件中的偏移可以计算逻辑块号:首先计算出文件内块号(偏移f1)/块大小的商 1 根据索引信息,查询到
24、逻辑块号11/2/202261Linux OS analysis混合索引示意图混合索引示意图11/2/202262Linux OS analysis文件大小限制文件大小限制11/2/202263Linux OS analysis关于文件空洞关于文件空洞A file hole is a portion of a regular file that contains null characters and is not stored in any data block on disk.这是UNIX文件一直以来都有的一个特性例如命令:创建一个大小为102461字节的文件,这个文件有一个102466144个字节大小的空洞。只有最后一个字节存放了字母“X”文件空洞可以节省磁盘空间Ext2通过数据块的动态分配来实现这一点:当且仅当一个进程要写数据到文件中的时候才真正分配当且仅当一个进程要写数据到文件中的时候才真正分配磁盘块磁盘块11/2/202264Linux OS analysis分配分配/释放一个数据块释放一个数据块当一个文件需要新的数据块来存放数据时当一个文件被删除或者被截断时11/2/202265Linux OS analysisThanksThanks!The end.