《Linux内核多语言文件子系统的设计与实现.pdf》由会员分享,可在线阅读,更多相关《Linux内核多语言文件子系统的设计与实现.pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、计算机科学2 0 0 5 V 0 1 3 2 N o-7L i n u x 内核多语言文件子系统的设计与实现芮建武谢谦吴健孙玉芳(中国科学院软件研究所开放系统与中文信息处理中心北京1 0 0 0 8 0)摘要操作系统的多语言支持是网络环境下计算机软件发展的必然结果。由于P O S I X 标准的国际化体系结构对多语言和分布式应用需求的支持有其局限性,导致遵循P o S I X 标准的L i n u x 文件予系统在支持多语言文本时可能造成数据丢失。本文从多语言角度考察了L i n u x 文件子系统,重新构造了一个能够支持U r r i c o d e 编码的逻辑文件系统E X T 2 U,改
2、进了文件予系统,同时提供7 基于U n i c o d e 编码的系统调用接口。通过新文件系统与系统调用接1:2,为操作系统多语言处理提供了更好的基础。关键词文件子系统,多语言化,U n i c o d e,E X T 2 UD e s i g na n dI m p l e m e n t a t i o no fL i n u xF i l eS y s t e mS u p p o r t i n gM u l t i l i n g u a l i s mR U IJ i a n-W uX I EQ i a nW UJ i a nS U NY u F a n g(O p e nS y
3、s t e m C h i n e s eI n f o r m a t i o nP r o c e s s i n gC e n t e r,I n s t i t u t eo fS o f t w a r e,C h i n e s eA c a d e m yo fS c i e n c e s,B e i j i n g1 0 0 0 8 0)A b s t r a c tM u l t i l i n g u a l i z a t i o no fm o d e r no p e r a t i n gs y s t e mi sn e c e s s i t a t e do
4、 nt h eI n t e r n e t S i n c ei n t e r n a t i o n a l i z a t i o na r c h i t e c t u r ec o m p l y i n gt OP O S I Xh a sl e s ss u p p o r tf o rm u h i l i n g u a la n dd i s t r i b u t e da p p l i c a t i o n s,L i n u xf i l es y s t e md i r i v e df r o mP O S I Xm a yl o s ed a t ai
5、 ns t o r i n gs o m em u h i l i n g u a lt e x t B a s e do nL i n u xf i l es y s t e m,an e wF i l eS y s t e mc a l l e dE X T 2 Ui sp r e s e n t e d,w h i c hs u p p o r t sm e t a d a t ae n c o d e db yU T F 一16 M e a n w h i l e,v i r t u a lf i l e s y s t e ms w i t c hi nL i n u xk e r
6、n e li si m p r o v e da n das e to fs y s t e mc a l l su s i n gad a t at y p es p e c i a lt oU T F 一16a r ep r o p o s e d b ym e a n so fE X T 2 Ua n dn e ws y s t e mc a l l s,t h ea b i l i t yt op r o c e s sm u l t i l i n g u a li n f o r m a t i o nc a nb ea c h i e v e de a s i e ri nL i
7、 n u x K e y w o r d sF i l es y s t e m,M u l t i l i n g u a l i z a t i o n,U r f i c o d e,E X T 2 U1 问题的提出1 1 多语言环境现代操作系统应为用户提供一个多语言环境。多语言环境要求:(1)为用户提供多语言用户界面,除用户可以选择自己使用的语言外。2)为开发人员提供多语言编程界面,使用应用程序具有输入与输出多种语言文本的支持。3)提供多语言信息的存储能力。其中,系统对多语言信息的存储是最基础的系统支持,由文件系统来实现。1 2 文件系统与编码方案通常所说的文件系统可能包含以下的方面:
8、(1)已格式化的存储介质,例如硬盘的一个已格式化分区;(2)存储在物理文件系统中的所有信息;(3)特定的文件组织格式,例如E X T 2、F A T 3 2 等文件系统格式,可以把它看作是逻辑文件系统;(4)操作系统中对物理文件系统中的信息进行管理和操作的模块。首先,不同的文件组织格式形成不同的逻辑文件系统,其实现是不相同的。其次,文件系统中存储的信息也与文件子系统的实现有关。我们把存储在物理文件系统上的信息分为两个类别:1)用户实际存放的信息;2)标识某一信息的信息,称为元信息。作为文件系统来说,最关键的是那些标识信息的信息。至于文件系统中文件的内容根据用户的需要存储,因此与文件系统结构本身
9、无特别的关联。元信息对文件系统的组织结构至关重要。例如,如果用户需要把某些信息存储到文件名为“L i n u x系统混合文本示例”的文件中,则文件系统将创建文件结构,把此文件结构的“名称”字段标记为“L i n u x 系统混合文本示例”。当用户需要再次访问此文件时,文件系统会根据路径找到“L i n u x 系统混合文本示例”文件的文件结构。查找过程中使用比较操作:把文件系统中的有关文件结构的“名称”字段信息与字符串“L i n u x 系统混合文本示例”进行比较,如果找到匹配的文件结构记录,则此文件结构所指定的信息就是所要找的内容。可以看出,在进行字符串比较时,文件系统中文件结构的数据与要
10、查找的字符串应该在编码上一致。计算机发展历程出现过许多的编码方案,相互之间未必兼容。这些编码方案包括:英文的A S C I I 编码,欧洲国家的I S O8 8 5 9 系列编码,中国使用基于G B2 3 1 2、G B K、G B1 8 0 3 0等标准的编码,还有H Z、B i 9 5 编码等。鉴于不同字符集编码之间的不兼容现象造成信息处理与共享的极大困难,国际标准化组织制定了I S O I E C1 0 6 4 6 标准口1 与U n i c o d e 联盟制定了U n i c o d e 标准 2 ,以统一的代码点结构收录了世界上大多数语言,二者相互对齐。这使得计算机软件实现多语言支
11、持有了更好的基础。可以看出,如果文件系统同时采用不同的编码方案,将造*)基金项目:国家8 6 3 计划软件重大专项民族语言版本L i n u x 操作系统及办公套件研发(项目编号:2 0 0 3 A A l Z 2 1 1 0)和中国科学院知识创新工程方向性项目基于L i n u x 的跨平台藏文信息处理系统(项目编号:K G C X 2 一S w 一5 0 4)联合资助。芮建武博士研究生。主要研究方向为操作系统与中文信息处理谢谦博士研究生主要研究方向为操作系统中与中文信息处理。吴健副研究员,主要研究方向为系统软件与中文信息处理孙玉芳研究员,博士生导师,主要研究方向为系统软件与中文信息处理。2
12、 3 4 万方数据成文件系统上信息的混乱。当我们使用编码方案A 来表示字符串“L i n u x 系统混合文本示例”时,系统正确地找到了此文件;当使用编码方案B 时,将无法找到此文件。文件系统本身提供的系统接口实际上隐含了这一事实:它使用编码方案A而不是编码方案B。因此,对文件系统来说需要约定:使用某种编码方案来表示文件系统内部的元信息。2目前L i n u x 文件子系统体系结构P O S I X 标准中把一个字符定义为“代表单个图形符号或控制代码的一个或多个字节的序列”,把一个字符串定义为“以值为零的字节(代表N U L L)结尾的一个连续字符序列或仅包含一个值为零的字节的空字符串”。同时
13、,基于P O S I X 标准的具可移植性的编程接口中使用指向字符的指针(c h a r*)作为参数来传递文件名和路径名等文件系统元信息。这样,实际上约定:在表示这些元信息的字符串编码中不应该存在包含值为零的字节,否则,信息将被从值为零的字节处截断。这种约定与广泛使用的I S O I E C2 0 2 2 标准 3 的编码体系一致。这种编码体系以A S C I I 编码为基础,扩充后支持世界上其他大多数语言。基于此编码体系的所有编码方案中,其代表的字符串编码的中间都不会包含值为零的字节。L i n u x操作系统完全遵循P O S I X 标准,在文件子系统提供的接口中,使用字符串类型(c h
14、 a r*)来传递有关文件系统元信息的参数。因此L i n u x 文件系统可支持那些与I S O I E C2 0 2 2 标准相兼容的字符编码方案。采用这样的编码方案有以下的缺点:(1)它们仅覆盖某些字符集,如G B2 3 1 2 等。(2)同时支持多语言时需要进行编码转换。编码之间的转换复杂且系统开销很大。克服这些缺点可使用U n i c o d e 标准所指定的编码形式,它可覆盖世界上所有语言并且通常无需编码转换。L i n u x 操作系统中本地环境(L o c a lE n v i r o n m e n t,简写为L o c a l e)属于国际化与本地化机制的基础部分。用户使用
15、计算机时,总是基于一个本地环境,所有的输入与默认的输出都由L o c a l e 环境所定义的编码字符集为基础,我们称基于L o c a l e定义的字符集所使用的编码为本地编码。然而,用户可能会改变应用程序所使用的本地环境。例如,用户在应用程序A 中使用本地环境为z h C N G B 2 3 1 2(简体中文,G B2 3 1 2 编码方案),他创建了一些文件或目录。用户也可能基于本地环境z h T W B i 9 5(繁体中文,B i 9 5 编码方案)使用应用程序B 进行了一些有关文件的操作。所有这些信息都会在文件系统中保存下来。其结果是:文件系统中既有G B2 3 1 2 编码,又有
16、B i 9 5 编码的信息。事实上,它可以存在任何与I S O I E C2 0 2 2标准一致的编码方案所指定的信息。在这样的情况下,文件系统中存储的信息呈现混乱现象,使用我们难以确认其中信息的具体内容。文件所有者可能会知道这一串数据采用什么编码,代表什么样的内容,但是,如果遗忘了其编码方案,也许就难以正确理解这些信息了。L i n u x 文件子系统分层结构使用了一个抽象层虚拟文件系统切换(V i r t u a lF i l e s y s t e mS w i t c h,V F S)【4 5 J。V F S 屏蔽了所有逻辑文件系统的特殊属性,提供了一个统一的系统接口。用户使用统一的系
17、统接口对文件子系统进行操作。L i n u x 文件子系统把文件分为普通文件、目录文件、符号链接文件、设备文件、管道和套接字(S o c k e t)等,V F S 对不同类型的文件根据其各自特性来实施相应的操作。当用户对文件进行操作时,文件子系统首先根据用户指定的文件位置,确定文件所属的逻辑文件系统;其次建立相应的V F S 对象,把逻辑文件系统对应的函数入口点加入到这些V F S 对象的操作集合中。这些函数入口点实际上对应了相应逻辑文件系统的接口及其驱动程序。这样,用户就可透明地实现对文件系统相应信息的存取。L i n u x 文件子系统支持V F A T、E X T 2 等多种逻辑文件系
18、统。通过对L i n u x 内核文件子系统源码进行分析,我们得出如图1(a)所示的L i n u x 文件子系统结构图。5 系统设计5 1 系统目标通过对L i n u x 内核口 进行分析后可以看出:L i n u x 内核文件子系统处理本地编码的文件系统元数据。这种策略导致文件子系统所存储的信息混乱。因此,支持多语言的文件子系统需要:(1)明确指定文件子系统元数据使用的编码方案,根据前面的分析,使用U n n i c o d e 编码才能无二义地表示用户信息;(2)提供基于相应编码方案的系统调用接口。U n i c o d e 标准 2 定义了如下的标准编码形式:U T F 一8,U T
19、 F 一1 6,u T F 一3 2。这些编码形式各有优缺点:(1)U T F 一8 编码形式。优点:(a)可实现对P O S I X 类应用程序编码接口的兼容;(b)动态扩充U n i c o d e 标准所支持的语言文字;(c)存储A S C I I 字符集的字符时U T F 一8 编码不需要额外的空间。缺点:(a)尽管P O S I X 类编程函数在语法上仍适用于U T F 一8 编码,然而语义上并不相同。这同样会造成信息存储的混乱,因此在某些应用中使用U T F 一8 编码来支持多语言会付出较大代价;(b)与操作系统其他部分兼容经常需要转换编码,影响系统效率;(c)与上层系统库(如G
20、l i b c、Q t、I C U 等)编码方案的不一致性将潜在性地影响系统可扩充性;(d)汉字字符增加5 0 的空间。(2)U T F 一1 6 编码形式。特点:(a)存储A S C I I 字符集的字符时增加了5 0 的空间,但是不增加存储汉字的空间;(b)它属于变长编码方案;(c)它与现存的类P O S I X 操作系统有一定程度的不兼容。(3)U T F 一3 2 编码形式。特点:(a)覆盖所有的I S O I E C1 0 6 4 6 的编码空间,在可扩充性方面没有任何障碍;(b)对每个字符使用4 个字节,导致耗费更多的内存与外存空间。根据P O S I X 可移植性标准,使用u T
21、 F 一16 编码会导致编码接口语法的不兼容问题。如果我们选择U T F 一8 编码,会导致语义不兼容问题。本文经过分析比较后认为:语义的不兼容问题会造成系统维护或可移植性方面的更大代价。因此,在全面考察了目前各种软件系统使用U n i c o d e 编码来支持多语言的现状及对各编码形式进行分析之后,我们选择U T F 一1 6 编码形式。3 2 改进的文件子系统体系结构通过改进现有的文件子系统,可得出支持多语言的文件子系统结构图,如图1(b)所示。图中细线双箭头表示两模块之间交换数据信息时使用本地编码;粗双箭头表示使用U n j c o d e 编码;虚线双箭头表示模块之间存在本地编码与U
22、 n i c o d e 编码之间的编码转换。从图1(b)可以看出,支持多语言的文件子系统包括以下部分:(1)逻辑文件系统E X T 2 U;(2)支持U n i c o d e 编码的虚拟文件系统及基于U n i c o d e 编码的系统调用接口;(3)系统完整性设计,包括对V F A T、E X T 2 及P R O C 逻辑文件系统的支持。2 3 5 万方数据(a)现有系统结构(b)改进后的系统结构图1L i n u x 文件子系统结构图5 5 逻辑文件系统E X T 2 U本文以E X T 2 文件系统为基础,建立一种新的逻辑文件系统E X T 2 U(S e c o n dE x
23、t e n d e dF i l eS y s t e mf o rU n i c o d e)。E X T 2 U 与E X T 2 有不同的操作语义。所谓操作语义表现在两个方面:(1)E X T 2 U 内部的元数据将以U n i c o d e 编码形式存储,而不使用本地编码;(2)E X T 2、E X T 2 U 与虚拟文件系统的接口不同。由于虚拟文件系统内部使用U n i c o d e 编码,因而它与E X T 2、E X T 2 U 之间的接口不一致,并且存在编码转换。除此之外,E X T 2 U 在存储结构上与E X T 2 完全相同。5 4 虚拟文件系统支持多语言的文件子系
24、统内部默认使用U n i c o d e 编码。作为逻辑文件系统的抽象层,虚拟文件系统也基于U n i c o d e编码。它主要实现:(1)提供各种逻辑文件系统的抽象,主要包括目录项结构(s t r u c td e n t r y)、i 结点(i n o d e)、文件结构(s t r u c tf i l e)等。其中用于表示文件系统元数据的数据结构应该使用支持U n i c o d e 编码的数据类型。(2)提供文件子系统的基于U n i c o d e 编码的系统调用(s y s t e mc a l l)。这些系统调用在接口上与原先的系统调用不同,对于文件系统的元数据也应该使用支持
25、U n i c o d e 编码的数据类型。这些系统调用包括:s y s w m k d i r(),s y s w c h d i r(),s y s w r m d i r(),s y s w c r e a t(),s y s w m k n o d(),s y s w g e t c w d(),s y s w o p e n(),s y s w l i n k(),s y s w u n l i n k(),s y s w r e n a m e(),s y s w s y m l i n k(),s y s w r e a d l i n k(),s y s w c h m o d
26、(),s y s w c h o w n l 6(),s y s w l c h o w n(),s y s w l c h o w n l6(),s y s w l c h o w n(),s y s w s t a t(),s y s w l s t a t(),s y s w s t a t f s(),s y s w n e w s t a t(),s y s w n e w l s t a t(),s y s w s t a t 6 4(),s y s w l s t a t 6 4(),s y s w t r u n c a t e(),s y s w t r n c a t e
27、6 4(),s y s w u t i m e(),s y s w u t i m e s(),s y s _ w m o u n t(),s y s-w u m o u n t(),s y s w a c c e s s(),s y s w a c c t(),s y s w u s e l i b(),s y s w s w a p o n(),s y s w s w a p o f f(),s y s w q u o t a c t l(),s y s w c h r o o t(),s y s w p i v o r-r o o t()5 5 系统完整性设计为了与现有系统兼容,新的文件
28、子系统提供两类系统调用接口:(1)新增接口使用基于U n i c o d e 编码的接口参数与语义;(2)原有的接口保持原有参数与语义,以兼容原来的系统。在L i n u x 文件子系统内部,为了使虚拟文件系统与逻辑文件系统E X T 2、V F A T 和E X T 2 U 完整结合在一起,我们需要改进以下部分:1)兼容E X T 2 逻辑文件系统;2)支持V F A T逻辑文件系统;3)基于U n i c o d e 编码的P R O C 文件系统。事实上,兼容原先的E X T 2 逻辑文件系统仅仅是一种临2 3 6 时策略。最终可以完全抛弃E X T 2 逻辑文件系统,直接使用基于U n
29、 i c o d e 编码的E X T 2 U 文件系统。3 5 1编码转换图中虚线双箭头表示模块之间存在本地编码与U n i c o d e 编码之间的编码转换。这通常由L i n u x内核中的本地语言支持(N a t i v eL a n g u a g eS u p p o r t,N L S)子系统来完成。N L S 子系统实现了基于各种代码页(c o d e p a g e)的字符编码与U n i c o d e 编码的相互转换。代码页实际上指定一种字符集及其编码方案,通常支持英语和其他某种语言,因此,不同语言其代码页不同。当指定一个代码页后,某字符申可被明确地编码。L i n u
30、 x 内核在系统初始化时形成一个单向循环链表t a b l e s 来管理它所支持的所有代码页。当系统动态加载代码页模块时,系统将为此代码页分配链表节点,并提供了相应的编码转换函数。这样,通过它们就可以实现基于代码页的各种字符编码与U N I C O D E 编码之间的相互转换。N L S 子系统内部提供的编码转换函数:(1)u n i 2 c h a r()把U n i c o d e 编码字符转换为所属代码页的字符;(2)c h a r 2 u n i()把所属代码页的字符转换为U n i c o d e 编码字符。3 5 2 兼容E X T 2 逻辑文件系统考虑与E X T 2 兼容仅是
31、一个完整性设计方案,实际上如果E X T 2 U 完成后,支持E X T 2 就没有价值了。从图1(b)中可以看出:虚拟文件系统使用U n i c o d e 编码的数据处理后,E X T 2 逻辑文件系统的处理函数语义上与文件子系统不一致,因为所用的编码方式并不相同。使用N L S子系统可以实现二者的相互转换。3 5 3支持V F A T 逻辑文件系统F A T 3 2 F A T l 6 分区格式的文件系统使用U n i c o d e 编码。在原来的L i n u x 内核文件子系统中,V F A T 逻辑文件系统使用N L S 子系统来实现U n i c o d e 编码与本地编码之间
32、的转换。在完成虚拟文件系统的U n i c o d e 编码技术后,无需再进行编码转换,二者自然地结合在一起。3 5 4基于U n i c o d e 编码的P R O C 文件系统L i n u x内核中P R O C 文件系统是一个特殊的文件系统,它并不物理地存在于磁盘上,但在系统初始化时动态地建立起来。使用P R O C 文件系统的目的在于:提供一个除系统调用之外的接口,让用户可以在内核外部读写内核映像和内核中各个数据结构以及堆栈,从而可查看系统运行状况并可修改某些系统配置信息。P R O C 文件系统实际是内核的一部分,用户可通过下述方式使用它:1)与其他文件系统一样,使用系统调用可存
33、取它的信息。2)P R O c 文件系统提供了特殊的函数让外部模块使用它。3)用户使用外部命令直接存取文件,从而修改了内核中的某些数据信息。与E x T z 一样,需要把P R O C 与虚拟文件系统完整统一起来,因此需要修改二者之间的接口。4 系统实现系统实现时,首先建立新的逻辑文件系统E X T 2 U;然后改造虚拟文件系统,实现基于U n i c o d e 编码的系统调用接口;最后完成对E X T 2 和V F A T 逻辑文件系统的支持。4 1E x T 2 U 的建立E X T 2 U 在内部结构和操作算法上与E X T 2 有了改进。相对虚拟文件系统来说,E X T 2 U 写入
34、或读出U n i c o d e 编码的文件系统元数据,而E X T 2 读写基于本地编码的元数据。其中涉及的数据结构和操作主要有(细节描述及用法见文 5,6 3):(下转第2 4 8 页)万方数据报,2 0 0 2,3 2(1):6 1 02 谭顶良学习风格论 M 江苏教育出版社,1 9 9 93 张向葵,关文信学习策略的理论和操作 M ,吉林大学出版社,2 0 0 24S h e nR,W a n gQ AD i s t a n c e L e a r n i n gM o d e lB a s e do nW e bM i n i n g 口 S h a n g h a iJ i a o
35、 t o n gU n i v e r s i t yC o m p u t e rD e p t O fS c i e n c ea n dT e c h n o l o g y5W uF e n g,S h iP e n g f e i C l i e n t T r a n s a c t i o n B e h a v i o rA n a l y s i sU s h a gC o n c e p t u a lC l u s t e r i n g J ,M i c r o c o m p u t e rA p p l i c a t i o n,2 0 0 0(5)(上接第2 3
36、 6 页)s t r u c te x t 2 u d i r e n t r y 一2-u 3 2i n o d e *I n o d en u m b e r|-u l6r e c-l e n;D i r e c t o r ye n t r yl e n g t h-_ u 8n a m e-l e n、|*N a m el e n g t h|-u 8f i l e-t y p e;w c h a r tn a m e E X T 2 U N A M E-L E N 、|F i l en a m e*|;s t a t i cs t r u c ts u p e r o p e r a
37、 t i o n se x t 2 u s o p s fr e a d-i n o d e:e x t 2 u r e a d i n o d e,w r i t e-i n o d e:e x t 2 u-w r i t e-i n o d e,p u t i n o d e:e x t 2 u p u t i n o d e d e l e t e i n o d e:e x t 2 u d e l e t e i n o d e p u t s u p e r:e x t 2 u p u t s u p e r,w r i t e-s u p e r:e x t 2 u-w r i t
38、 e-s u p e r,s t a t f s:e x t 2 u-s t a t f s r e m o u n t-f s:e x t 2 u-r e m o u n t,);s t r u c ti n o d e o p e r a t i o n se x t Z u f i l e i n o d e o p e r a t i o n s 一t r u n c a t e:e x t Z u-t r u n c a t e,);s t r u c ti n o d e o p e r a t i o n se x t 2 u f a s t s y m l i n k i n
39、o d e o p e r a t i o n s=r e a d l i n k:e x t 2 u r e a d l i n k,f o l l o w-l i n k:e x t Z u-f o l l o w-l i n k,);s t r u c tf i l e o p e r a t i o n se x t 2 u f i l e o p e r a t i o n s=l l s e e k:g e n e r i c f i l e l l s e e k,r e a d:g e n e r i c,f i l e r e a d,w r i t e:g e n e r
40、i c f i l e w r i t e,i o c t l:e x t Z u-i o c t l,m r n a p:g e n e r i c f i l e m m a p,o p e n:g e n e r i c f i l e o p e n r e l e a s e:e x t Z u r e l e a 3 e f i l e f s y n c:e x t 2 u s y n c f i l e,):s t r u c tf i l e o p e r a t i o n se x t 2 u d i r o p e r a t i o n s 一r e a d:g e
41、 n e r i c。r e a d d i r,r e a d d i r:e x t 2 u r e a d d i r。i o c t l:e x t 2 u-i o c t l。f s y n c:e x t 2 u s y n c f i l e,);4 2 虚拟文件系统虚拟文件系统应该提供合适的系统调用。在兼容原有系统调用的情况下,V F S 需要提供如3 4 节所列的系统调用。虚拟文件系统支持对U n i c o d e 编码的元数据进行处理,从而文件子系统支持多语言。系统存取文件时,通过逐层解析一个文件的路径名来找到这个文件在磁盘上的索引结点,然后根据此索引结点操作文件。系统在
42、解析路径名的过程中,要使用一个操作:在子目录的所有目录项(包括文件项)中找出适合的项。这是通过字符串比较来完成的。核心中对路径名(包括文件与目录)的表示采用字符数组指针。如前所述,字符数组指针遵循P O S I X 标准关于字符串的定义,因此支持多语言需要使用其他的数据类型。我们使用宽字符类型w c h a Y t来表示U n i c o d e 编码的数据。在虚拟文件系统中,文件系统主要完成从指定文件路径名的字符串到相应文件或目录的搜索过程,其中最主要的是2 4 8 路径名解析算法,具体算法请参见文 4 3。4 5 对E X T 2 和V F A T 的支持对E X T 2 和V F A T
43、 的支持主要是实现其逻辑文件系统各种操作的适当语义,这些操作包括超级块操作(s t r u c ts t l p e r o p e r a t i o n s)、文件i 结点操作(s t r u c ti n o d e o p e r a t i o n s)、文件与目录操作(s t r u c tf i l e o p e r a t i o n s)等。5 测试针对文件子系统的测试主要是正确性测试,测试方法是:(1)使用专门的程序来测试系统调用,并通过直接查看磁盘数据的方法来测试系统调用。(2)通过设计E X T 2 U、E X T 2 和v F A T 使用边界条件来测试文件系统元数
44、据的正确性。测试结果显示L i n u x 内核运行正常,对E X T 2 U 文件系统的相关对象的操作是正确的。结束语目前有些系统使用U T F 一8 来实现对现有系统的兼容和对U n i c o d e 标准的支持仅是一种折衷方案,带来许多潜在的隐患。虽然本文提出的L i n u x 文件子系统与现有的P O S I X 标准不完全兼容,但是,本文认为操作系统对U n i c o d e标准的完全支持是操作系统发展的必然方向,这样的尝试是值得的。多语言文件子系统是实现全球化操作系统的基础。建立L i n u x 多语言文件子系统的意义在于:(1)根本性地解决了文件系统无二义地存储多语言文本
45、的问题;(2)为上层应用提供了一组基于U n i c o d e 编码的系统调用。这样,使用上层系统(包括支持库及应用程序)进行系统开发时,减少了许多不必要的字符集处理的复杂性。对一个全球化操作系统来说,仅文件系统支持多语言是不够的,系统支持库、上层图形库的国际化与本地化机制的改进将是下一步工作的方向。致谢本文在此感谢课题组张立强、倪剑、陈萍等同志的努力与合作。参考文献1I S C l I E C I S O I E C1 0 6 4 6 1:2 0 0 0I n f o r m a t i o nt e c h n o l o g y U n i v e r s a lM u l t i p
46、 l e 一0 c t e tC o d e dC h a r a c t e rS e t(U C S)一P a r t1:A r c h i t e c t u r ea n dB a s kM u h i l i n g u a lP l a n e 2 0 0 02A l i p r a n dJ,e ta 1 T h eU n i c o d eS t a n d a r dV e r s i o n4 0 A d d i s o n W e s l e y,A u g 2 0 0 33E C M A(E u r o p e a nC o m p u t e rM a n u f a
47、 c t u r e r sA s s o e i a t i o n)S t a n d a r dE C M A 一3 5:C h a r a c t e rC o d eS t r u c t u r ea n dE x t e n s i o nT e c h n i q u e s D e c 19 9 44B o v e tDP,C e s a t iM 著,陈莉君,冯锐,牛欣源译深入理解L r N U X 内核中国电力出版社,2 0 0 15 毛德操,胡希明L I N U X 内核源代码情景分析浙江大学出版社,2 0 0 16 陈莉君L I N U X 操作系统内核分析人民邮电出
48、版社,2 0 0 0 万方数据Linux内核多语言文件子系统的设计与实现Linux内核多语言文件子系统的设计与实现作者:芮建武,谢谦,吴健,孙玉芳,RUI Jian-Wu,XIE Qian,WU Jian,SUN Yu-Fang作者单位:中国科学院软件研究所开放系统与中文信息处理中心,北京,100080刊名:计算机科学英文刊名:COMPUTER SCIENCE年,卷(期):2005,32(7)被引用次数:1次 参考文献(6条)参考文献(6条)1.ISO/IEC.ISO/IEC 10646-1:2000 Information technology-Universal Multiple-Octe
49、t Coded CharacterSet(UCS)-Part 1:Architecture and Basic Multilingual Plane 20002.陈莉君 LINUX操作系统内核分析 20003.毛德操;胡希明 LINUX内核源代码情景分析 20014.BOVET D P;Cesati M;陈莉君;冯锐,牛欣源 深入理解LINUX内核 20015.ECMA European Computer Manufacturers Association)19946.Aliprand J The Unicode Standard Version 4.0 2003 引证文献(1条)引证文献(1条)1.蒋衍君 电力监控软件多语言支持期刊论文-电力自动化设备 2008(3)本文链接:http:/