VFS(虚拟文件系统)四大对象:struct super_block 超级块、struct inode 索引节点、struct dentry 目录项、struct file 文件对象
VFS采用的是面向对象的设计思想,使用一簇数据结构来代表通用文件对象。所以内核中的数据结构都使用C结构体实现。
超级块super_block对象
,代表一个具体的已安装文件系统。索引节点inode对象
,代表一个具体文件。目录项dentry对象
,代表一个目录项,是路径的一个组成部分。文件file对象
,代表有进程打开的文件。每个主要对象中都包含一个操作对象,这些操作对象描述了内核针对主要对象可以使用的方法:
super_operations对象
:包含内核针对特定文件系统所能调用的方法。inode_operations对象
:包含内核对特定文件所能调用的方法。dentry_operations对象
:包含内核对特定目录所能调用的方法。file_operations对象
:包含进程针对已打开文件所能调用的方法。操作对象作为一个指针结构体被实现,此结构体中包含指向操作其父对象的函数指针。对于其中许多方法来说,可以继承使用VFS提供的通用函数,如果通用函数提供的基本功能无法满足需要,就必须使用实际文件系统的独有方法填充这些函数指针,使其指向文件系统实例。
Linux 是一个整体式的内核(Monolithic Kernel)结构
,也就是说,整个内核是一个单独的、非常大的程序。
Linux 的整体式结构决定了要给内核增加新的成分也是非常困难,因此Linux 提供了一种全新的机制—可装入模块(Loadable Modules,以下简称模块)
:
模块的特点
:
我们需要知道什么?
什么是模块?为什么要使用模块?
Linux内核也是一个抢占式多任务内核。这意味该内核可以暂停一些任务来保证任何应用都有机会来使用CPU。比如:
如果一个应用正在运行但是正在等待一些数据,内核会把这个应用暂停并允许其他的程序使用新释放的CPU资源,直到数据到来。
否则的话,系统就会浪费资源给那些正在等待数据或者其他程序执行的的任务。
内核将会强制程序去等待或者停止使用CPU。没有内核的允许,应用程序不能脱离暂停或者使用CPU。
Linux设计思想是“一切皆文件”:
设备作为文件显示在/dev文件夹下,如果一个用户想要访问在存储卡上的数据,他们能通过设备文件访问这些数据。
已编译的Linux内核:
在引导文件夹(/boot),用户会看到诸如“vmlinux”或者“vmlinuz”的文件。这两者都是已编译的Linux内核。
以“z”结尾的是已压缩的。“vm”代表虚拟内存。
SPARC处理器的系统上,用户可以看见一个zImage文件。部分用户可以发现一个bzImage文件,这是一个已压缩的Linux内核。
这些引导文件都是不能更改的,除非用户知道他们正在做什么。否则系统会变成无法引导,启动不了。
Linux内核是所有Linux系统的核心。如果有任何恶意代码控制或破害了内核的任何一部分,那么系统会严重受损,文件可能被删除或损坏,私人信息可能被盗等等。
注意事项: 绝不在内核源代码内移动文件,除非你知道你在做什么。否则,编译会由于丢失文件失败。
内核在操作系统目录下的路径一般为:/usr/src/
Update your browser to view this website correctly. Update my browser now