跳至正文

dfd格式怎么转换(dfd格式怎么转换为pdf格式)

如何将dfd格式转化成word

如何将dfd格式转化成word

PDF TO WORD(TXT):

PDF格式编辑软件很多:

1.ABBYY FineReader,最好的Pdf转换成Word的软件,也可以进行OCR识别成WORD格式,识别率高,网上有PJ。

2.汉王HW_PDF_OCR_80可以转换成word或txt,免费软件,也可以进行OCR识别成txt;

3.用Solid Converter PDF Professional 可以在PDF与WORD互相转换,也就可以编辑了;

4.用AdreamSoft_PDF_toWord以转换成WORD,就可以编辑了;

5.汉王Pdf_Converter,免费软件,可以让PDF转换成WORD或TXT;

6.用Foxit PDF Editor可以直接编辑了,网上有PJ的软件;

7.用Foxit Phantom可以直接编辑了,网上有PJ的软件。

8.abobe acrobat Professional 也有部分编辑功能,网上有PJ的软件。

9.AnyBizSoft PDF to Word是一款专业的PDF转Word格式的免费转换软件。

10.小丑鱼PDF转换器,免费软件。

PDF文件如果加密了:对于一些不允许做修改、复制、打印等的PDF文件(就是加密加了权限的PDF),那么就先要去除密码或者去除数字证书,软件有:

1.PDF Password Remover

2.Adult PDF Password Recovery

如果不是图片类做成的PDF 你可以转换成WORD格式后进行编辑, 但是如果是内嵌了字体的,那么就要看情况了,因为有的字体你系统里面有,转出来就没有问题,如果系统里面没有,那么转出来就是一堆乱码;一些用户为了避免别人转换,特意引入了一些特殊字体,复制和转换出来都是乱码。

对于是图片和没有字体(乱码)做成的PDF文件,那么我们就需要用OCR类软件进行识别了,软件有:清华紫光OCR;尚书七号;Leadtools OCR;赛酷OCR;汉王OCR(推荐);ABBYY FineReader(推荐)

我用汉王HW_PDF_OCR_80,可在汉王官方网站 主页右下角有免费的正版下载,下载地址www.hw99.com/

不明白时,在百度Hi中联系。

如何把pdf格式图片改成jpg格式?

如何把pdf格式图片改成jpg格式?

用photoshop软件打开图片,然后点击文件——储存为.在类型中选择JPEG就行了.

如何把Png格式的图片转变成jpg格式?

如何把Png格式的图片转变成jpg格式?

开始—程序—附件—画图—文件—打开(打开你的照片)—图像—文件—另存为—保存类型—选你要的格式—保存.

FreePic2Pdf怎么用

图像转PDF

如果是从图像文件生成新的PDF,鼠标双击FreePic2Pdf.exe启动软件后,按照软件界面上标注的1、2、3、4的顺序执行:

1、选择需要转换的图像文件

在这一步如果选择“转换选定的文件”,则可以一次转换一个目录下的几个文件,或转换多个目录下的文件。点击“选择源文件”按钮后,可以选择文件(按住Ctrl或Shift键点击文件可多选),所选文件排列在列表中,可以通过工具栏提供的按钮进行排序、顺序调整、删除等操作 ,双击文件列表将调用系统缺省图像浏览器显示所选图像。如果“自动清空”选项被选中,每次点击“选择源文件”按钮,都会清除列表中的原有内容,如果需要一次转换多个目录中的文件,需要将这个选项点掉,然后逐次选择文件。每次选择文件后,均按“自动排序”选项指定的排序方法对列表中的文件进行排序,选“无”则不进行自动排序。

如果选择“转换指定文件夹中的文件”,则点击“选择源文件夹”按钮选择文件夹。转换时按照“转换文件”选项对源文件夹中的文件进行筛选,然后按照“文件排序”选项指定的顺序对筛选出来的文件进行排序。

也可以先在资源管理器中选择需要转换的文件或文件夹,然后拖到FreePic2Pdf界面中。如果拖过来的是文件夹,则自动选择“转换指定文件夹中的文件”,否则选择“转换选定的文件”。

2、选择转换出来的PDF文件的存放位置

在这一步如果选择“全部存入一个PDF文件”,则将全部图像文件合并到点击“选择PDF文件”按钮所选的PDF文件。

如果选择“每个图像转换成一个PDF文件,存放到文件夹”,则将转换出来的PDF文件存放到指定文件夹。

如果“使用固定文件/文件夹”选项被选中,则系统会自动记忆上次使用过的PDF文件和文件夹,否则每次点击“选择源文件夹”按钮,都会自动生成PDF文件和文件夹。

3、设置转换参数

