SylixOS 经得起检验的国产操作系统 (六)

       本篇文章介绍“内建文件系统”和“网络通信”。官网:http://www.sylixos.com

内建文件系统

        SylixOS内部提供了多种标准的文件系统,方便用户使用,这些文件系统是SylixOS编译内核时内建的,如果需要更多的文件系统如:NTFS则需要通过内核模块运行时动态加入。

        SylixOS的文件系统实际上就是一组虚拟的设备驱动,它提供两组API接口,对上符合I/O系统虚拟文件系统(VFS)标准,对下要求设备符合块设备标准。文件系统在I/O系统中的结构如下图所示。

SylixOS 经得起检验的国产操作系统 (六)_第1张图片

        SylixOS文件系统使用I/O系统提供的标准VFS进行挂载,然后通过标准I/O操作函数进行访问,换句话说,操作一个普通文件与操作一个设备文件没有什么不同。

        SylixOS目前内建的文件系统包括:

        1.        根文件系统

        2.        PROC文件系统

        3.        FAT文件系统

        4.        YAFFS文件系统

        5.        NFS文件系统

        6.        ROMFS文件系统

       其中ROMFS文件系统是只读文件系统,系统的关键性文件都可以放在此文件系统中确保安全。如果通过mount挂载文件系统则FATNFSYAFFS也都可以挂载成只读文件系统。

        PROC文件系统是保存操作系统信息和进程信息的文件系统,这个文件系统对应的文件实体都在操作系统内核中,是内核反馈出来的运行参数和信息,例如每一个进程的进程号都是一个对应的文件夹,里面存放着进程当前运行的信息,例如:进程对应的可执行文件,进程打开的文件描述符表,进程消耗的内存信息,进程内部的动态链接库信息等等。

        SylixOS内部所有的设备(包括文件系统)都必须挂载到根文件系统上,根文件系统的设备名称非常特殊,为:“/”。所有的设备或者文件绝对路径都是以根符号起始的,也就是说操作系统查询一个设备总是从根文件系统开始的。

        SylixOS还提供了一些方便文件系统使用的组件,它们包括:磁盘分区检查工具,磁盘缓冲器,磁盘自动挂载工具等等。

其中磁盘分区检查工具可以自动的检查一个磁盘的分区情况,并且生成对应分区的逻辑设备,每个逻辑设备都可以进行文件系统挂载。

       磁盘缓冲器是一个特殊的块设备,他可以介于文件系统和磁盘之间,由于磁盘是低速设备,磁盘的读写速度远远低于CPU,所以为了解决这种速度不匹配,SylixOS提供了对应块设备的缓冲器。它可以极大的减少磁盘I/O的访问率,同时提高系统性能。当然引入磁盘缓冲器的原理同CPUCACHE一样,所以它会带来存储器与磁盘中的数据短时间内不一致的现象,这个问题可以通过syncfsync或者fdatasync 函数调用来同步数据。其中sync将阻塞当前线程,然后将系统中需要从缓存中回写的数据全部写入到设备中再返回。fsync表示将指定文件的缓存数据同步到物理磁盘中,fdatasync表示将指定文件的数据部分同步写入物理磁盘。

       磁盘自动挂载工具是将很多磁盘工具封装在一起的一个工具集。设备可以通过热插拔事件将物理磁盘块设备交给磁盘自动挂载工具,这个工具首先会为这个磁盘开辟磁盘缓冲,然后会自动进行磁盘分区检查,最后生成对应每个分区的虚拟块设备,最后这个工具会识别每一个分区的文件系统类型,并装载与之对应的文件系统,这样从用户角度来说,就可以在操作系统目录中看到对应挂载的文件系统目录了。

       带有磁盘缓冲器和分区处理工具的SylixOS块设备结构如下图所示。

SylixOS 经得起检验的国产操作系统 (六)_第2张图片

网络通信

        SylixOS支持BSD标准的socket通信接口,这些接口包括:socketpairsocketacceptbindshutdownconnectgetsocknamegetpeernamesetsockoptgetsockoptlistenrecvrecvfromrecvmsgsendsendtosendmsg等等,同时由于socket也是I/O系统的一部分,所以它支持readwriteioctlselectfcntl等等标准I/O的操作API

        SylixOSsocket支持三类域它们分别是:

        1.        AF_INET       IPv4协议

        2.        AF_INET6     IPv6协议

        3.        AF_UNIX      UNIX域协议(socketpair仅支持AF_UNIX域)

        SylixOS系统网络系统构架如下图所示。

SylixOS 经得起检验的国产操作系统 (六)_第3张图片 

        AF_INETAF_INET6可以用作互联网通信,例如浏览网页,发送电子邮件,传输文件,网络可视电话等等。

       在AF_INETAF_INET6下支持的socket类型有:SOCK_STREAMSOCK_DGRAMSOCK_RAW,他们分别称作:流式套接字,用户数据报套接字和原始套接字。其中流式套接字使用TCP协议进行通信,它提供面向连接的,可靠的全双工管道通信。用户数据报套接字使用UDP协议进行通信,它提供非连接的,不可靠的通信。原始套接字可以让用户自行操作一些更加底层的通信,例如ICMP数据包等。

        AF_UNIX可以用作本机进程间双向管道通信,例如在POSIX系统中大多数支持多进程的图形系统,进程间都是使用AF_UNIX进行双向管道通信。最为著名的是X windows(X11X)系统,这个系统使用非常广泛。在它之上运行着很多大型的图形界面,例如:GTK+。同样在嵌入式系统里面QtQWS也是借助AF_UNIX实现多进程间通信的。

 

(本篇结束)

你可能感兴趣的:(SylixOS)