虚拟文件系统 内核在它的底层文件系统系统接口上建立一个抽象层,该抽象层使Linux可以支持各种文件系统,即便他们在功能和行为上存在很大差异. VFS抽象层定义了各个文件系统都支持的基本的.概念上的接口和结构数据. VFS对象及其数据结构 VFS中有四个主要的对象类型: 超级块:表示一个具体的已安装文件系统,包含文件的控制信息等内容. 索引点对象:代表一个具体的文件,包含文件的相关信息,比如文件大小.拥有者.创建时间等. 目录项对象:代表一个目录项,是路径的组成部分 文件对象:代表进程已经打开的文…
虚拟文件系统(VFS)是linux内核和具体I/O设备之间的封装的一层共通访问接口,通过这层接口,linux内核可以以同一的方式访问各种I/O设备. 虚拟文件系统本身是linux内核的一部分,是纯软件的东西,并不需要任何硬件的支持. 1. 虚拟文件系统的作用 虚拟文件系统(VFS)是linux内核和存储设备之间的抽象层,主要有以下好处. - 简化了应用程序的开发:应用通过统一的系统调用访问各种存储介质 - 简化了新文件系统加入内核的过程:新文件系统只要实现VFS的各个接口即可,不需要修改内核部分…
虚拟文件系统 虚拟文件系统:内核子系统VFS,VFS是内核中文件系统的抽象层,为用户空间提供文件系统相关接口: 通过虚拟文件系统,程序可以利用标准Linux文件系统调用在不同的文件系统中进行交互和操作. VFS作为抽象层: 文件系统被安装在一个特定的安装点上,该安装点在全局层次结构中被称作命名空间, 所有的已安装文件系统都作为根文件系统树的枝叶出现在系统中. 文件系统主要的对象: 超级块对象:代表一个已安装文件系统:struct super_block {} 索引节点对象:代表一个文件:stru…
VFS的任务并不简单.一方面,它用来提供了一种操作文件.目录及其他对象的统一方法.另一方面,它必须能够与各种方法给出的具体文件系统的实现达成妥协,这些实现在具体细节.总体设计方面都有一些不同之处. 文件系统类型 基于磁盘的文件系统 虚拟文件系统 网络文件系统 通用文件模型 在处理文件时,内核空间和用户空间使用的主要对象是不同的.对用户程序来说,一个文件由一个文件描述符标识.内核处理文件的关键是inode. inode 目录只是一个特殊的文件. inode的成员可能分为下面两类. 描述文件状态的元…
先来看一下写文件函数write的运行过程: ret = write(fd, buf, len); write适用于各种文件系统.它首先运行sys_write(),而正是这个sys_write()进行实际文件系统类型的判别并运行该类型文件系统下的写操作. 我们能够看出在多种多样的文件系统上抽象出了一个通用接口性质的虚拟文件系统. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQmx1ZUNsb3VkTWF0cml4/font/5a6L5L2T/fonts…
(1)Linux层次结构: (2)Linux内核组成: 主要由进程调度(SCHED).内存管理(MM).虚拟文件系统(VFS).网络接口(NET)和进程间通信(IPC)等5个子系统组成. (3)与Unix的差异: Linux支持动态载入内核模块 支持对称多处理(SMP)机制 Linux内核能够抢占 Linux内核并不区分线程和其它的一般进程 Linux提供具有设备类的面向对象的设备模型.热插拔事件,以及用户空间的设备文件系统(sysfs) (4)内核开发的特点: 内核编程时既不能訪问C库也不能訪…
http://www.cppblog.com/qinqing1984/archive/2015/05/03/210521.html 引言   在Unix的世界里,万物皆文件,通过虚拟文件系统VFS,程序可以用标准的Unix系统调用对不同的文件系统,甚至不同介质上的文件系统进行读写操作.对于网络套接字socket也是如此,除了专属的Berkeley Sockets API,还支持一些标准的文件IO系统调用如read(v).write(v)和close等.那么为什么socket也支持文件IO系统调用…
一 用户空间和内核空间 Linux内核将这4G字节虚拟地址空间的空间分为两部分: l  将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为“内核空间”. l  将较低的3G字节(从虚拟地址 0x00000000到0xBFFFFFFF),供各个进程使用,称为“用户空间). 因为每个进程可以通过系统调用进入内核,因此Linux内核由系统内的所有进程共享.于是从具体进程的角度来看, 每个进程可以拥有4G字节的虚拟空间.如此划分提供对系统内核安全保护机制. 二 系…
linux内核最小系统,使用内核版本:https://www.kernel.org/pub/linux/kernel/v3.0/linux-3.8.1.tar.bz2 1,FL2440板子的基本硬件:晶振12MHZ CPU 型号为S3C2440,基于ARM920T,指令集ARMV4,时钟主频400MHz SDRAM H57V2562GTR-75C 2片*32MB=64MB,挂载于nGCS6 (0x3000 0000) NANDFLASH 型号:K9F2G08U0B  大小:256MB Netwo…
我感觉学习操作系统首先要从内存分配和管理入手. 首先我们应该知道现代操作系统是以页为单位进行内存管理的,32位体系结构支持4KB的页.而64位体系结构支持8KB的页.页是用来分配的.怎样才干进行高效和充分的利用.这是内存管理单元(MMU)应当细致考虑的. 页分配 内核用结构体struct page表示每一个物理页.内核用这一结构来管理系统中全部的页,由于内核须要知道一个页是否空暇(也就是页有没有被分配).假设页已经被分配,内核须要知道谁拥有这个页,拥有者可能是用户空间进程.动态分配的内核数据.静…