纸张大小(纸型、方向、页边距):基本和Word一样:生成的PDF文件每页一图,自动居中、大图自动缩小。比较特殊的是“纸型”如果选“图像大小”,则生成的PDF每一页大小都按照图像大小进行设置(每页一图),如果图像大小不统一,则生成的PDF每一页的大小也不统一;如果选“固定宽度”,则PDF每一页的宽度固定,长度根据图像大小自动伸缩。一般来说,如果生成的PDF面向打印,建议选择一个合适的纸型;如果面向屏幕浏览,建议选择“固定宽度”或“图像大小”。如果“自动放大小图”选项被选中,则当图像 尺寸小于版心尺寸时,自动放大图像以适合版心,否则保持原样。 如果图像本身有大片白底,设置页边距后在PDF文件中可能看不大出来,这时可以在PDF Reader中将缺省背景色设置为灰色,即可清楚看出页边距的范围。

PDF文件初始视图:这个和在Acrobat的“文档属性”中的设置是一样的,指定在打开PDF文件时,如何展现文档页面。

原始图像文件的DPI:在计算图像在PDF中的大小时,先用图像象素尺寸除以该DPI值,转换成英寸数,再将英寸数乘以72转换成PDF中的逻辑尺寸。“当前屏幕DPI”能够保证在PDF文件中看到的图像大小和用其它看图软件看到的图像大小一样,如果手工设置“固定DPI”,则在PDF中看到的图像大小和DPI值成反比,即DPI越大图像越小,缺省的96 DPI是我的17″显示器设置为1024*768时的DPI值。对于扫描产生的TIFF文件,通常在文件中会说明扫描时的DPI值,如果选择“优先使用 图像扫描DPI”,则会自动尝试从图像文件(包括TIFF、BMP、PNG、GIF、JFIF格式的JPG,不包括JP2和J2K)中提取DPI值,代替手工设置的DPI。

黑白TIFF设置为透明:如果选中(缺省为选中),所有黑白图像的背景设置为透明,在PDF Reader中阅读时可以根据需要自行设置背景色(我习惯设为灰色),以免白底黑字看着太累。如果未选中,则背景色为白色。

启用接口文件:如果此选项选中(缺省为选中),则转换时自动读取源文件夹下的接口文件(文件名固定为FreePic2Pdf.itf),从中获取最小图片宽度、多层图像信息 、文本页、书签等。此接口文件通常由Pdg2Pic生成。 如果“前言页面前缀”、“目录页码前缀”为空,则分别用大写英文字母、罗马数字表示封面页、目录页,否则用前缀+数字表示。

除JPEG、JPEG 2000外的图像文件的压缩算法:在将图形文件转换成PDF时,JPEG、JPEG 2000数据流直接嵌入PDF文件,其它图像文件需要重新压缩后再存入PDF。对于黑白图像,可以选择JBig2无损、JBig2有损、CCITT G4。通常JBig2有损压缩的压缩比最大,速度最慢;CCITT G4则压缩比最小,速度最快;JBig2无损介于二者之间。对于彩色/灰度图像,为了不损失质量,全部采用ZIP压缩,但是在压缩前使用TIFF或PNG进行预处理,最终的压缩比可能不同。建议选择缺省的“速度最快”,以加快速度,当然也可以选择“尺寸最小”,让系统自动选择压缩比最大的处理方法,但这要以时间为代价。

友情提示:转换参数对转换出来的PDF文件的阅读效果影响很大,可能需要反复调整、转换几次,才能获得满意的效果。

4、开始转换

开始将源文件转换成PDF文件。转换过程中点“中止”按钮可以中断转换过程。

转换过程中如果出现错误,在转换结束后会报告并询问是否查看错误记录。

如果是将所有源文件合并成一个PDF文件,转换结束后点“打开PDF文件”按钮可以打开该文件,当然前提条件是在您的机器上已经安装了Adobe PDF Reader或Adobe Acrobat Professional。

转换完成后点击窗口右上角的“×”按钮即可退出程序。

更改PDF

一、往PDF挂书签

如果PDF已经存在,都是希望能够对PDF进行修改,包括加书签、页码等,则可以按如下步骤操作:

1、创建一个与PDF文件同名的文件夹,在里面按照接口文件要求创建接口文件、书签文件、需要添加的文本文件。通常这一步是由Pdg2Pic自动完成,现在需要手动,或在Pdg2Pic生成的基础上进行修改。

2、接口准备好以后,运行FreePic2Pdf,点击“更改PDF”按钮,进入“更改PDF”界面。

3、在“更改PDF”界面中,按照界面上标示的1、2、3步骤进行操作即可。

注意:

1、FreePic2Pdf对PDF的修改是“增量更新”(incremental updates),即PDF文件中被更改、替换的内容还存在于PDF文件中,只是失去了作用,因此反复更改几次以后,PDF文件长度会增加。这时用Adobe Acrobat Professional打开PDF,选“Advanced->PDF Optimizer”菜单,对PDF进行优化即可去除无用的信息,减小文件长度。需要注意的是,在Acrobat的“PDF Optimizer”对话框中,务必将“Image Setting”中的所有选项设置为Off,以免图像质量受损。

