linux内核文件系统(转载)
1.
概述
根据以前学习内核源码的经验,在学习文件系统实现之前,我大概定了个目标:
1
、
建立一个清晰的全局概念。为将来需要研究代码细节打下坚实基础。
2
、
只研究虚拟文件系统 VFS
的实现,不研究具体文件系统。
为什么选择 Linux 2.4.30
?因为可以参考《Linux
源码情景分析》一书,减少学习难度。
1.1.
基本概念
1、
一块磁盘(块设备),首先要按照某种文件系统(如 NTFS
)格式进行格式化,然后才能在其上进行创建目录、保存文件等操作。
在 Linux
中,有“安装”文件系统和“卸载”文件系统的概念。
一块经过格式化的“块设备”(不管是刚刚格式化完的,没有创建任何名录和文件;还是已经创建了目录和文件),只有先被“安装”,才能融入 Linux
的文件系统中,用户才可以在它上面进行正常的文件操作。
2
、
Linux
把目录或普通文件,统一看成“目录节点”。通常一个“目录节点”具有两个重要属性:名称以及磁盘上实际对应的数据。本文中,“目录节点”有时简称为“节点”
“符号链接”是一种特殊的目录节点,它只有一个名称,没有实际数据。这个名称指向一个实际的目录节点。
3
、
“接口结构”:在 内核代码中,经常可以看到一种结构,其成员全部是函数指针,例如:
struct file_operations {
struct module *owner;
loff_t (*llseek) (struct file *, loff_t, int);
ssize_t (*read) (struct file *, char *, size_t, loff_t *);
ssize_t (*write) (struct file *, const char *, size_t, loff_t *);
int (*readdir) (struct file *, void *, filldir_t);
unsigned int (*poll) (struct file *, struct poll_table_struct *);
int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long);
int (*mmap) (struct file *, struct vm_area_struct *);
int (*open) (struct inode *, struct file *);
int (*flush) (struct file *);
int (*release) (struct inode *, struct file *);
int (*fsync)
相关文档:
public class Test {
public static void main(String aa[]) {
if (System.getProperty("os.name").equals("Linux")) {
System.out.println("linux");
} else if (System.getProperty("os.name").equals("Windows XP")) {
System.out.println("win ......
linux学习指南针(学习方法谈之二)
指南针, linux, 学习
一.为什么要学linux?
当然最重要是爱好和兴趣!如果你这种必要学,或者根本不喜欢,请不要浪费时间,你学也学不好!
二.起步
你应该为自己创造一个学习linux的环境--在电脑上装一个linux或unix
问题1:版本的选择
北美用redhat,欧洲用SuSE,桌面mandrake ......
花了一个周末的时间列出来的。共享出来,希望大家花几分钟看看。这也算是LINUX下比较实用的查找方式了
which(寻找“执行文件”)
[root@localhost home]# which [-a] command
-a : 将所有可找到的命令均列出,而不仅仅列出第一个找到的命令名称
范例:
[root@localhost home]# which passwd
/usr/bin/passwd ......
Linux下关机最要有以下方法,我想这些方法足以满足你的需要:
[root@localhost /]# shutdown [-t秒] [-arkhcncfF] [时间] [提示信息]
[root@localhost /]# shutdown -h 10 'I will shutdown after 10 mins'
-t sec : -t 后加秒数,即‘过几秒钟后关机’的意思。
-k : 不要真的关机,只是发送提示信息。
......
Linux
版本
一览
Linux
是一套免费使用和自由传播的类
Unix
操作系统。我们通常所说的
Linux
,指的是
GNU/Linux
,即采用
Linux
内核的
GNU
操作系统。由于
Linux
是一个内核,它只是操作系统的核心,负责控制硬件、管理文件系统、程序进程等。然而一个完整的操作系统不仅仅是内核 ......