2、为了避免因为书签项过多而造成软件崩,软件内部对书签数目有限制,最多允许3000个书签项。

二、从PDF取书签

此功能将PDF的书签提取出来,生成符合接口文件规范的接口文件、书签文件。如果想对PDF的书签进行更改,可以先用此功能提取书签,更改后再用上一个功能挂回去。

取书签的操作按界面上标示的1、2、3步骤操作即可。需要注意的是,如果原先的PDF文件不是用本软件生成的,或原PDF文件中没有设置数字页码,可能需要手工设置“基准页”。

如何实现一个文件系统

摘要:本文目的是分析在Linux系统中如何实现新的文件系统。在介绍文件系统具体实现前先介绍文件系统的概念和作用,抽象出了文件系统概念模型。熟悉文件系统的内涵后,我们再近一步讨论Linux系统中和文件系统的特殊风格和具体文件系统在Linux中组成结构,为读者勾画出Linux中文件系统工作的全景图。最后,我们再通过Linux中最简单的Romfs作实例分析实现文件系统的普遍步骤。(我们假定读者已经对Linux文件系统初步了解)

什么是文件系统

首先要谈的概念就是什么是文件系统,它的作用到底是什么。

文件系统的概念虽然许多人都认为是再清晰不过的了,但其实我们往往在谈论中或多或少地夸大或片缩小了它的实际概念(至少我时常混淆),或者说,有时借用了其它概念,有时说的又不够全面。

比如在操作系统中,文件系统这个术语往往既被用来描述磁盘中的物理布局,比如有时我们说磁盘中的“文件系统”是EXT2或说把磁盘格式化成FAT32格式的“文件系统”等——这时所说的“文件系统”是指磁盘数据的物理布局格式;另外,文件系统也被用来描述内核中的逻辑文件结构,比如有时说的“文件系统”的接口或内核支持Ext2等“文件系统”——这时所说的文件系统都是内存中的数据组织结构而并非磁盘物理布局。还有些时候说“文件系统”负责管理用户读写文件——这时所说的“文件系统”往往描述操作系统中的“文件管理系统”,也就是文件子系统。

虽然上面我们列举了混用文件系统的概念的几种情形,但是却也不能说上述说法就是错误的,因为文件系统概念本身就囊括众多概念,几乎可以说在操作系统中自内存管理、系统调度到I/O系统、设备驱动等各个部分都和文件系统联系密切,有些部分和文件系统甚至未必能明确划分——所以不能只知道文件系统是系统中数据的存储结构,一定要全面认识文件系统在操作系统中的角色,才能具备自己开发新文件系统的能力。

为了澄清文件系统的概念,必须先来看看文件系统在操作系统中处于何种角色,分析文件系统概念的内含外延。所以我们先抛开Linux文件系统的实例,而来看看操作系统中文件系统的普遍体系结构,从而增强对文件系统的理论认识。

下面以软件组成的结构图[1]的方式描述文件系统所涉及的内容。

我们针对各层做以简要分析:

首先我们来分析最低层——设备驱动层,该层负责与外设——磁盘等——通讯。基于磁盘的文件系统都需要和存储设备打交道,而系统操作外设离不开驱动程序。所以内核对文件的最后操作行为就是调用设备驱动程序完成从主存(内存)到辅存(磁盘)的数据传输。文件系统相关的多数设备都属于块设备,常见的块设备驱动程序有磁盘驱动,光驱驱动等,之所以称它们为块设备,一个原因是它们读写数据都是成块进行的,但是更重要的原因是它们管理的数据能够被随机访问——不需要向字符设备那样必须顺序访问。

设备驱动层的上一层是物理I/O层,该层主要作为计算机外部环境和系统的接口,负责系统和磁盘交换数据块。它要知道据块在磁盘中存储位置,也要知道文件数据块在内存缓冲中的位置,另外它不需要了解数据或文件的具体结构。可以看到这层最主要的工作是标识别磁盘扇区和内存缓冲块[2]之间的映射关系。

再上层是基础I/O监督层,该层主要负责选择文件 I/O需要的设备,调度磁盘请求等工作,另外分配I/O缓冲和磁盘空间也在该层完成。由于块设备需要随机访问数据,而且对速度响应要求较高,所以操作系统不能向对字符设备那样简单、直接地发送读写请求,而必须对读写请求重新优化排序,以能节省磁盘寻址时间,另外也必须对请求提交采取异步调度(尤其写操作)的方式进行。总而言之,内核对必须管理块设备请求,而这项工作正是由该层负责的。

倒数第二层是逻辑I/O层,该层允许用户和应用程序访问记录。它提供了通用的记录(record)I/O操作,同时还维护基本文件数据。由于为了方便用户操作和管理文件内容,文件内容往往被组织成记录形式,所以操作系统为操作文件记录提供了一个通用逻辑操作层。

和用户最靠近的是访问方法层,该层提供了一个从用户空间到文件系统的标准接口,不同的访问方法反映了不同的文件结构,也反映了不同的访问数据和处理数据方法。这一层我们可以简单地理解为文件系统给用户提供的访问接口——不同的文件格式(如顺序存储格式、索引存储格式、索引顺序存储格式和哈希存储格式等)对应不同的文件访问方法。该层要负责将用户对文件结构的操作转化为对记录的操作。

对比上面的层次图我们再来分析一下数据流的处理过程,加深对文件系统的理解。

假如用户或应用程序操作文件(创建/删除),首先需要通过文件系统给用户空间提供的访问方法层进入文件系统,接着由使用逻辑I/O层对记录进行给定操作,然后记录将被转化为文件块,等待和磁盘交互。这里有两点需要考虑——第一,磁盘管理(包括再磁盘空闲区分配文件和组织空闲区);第二,调度块I/O请求——这些由基础I/O监督层的工作。再下来文件块被物理I/O层传递给磁盘驱动程序,最后磁盘驱动程序真正把数据写入具体的扇区。至此文件操作完毕。

当然上面介绍的层次结构是理想情况下的理论抽象,实际文件系统并非一定要按照上面的层次或结构组织,它们往往简化或合并了某些层的功能(比如Linux文件系统因为所有文件都被看作字节流,所以不存在记录,也就没有必要实现逻辑I/O层,进而也不需要在记录相关的处理)。但是大体上都需要经过类似处理。如果从处理对象上和系统独立性上划分,文件系统体系结构可以被分为两大部分:——文件管理部分和操作系统I/O部分。文件管理系统负责操作内存中文件对象,并按文件的逻辑格式将对文件对象的操作转化成对文件块的操作;而操作系统I/O部分负责内存中的块与物理磁盘中的数据交换。

数据表现形式再文件操作过程中也经历了几种变化:在用户访问文件系统看到的是字节序列,而在字节序列被写入磁盘时看到的是内存中文件块(在缓冲中),在最后将数据写入磁盘扇区时看到的是磁盘数据块[3]。

本文所说的实现文件系统主要针对最开始讲到第二种情况——内核中的逻辑文件结构(但其它相关的文件管理系统和文件系统磁盘存储格式也必须了解),我们用数据处理流图来分析一下逻辑文件系统主要功能和在操作系统中所处的地位。

其中文件系统接口与物理布局管理是逻辑文件系统要负责的主要功能。

文件系统接口为用户提供对文件系统的操作,比如open、close、read、write和访问控制等,同时也负责处理文件的逻辑结构。

物理存储布局管理,如同虚拟内存地址转化为物理内存地址时,必须处理段页结构一样,逻辑文件结构必须转化到物理磁盘中,所以也要处理物理分区和扇区的实际存储位置,分配磁盘空间和内存中的缓冲也要在这里被处理。

所以说要实现文件系统就必须提供上面提到的两种功能,缺一不可。

在了解了文件系统的功能后,我们针对Linux操作系统分析具体文件系统如何工作,进而掌握实现一个文件系统需要的步骤。

Linux 文件系统组成结构

Linux 文件系统的结构除了我们上面所提到的概念结构外,最主要有两个特点,一个是文件系统抽象出了一个通用文件表示层——虚拟文件系统或称做VFS。另外一个重要特点是它的文件系统支持动态安装(或说挂载、登陆等),大多数文件系统都可以作为根文件系统的叶子接点被挂在到根文件目录树下的子目录上。另外Linux系统在文件读写的I/O操作上也采取了一些先进技术和策略。

我们先从虚拟文件系统入手分析linux文件系统的特性,然后介绍有关文件系统的安装、注册和读写等概念。

虚拟文件系统

虚拟文件系统为用户空间程序提供了文件系统接口。系统中所有文件系统不但依赖VFS共存,而且也依靠VFS系统协同工作。通过虚拟文件系统我们可以利用标准的UNIX文件系统调用对不同介质上的不同文件系统进行读写操作[4]。

虚拟文件系统的目的是为了屏蔽各种各样不同文件系统的相异操作形式,使得异构的文件系统可以在统一的形式下,以标准化的方法访问、操作。实现虚拟文件系统利用的主要思想是引入一个通用文件模型——该模型抽象出了文件系统的所有基本操作(该通用模型源于Unix风格的文件系统),比如读、写操作等。同时实际文件系统如果希望利用虚拟文件系统,既被虚拟文件系统支持,也必须将自身的诸如,“打开文件”、“读写文件”等操作行为以及“什么是文件”,“什么是目录”等概念“修饰”成虚拟文件系统所要求的(定义的)形式,这样才能够被虚拟文件系统支持和使用。

我们可以借用面向对象的一些思想来理解虚拟文件系统,虚拟文件系统好比一个抽象类或接口,它定义(但不实现)了文件系统最常见的操作行为。而具体文件系统好比是具体类,它们是特定文件系统的实例。具体文件系统和虚拟文件系统的关系类似具体类继承抽象类或实现接口。而在用户看到或操作的都是抽象类或接口,但实际行为却发生在具体文件系统实例上。至于如何将对虚拟文件系统的操作转化到对具体文件系统的实例,就要通过注册具体文件系统到系统,然后再安装具体文件系统才能实现转化,这点可以想象成面向对象中的多态概念。

我们个实举例来说明具体文件系统如何通过虚拟文件系统协同工作。

例如:假设一个用户输入以下shell命令:

$ cp /hda/test1 /removable/test2

其中 /removable是MS-DOS磁盘的一个安装点,而 /hda 是一个标准的第二扩展文件系统( Ext2)的目录。cp命令不用了解test1或test2的具体文件系统,它所看到和操作的对象是VFS。cp首先要从ext3文件系统读出test1文件,然后写入MS-DOS文件系统中的test2。VFS会将找到ext3文件系统实例的读方法,对test1文件进行读取操作;然后找到MS-DOS(在Linux中称VFAT)文件系统实例的写方法,对test2文件进行写入操作。可以看到 VFS是读写操作的统一界面,只要具体文件系统符合VFS所要求的接口,那么就可以毫无障碍地透明通讯了。

Unix风格的文件系统

虚拟文件系统的通用模型源于Unix风格的文件系统,所谓Unix风格是指Unix传统上文件系统传统上使用了四种和文件系统相关的抽象概念:文件(file)、目录项(dentry)、索引节点(inode)和安装点(mount point)。

文件——在Unix中的文件都被看做是一有序字节串,它们都有一个方便用户或系统识别的名称。另外典型的文件操作有读、写、创建和删除等。

目录项——不要和目录概念搞混淆,在Linux中目录被看作文件。而目录项是文件路径中的一部分。一个文件路径的例子是“/home/wolfman/foo”——根目录是/,目录home,wolfman和文件foo都是目录项。

索引节点——Unix系统将文件的相关信息(如访问控制权限、大小、拥有者、创建时间等等信息),有时被称作文件的元数据(也就是说,数据的数据)被存储在一个单独的数据结构中,该结构被称为索引节点(inode)。

安装点——在Unix中,文件系统被安装在一个特定的安装点上,所有的已安装文件系统都作为根文件系统树中的叶子出现在系统中。

上述概念是Unix文件系统的逻辑数据结构,但相应的Unix文件系统(Ext2等)磁盘布局也实现了部分上述概念,比如文件信息(文件数据元)存储在磁盘块中的索引节点上。当文件被载如内存时,内核需要使用磁盘块中的索引点来装配内存中的索引接点。类似行为还有超级块信息等。

对于非Unix风格文件系统,如FAT或NTFS,要想能被VFS支持,它们的文件系统代码必须提供这些概念的虚拟形式。比如,即使一个文件系统不支持索引节点,它也必须在内存中装配起索引节点结构体——如同本身固有一样。或者,如果一个文件系统将目录看作是一种特殊对象,那么要想使用VFS,必须将目录重新表示为文件形式。通常,这种转换需要在使用现场引入一些特殊处理,使得非Unix文件系统能够兼容Unix文件系统的使用规则和满足VFS的需求。通过这些处理,非Unix文件系统便可以和VFS一同工作了,是性能上多少会受一些影响[5]。这点很重要,我们实现自己文件系统时必须提供(模拟)Unix风格文件系统的抽象概念。

Linux文件系统中使用的对象

Linux文件系统的对象就是指一些数据结构体,之所以称它们是对象,是因为这些数据结构体不但包含了相关属性而且还包含了操作自身结构的函数指针,这种将数据和方法进行封装的思想和面向对象中对象概念一致,所以这里我们就称它们是对象。

Linux文件系统使用大量对象,我们简要分析以下VFS相关的对象,和除此还有和进程相关的一些其它对象。

VFS相关对象

这里我们不展开讨论每个对象,仅仅是为了内容完整性,做作简要说明。

VFS中包含有四个主要的对象类型,它们分别是:

超级块对象,它代表特定的已安装文件系统。

索引节点对象,它代表特定文件。

目录项对象,它代表特定的目录项。

文件对象,它代表和进程打开的文件。

每个主要对象中都包含一个操作对象,这些操作对象描述了内核针对主要对象可以使用的方法。最主要的几种操作对象如下:

super_operations对象,其中包括内核针对特定文件系统所能调用的方法,比如read_inode()和sync_fs()方法等。

inode_operations对象,其中包括内核针对特定文件所能调用的方法,比如create()和link()方法等。

dentry_operations对象,其中包括内核针对特定目录所能调用的方法,比如d_compare()和d_delete()方法等。

file对象,其中包括,进程针对已打开文件所能调用的方法,比如read()和write()方法等。

除了上述的四个主要对象外,VFS还包含了许多对象,比如每个注册文件系统都是由file_system_type对象表示——描述了文件系统及其能力(如比如ext3或XFS);另外每一个安装点也都利用vfsmount对象表示——包含了关于安装点的信息,如位置和安装标志等。

其它VFS对象

系统上的每一进程都有自己的打开文件,根文件系统,当前工作目录,安装点等等。另外还有几个数据结构体将VFS层和文件的进程紧密联系,它们分别是:file_struct 和fs_struct

file_struct结构体由进程描述符中的files项指向。所有包含进程的信息和它的文件描述符都包含在其中。第二个和进程相关的结构体是fs_struct。该结构由进程描述符的fs项指向。它包含文件系统和进程相关的信息。每种结构体的详细信息不在这里说明了。

缓存对象

除了上述一些结构外,为了缩短文件操作响应时间,提高系统性能,Linux系统采用了许多缓存对象,例如目录缓存、页面缓存和缓冲缓存(已经归入了页面缓存),这里我们对缓存做简单介绍。

页高速缓存(cache)是 Linux内核实现的一种主要磁盘缓存。其目的是减少磁盘的I/O操作,具体的讲是通过把磁盘中的数据缓存到物理内存中去,把对磁盘的I/O操作变为对物理内存的I/O操作。页高速缓存是由RAM中的物理页组成的,缓存中每一页都对应着磁盘中的多个块。每当内核开始执行一个页I/O操作时(通常是对普通文件中页大小的块进行磁盘操作),首先会检查需要的数据是否在高速缓存中,如果在,那么内核就直接使用高速缓存中的数据,从而避免了访问磁盘。

但我们知道文件系统只能以每次访问数个块的形式进行操作。内核执行所有磁盘操作都必须根据块进行,一个块包含一个或多个磁盘扇区。为此,内核提供了一个专门结构来管理缓冲buffer_head。缓冲头[6]的目的是描述磁盘扇区和物理缓冲之间的映射关系和做I/O操作的容器。但是缓冲结构并非独立存在,而是被包含在页高速缓存中,而且一个页高速缓存可以包含多个缓冲。我们将在文件后面的文件读写部分看到数据如何被从磁盘扇区读入页高速缓存中的缓冲中的。

文件系统的注册和安装

使用文件系统前必须对文件系统进行注册和安装,下面分别对这两种行为做简要介绍。

文件系统的注册

VFS要想能将自己定义的接口映射到实际文件系统的专用方法上,必须能够让内核识别实际的文件系统,实际文件系统通过将代表自身属性的文件类型对象(file_system_type)注册(通过register_filesystem()函数)到内核,也就是挂到内核中的文件系统类型链表上,来达到使文件系统能被内核识别的目的。反过来内核也正是通过这条链表来跟踪系统所支持的各种文件系统的。

我们简要分析一下注册步骤:

struct file_system_type {

const char *name; /*文件系统的名字*/

int fs_flags; /*文件系统类型标志*/

/*下面的函数用来从磁盘中读取超级块*/

struct super_block * (*read_super) (struct file_system_type *, int,

const char *, void *);

struct file_system_type * next; /*链表中下一个文件系统类型*/

struct list_head fs_supers; /*超级块对象链表*/

};

其中最重要的一项是read_super()函数,它用来从磁盘上读取超级块,并且当文件系统被装载时,在内存中组装超级块对象。要实现一个文件系统首先需要实现的结构体便是file_system_type结构体。

注册文件系统只能保证文件系统能被系统识别,但此刻文件系统尚不能使用,因为它还没有被安装到特定的安装点上。所以在使用文件系统前必须将文件系统安装到安装点上。

文件系统被实际安装时,将在安装点创建一个vfsmount结构体。该结构体用代表文件系统的实例——换句话说,代表一个安装点。

vfsmount结构被定义在中,下面是具体结构 ――――――――――――――――――――――――――――――――――――――― struct vfsmount { struct list_head mnt_hash; /*哈希表*/ struct vfsmount *mnt_parent; /*父文件系统*/ struct dentry *mnt_mountpoint; /*安装点的目录项对象*/ struct dentry *mnt_root; /*该文件系统的根目录项对象*/ struct super_block *mnt_sb; /*该文件系统的超级块*/ struct list_head mnt_mounts; /*子文件系统链表*/ struct list_head mnt_child; /*和父文件系统相关的子文件系统*/ atomic_t mnt_count; /*使用计数*/ int mnt_flags; /*安装标志*/ char *mnt_devname; /*设备文件名字*/ struct list_head mnt_list; /*描述符链表*/ }; ―――――――――――――――――――――――――――――――――――――― 文件系统如果仅仅注册,那么还不能被用户使用。要想使用它还必须将文件系统安装到特定的安装点后才能工作。下面我们接着介绍文件系统的安装[7]过程。 安装过程 用户在用户空间调用mount()命令——指定安装点、安装的设备、安装类型等——安装指定文件系统到指定目录。mount()系统调用在内核中的实现函数为sys_mount(),该函数调用的主要例程是do_mount(),它会取得安装点的目录项对象,然后调用do_add_mount()例程。 do_add_mount()函数主要做的是首先使用do_kern_mount()函数创建一个安装点,再使用graft_tree()将安装点作为叶子与根目录树挂接起来。 整个安装过程中最核心的函数就是do_kern_mount()了,为了创建一个新安装点(vfsmount),该函数需要做一下几件事情: l 1 检查安装设备的权利,只有root权限才有能力执行该操作。 l 2 Get_fs_type()在文件链表中取得相应文件系统类型(注册时被填加到练表中)。 l 3 Alloc_vfsmnt()调用slab分配器为vfsmount结构体分配存储空间,并把它的地址存放在mnt局部变量中。 l 4 初始化mnt->mnt_devname域 l 5 分配新的超级块并初始化它。do_kern_mount( )检查file_system_type描述符中的标志以决定如何进行如下操作:根据文件系统的标志位,选择相应的方法读取超级块(比如对Ext2,romfs这类文件系统调用get_sb_dev();对于这种没有实际设备的虚拟文件系统如 ramfs调用get_sb_nodev())——读取超级块最终要使用文件系统类型中的read_super方法。 安装过程做的最主要工作是创建安装点对象,挂接给定文件系统到根文件系统的指定接点下,然后初始化超级快对象,从而获得文件系统基本信息和相关操作方法(比如读取系统中某个inode的方法)。 总而言之,注册过程是告之内核给定文件系统存在于系统内;而安装是请求内核对给定文件系统进行支持,使文件系统真正可用。 转载

光盘映像文件

光盘映像文件的存储格式和光盘文件系统相同,可以真实反映刻录后的光盘的内容。标准光盘镜像文件的扩展名为(.iso)。你可以将整张光盘或硬盘上的文件制作成光盘镜像文件。制作软件有:WinISO、ActiveISO、CDIMAGE等。将要刻录的内容制作成光盘镜像后再刻录可以大大降低刻坏机率!

下载的映像文件可以用虚拟光驱加载运行

映像文件是将资料和程序结合而成的文件,它将来源资料经过格式转换后

在硬盘上存成与目的光盘内容完全一样的文件,然后我们可以将这个文件以一比

一对应的方式刻入光盘中。在制作映像文件之前建议先做硬盘的资料重整与磁盘

扫描,除此之外,由于一个映像文件的大小相当于刻入光盘的全部内容,所以一

定要预留超过这个容量的硬盘空间来存储这个映像文件。

—- 既然可以用直接方式向光盘写入文件,为什么还要如此麻烦地制作一个映

像文件呢?要知道制作映像文件同样是个耗费时间的过程,这样做是否多此一

举?其实不然,在您正式刻录之前,制作一个映像文件有许多好处。首先,建立

映像文件能提高刻录成功的几率,因为刻录资料的过程包括读取文件、转换格式

和实际写入等阶段,在正式刻录过程中只要一个阶段出现问题都会造成刻录失

败。而制作映像文件则能很好地控制这些过程,增加刻录成功的机会;其次,制

作映像文件最大的好处在于可方便地进行同样资料的大量复制,能节省不少直接

写入方式的重复时间;另外,建立映像文件进行刻录时不会产生许多小容量的文

件,这样在刻录过程中能避免Buffer underrun(缓存不足)的产生。而通过常用

的刻录软件Adaptec Easy CD Creator制作映像文件和利用映像文件刻录光盘的

步骤也非常简单,希望刻录过程更加顺畅的用户不妨在刻录之前尽量多走这一

步。

用户信息预测的基本要求有哪些?

不知道你要的是哪方面的

软件产品设计中需求分析的基本要求

需求分析要对目标系统提出完整的、准确的、清晰的和具体的要求。

1 综合需求

1.1 功能需求

说明:描述软件用来做什么

备注:能够进行度量衡的相互转换,如:长度公制之间的转换,公制和英制的转换等。能够添加或创建新的度量衡。能够按照用户自己的需要进行排序。能够作为其他软件的插件或辅助工具使用。能够知道度量衡所应用的范围,如:国家,行业等。

1.2 性能要求

说明:软件能达到什么性能

备注:数据的最大存储量,数据的转换要有连续性,软件对每项操作的响应时间,更新处理时间,数据转换和传送时间,软件的输入输出数据精度,软件失败和成功的定义。

1.3 运行需求

说明:软件能正常运行在微软中文版WINDOWS系列的可以独立运行的安装包或可执行文件。

备注:开发软件的开发工具清单。是否需要外部存储器和数据通信接口。

1.4 升级要求

说明:是否可以升级,是否可以进行扩充。是否容易进行维护。

备注:能够作为什么软件的插件或辅助工具使用。如何添加新的公式。

1.5 对应关系

说明:用户需求和软件功能的对应关系。

备注:说明每一个模块对应实现什么功能。

2 数据要求

2.1 数据输入

说明:来源、准确性、取值范围、格式、非法值的处理、出错信息

2.2 数据输出

说明:目的地、准确性、数值范围、格式、非法值的处理、出错信息

备注:输出的数据可以修改,如:1米=100厘米=1000毫米,将100厘米改为90厘米时,相应的1米就自动改为0.9米,1000毫米变为900毫米。

2.3 数据存储

说明:最大存储量

2.4 数据的安全性

说明:访问的权限

2.5 数据备份

说明:能否导入和导出

备注:可以将输出的数据保存为文本格式

2.6 数据流图

说明:在分析过程中得出的数据流图

2.7 数据筛选

说明:能够将选择的几个度量单位进行汇总

2.8 主要算法

说明:简要描述软件的主要算法

3界面要求

3.1 软件名称

说明:为软件起一个名字

备注:可以发挥自己的想象力

3.2 功能模块

说明:有几个功能模块,分别是什么

3.3 颜色

说明:采用什么底色,窗口是什么颜色

3.4 字体

说明:字型、大小,字间距,颜色

3.5 按钮

说明:颜色、字型、大小、样式

4软件描述

4.1 功能描述

说明:能实现,不能实现什么需求

备注:应用范围。什么人员可以使用

4.2 性能描述

说明:最低配置,操作系统,需要安装什么辅助软件

4.3 操作步骤

说明:如何使用软件

备注:主要步骤和方法

4.4 用户责任

说明:用户在操作过程中的注意事项

备注:出现问题时如何解决

编辑MTS格式的视频文件,怎么做?

工具:转换软件《超级转换 秀》和《MP4/RM转换专 家》。

操作步骤:

MTS格式转换软件之一:超级转换 秀

一、导入MTS高清视频。我们进入到软件的主界面后,点击下图标签1-“添加待转换视频”按钮将我们录制好的MTS高清视频导入到软件里。

二、选择导出的视频格式。随后,我们进入到“设置待转换的视频参数”界面,在下图蓝色选框处选择自己想要导出的视频格式,如果要将转换好的视频文件上传到网上,建议导出体积小而且画面清晰的FLV格式。

小贴士:对视频文件质量有特殊需要的朋友可以灵活设置视频文件的各项参数,如果没有特殊需要直接选择软件默认的视频参数进行导出也可以获得高质量的视频文件。

三、轻松编辑自己的视频文件。进入到“其它功能设置”界面后,如下图所示,我们可以对我们的视频文件进行简单的编辑操作。除了能够裁剪视频外,还能给视频文件添加上滚动字幕、个性商标、视频相框等等个性标志。还能够灵活地设置个性标志的各项参数,个性视频轻松打造。

四、导出视频文件。编辑好视频文件后,就会返回到《超级转换 秀》的主界面,点击软件的“开始转换”按钮就可以快速地导出你想要的视频文件了。

MTS格式转换软件之二:MP4/RM转换专 家

一、MTS高清视频导入。启动《MP4/RM转换专 家》后,点击下图标签2-“添加待转换视频”按钮就可以将MTS格式的视频文件导入到软件里面了。

二、选择导出的视频格式。随后就会进入到“基本转换参数选择”界面,在下图标签3处的下拉框里面可以选择导出适用于各种移动设备的视频格式。

三、设置导出视频格式的质量参数。如下图所示,可以灵活设置导出的视频文件的质量参数,分辨率、比特率、音频采样率等等参数支持灵活调配,根据自身需要进行设置即可。

四、轻松完成格式转换步骤。返回到软件的主界面后可以充分利用自己的电脑资源进行格式转换,在下图标签4处设置使用软件的多核CPU并发转换技术快速将MTS文件进行格式转换即可!

最后,点击标签5-“开始转换”按钮就可以快速导出自己想要的视频文件了!

如何在 Linux下实现一个文件系统

touch filename 就创建了一个文件名为filename的空文本文件 linux下的默认的文件格式都是纯文本 ,不用考虑后缀的问题

如何使用格式工厂将视频变成镜像版的

将视频转换为vob就可以了 VOB是DVD Video OBject的缩写,意思是DVD视频对象.这是DVD影碟上的关键文件,内含的是电影的实际数据.实际上 VOB文件是一种基本的MPEG-2数据流,就是说它包含了多路复合的MPEG-2视频数据流、音频数据流(通常以AC3格式编码)、以及字幕数据流 如果想转换成ISO格式工厂不支持可以