应用程序和VFS之间的接口是系统调用

应用程序和VFS之间的接口是系统调用,而VFS与磁盘文件系统以及普通设备之间的接口是file_operatioons结构体成员函数,这个结构体包含对文件进行打开、关闭、读写、控制等一系列成员函数。由于字符设备的上层没有磁盘文件系统,所以字符设备的file_operations成员函数就直接由设备驱动提供了,因此file_operaion也是字符设备驱动的核心。而对于块设备而言,ext2、fat、jffs2等文件系统中会实现针对VFS的file_operations成员函数,设备驱动将看不到file_operation的存在。

file结构体代表一个打开的文件,系统中每个打卡的文件在内核空间都有一个关联的struct file。它由内核在打开文件时创建,并传递给在文件上进行操作的任何函数。在文件的所有实例都关闭后,内核释放这个数据结构。
innode 结构体用来记录文件的访问权限。属主、大小、生成时间、修改时间等物理信息,它是linux管理文件系统的最基本单位。一个文件可以对应多个file,但只对应一个innode 。<file 在文件打开时创建,innode 在文件被创建时创建 。文件可被多次打开,但只能创建一次> 对于每一个存储设备或分区,在被格式化为文件系统后,都应包含两部分,innode 和 block 。其中,innode 用以存储文件信息,而block 用以存储数据。操作系统能够根据 innode 快速找到文件。

主设备号是与驱动对应的概念,同一类设备一般使用相同的主设备号。因为同一驱动可支持多个同类设备,因此用次设备号来描述使用该驱动的设备的序号,序号一般从0开始。

static struct char_device_struct {
 struct char_device_struct *next;  // 同一主设备号下可能有多个次设备,且其可能并不是一次添加的,此时就用到了next域。否则
此域就是NULL 例如主设备号为10:{1-5}~{6-7}~{9-11}。顺序一定是小的次设备号在前
 unsigned int major; //主设备号
 unsigned int baseminor; //最小次设备号,本链表节点
 int minorct; //设备个数 ,本链表节点
 char name[64]; //设备名 ,本链表接点
 struct cdev *cdev; /* will die */
} *chrdevs[CHRDEV_MAJOR_HASH_SIZE];
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
教学内容与要求   1掌握处理器在进程地址空间上的三种运行位置,了解内核编程不能使用C库函数和FPU,以及可能产生内存故障、核心栈溢出和四种内核竞争情形的原因。(2学时)   2熟悉进程描述符的组织,进程上下文和进程状态转换,和fork,exec,wait,exit,clone,linux线程和内核线程的实现原理和应用。了解COW和避免出现孤儿进程技术。(4小时)   3介绍支持SMP的O(1)调度,用户和内核抢占和进程上下文切换,了解优先级复算,睡眠和唤醒机制,SMP的负载均衡。(4小时)   4掌握在x86体系结构上系统调用的具体实现原理,接口参数传递,用户地址空间和核心地址空间之间的数据传输,和增加新的系统功能的方法。(2小时)   5熟悉在x86体系结构上Linux中断和异常的处理原理,中断注册、共享、控制,和中断上下文的意义,中断和设备驱动程序的关系,以及设备驱动程序结构和用户接口。(4小时)   6中断处理程序被分解为top half和bottom half的原因,介绍linux的softirq,tasklet,ksoftirqd和work queue,分析进程与top half,bottom half的竞争情形和同步。(4小时)   7掌握内核同步原理和方法:原子操作,自旋锁,(读—写)信号量,完成变量,bkl,seqlock和延迟内核抢占。了解指令“路障”。(4小时)   8介绍系统时钟和硬件定时器,单处理器和多处理器上的linux计时体系结构,定时的时间插补原理,单处理器和多处理器上的时钟中断处理,动态定时器的数据结构和算法原理,定时器竞争情形,延迟函数。Time,gettimeofday,adjtimex,setitimer,alarm的实现原理和应用。(4小时)   9熟悉进程地址空间的区和页,分配和释放物理页,物理地址与逻辑地址、虚地址之间的映射,slub分配原理和方法,高端物理内存的映射。(4小时)   10介绍VFS原理,超级块,inode结构和方法,dentry结构和方法,file结构和方法,以及进程打开文件表,linux中的文件系统。(2小时)   11讲解块设备缓冲,bio结构,I/O请求队列,和有最终期限的块I/O调度算法。(2小时)   12熟悉进程地址空间的分区,mm_struct结构,vm_area_struct结构和操作,,进程的页表文件映射接口mmap原理和方法。(2小时)   13熟悉页cache和radix_tree,缓冲区cache,和pdflush内核线程原理。(2小时)
目 录 第1 章 简介(1) 1.1 简介 1.1.1 简史 1.1.2 创始之初 1.1.3 繁衍 1.1.4 BSD 1.1.5 System V 1.1.6 商业化 1.1.7 Mach 1.1.8 标准 1.1.9 OSF 和UI 1.1.10 SVR4 及其之后 1.2 演变的动力 1.2.1 功能 1.2.2 网络 1.2.3 性能 1.2.4 硬件变化 1.2.5 改进质量 1.2.6 模式变化 1.2.7 其他应用领域 1.2.8 简洁就是美 1.2.9 灵活性 1.3 回顾与展望 1.3.1 UNIX 好在哪里 1.3.2 UNIX 的误区在哪儿 1.4 本书的范围 1.5 参考文献 第2 章 进程与内核(17) 2.1 简介 2.2 模式.空间和上下文 2.3 进程抽象 2.3.1 进程状态 2.3.2 进程上下文 2.3.3 用户凭证 2.3.4 u 区和proc 结构 2.4 内核态下运行 2.4.1 系统调用接口 2.4.2 中断处理 2.5 同步 2.5.1 阻塞操作 2.5.2 中断 2.5.3 多处理器 2.6 进程调度 2.7 信号 2.8 新进程和程序 2.8.1 fork 和exec 2.8.2 进程创建 2.8.3 fork 优化 2.8.4 执行一个新程序 2.8.5 进程终止 2.8.6 等待进程终止 2.8.7 僵尸(Zombie)进程 2.9 小结 2.10 练习 2.11 参考文献 第3 章 线程和轻量级进程(41) 3.1 简介 3.1.1 动机 3.1.2 多线程和多处理器 3.1.3 并发和并行 3.2 基本抽象概念 3.2.1 内核线程 3.2.2 轻量级进程 3.2.3 用户线程 3.3 轻量级进程设计——要考虑的问题 3.3.1 fork 的语义 3.3.2 其他的系统调用 3.3.3 信号传递和处理 3.3.4 可视性 3.3.5 堆栈增长 3.4 用户级线程库 3.4.1 编程接口 3.4.2 线程库的实现 3.5 调度器调用 3.6 Solaris 和 SVR4 的多线程处理 3.6.1 内核线程 3.6.2 轻量级进程的实现 3.6.3 用户线程 3.6.4 用户线程的实现 3.6.5 中断处理 3.6.6 系统调用处理 3.7 Mach 中的线程 3.7.1 Mach 的抽象概念——任务和线程 3.7.2 Mach 的C-threads 3.8 Digital UNIX 3.8.1 UNIX 接口 3.8.2 系统调用和信号 3.8.3 pthreads 线程库 3.9 Mach 3.0 的续体 3.9.1 编程模型 3.9.2 使用续体 3.9.3 优化 3.9.4 分析 3.10 小结 3.11 练习 3.12 参考文献 第4 章 信号和会话管理(72) 4.1 简介 4.2 信号生成和处理 4.2.1 信号处理 4.2.2 信号生成 4.2.3 典型情景 4.2.4 睡眠和信号 4·3 不可靠信号 4.4 可靠的信号 4.4.1 主要特性 4.4.2 SVR3 的实现 4.4.3 BSD 信号管理 4.5 SVR4 信号机制 4.6 信号机制的实现 4.6.1 信号生成 4.6.2 信号传递和处理 4.7 异常 4.8 Mach 中的异常处理 4.8.1 异常端口 4.8.2 错误处理 4.8.3 调试器的交互 4.8.4 分析 4.9 进程组和终端管理 4.9.1 基本概念 4.9.2 SVR3 模型 4.9.3 局限性 4.9.4 4.3BSD 中的进程组和终端 4.9.5 缺点 4.10 SVR4 会话的体系结构 4.10.1 目的(动机) 4.10.2 会话和进程组 4.10.3 数据结构 4.10.4 控制终端 4.10.5 4.4BSD 中会话的实现 4.11 小结 4.12 练习 4.13 参考文献 第5 章 进程调度(98) 5.1 简介 5.2 时钟中断处理 5.2.1 调出链表 5.2.2 报警 5.3 调度器的目标 5.4 传统的UNIX 调度 5.4.1 进程优先级 5.4.2 调度器的实现 5.4.3 运行队列管理 5.4.4 分析 5.5 SVR4 的调度器 5.5.1 类无关层 5.5.2 调度类的接口 5.5.3 分时类 5.5.4 实时类 5.5.5 系统调用priocntl 5.5.6 分析 5.6 Solaris2.x 调度的改善 5.6.1 抢占式内核 5.6.2 多处理器的支持 5.6.3 隐式调度 5.6.4 优先级逆转 5.6.5 优先级继承的实现 5.6.6 优先继承的局限性 5.6.7 Turnstiles 5.6.8 分析 5.7 mach 中的调度 5.7.1 多处理器的支持 5.8 Digital UNIX 的实时调度器 5.8.1 多处理器支持 5.9 其他的一些调度实现 5.9.1 fair share 调度 5.9.2 最终期限驱动调度 5.9.3 三级(Three-Level)调度器 5.10 小结 5.11 练习 5.12 参考文献 第6 章 进程间通信(130) 6.1 简介 6.2 通用IPC 方法 6.2.1 信号 6.2.2 管道 6.2.3 SVR4 的管道 6.2.4 进程跟踪 6.3 System V 的进程间通信 6.3.1 公共元素 6.3.2 信号量 6.3.3 消息队列 6.3.4 共享内存 6.3.5 讨论 6.4 Mach IPC 6.4.1 基本概念 6.5 消息 6.5.1 消息的数据结构 6.5.2 消息传递接口 6.6 端口 6.6.1 端口名字空间 6.6.2 端口数据结构 6.6.3 端口变换 6.7 消息传递 6.7.1 端口权力的传递 6.7.2 脱机内存 6.7.3 控制流 6.7.4 通知 6.8 端口操作 6.8.1 释放一个端口 6.8.2 备份端口 6.8.3 端口集合 6.8.4 端口的添加 6.9 扩展性 6.10 Mach 3.0 的改进 6.10.1 一次发送权 6.10.2 Mach 3.0 的通知 6.10.3 发送权的用户引用记数 6.11 讨论 6.12 小结 6.13 练习 6.14 参考文献 第7 章 同步和多处理器(164) 7.1 简介 7.2 传统UNIX 内核中的同步 7.2.1 中断屏蔽 7.2.2 睡眠和唤醒 7.2.3 传统方法的局限性 7.3 多处理器系统 7.3.1 内存模型 7.3.2 同步支持 7.3.3 软件体系结构 7.4 多处理器同步问题 7.4.1 唤醒丢失问题 7.4.2 巨群问题 7.5 信号灯 7.5.1 提供互斥访问的信号灯 7.5.2 使用的信号灯的事件等待 7.5.3 用于控制可计数资源的信号灯 7.5.4 信号灯的缺点 7.5.5 护卫 7.6 自旋锁 7.6.1 自旋锁的使用 7.7 条件变量 7.7.1 实现问题 7.7.2 事件 7.7.3 阻塞锁 7.8 读写锁 7.8.1 设计考虑 7.8.2 实现 7.9 引用计数 7.10 其他考虑 7.10.1 死锁避免 7.10.2 递归锁 7.10.3 阻塞还是自旋 7.10.4 锁什么 7.10.5 粒度和持续时间 7.11 例子分析 7.11.1 SVR 4.2/MP 7.11.2 Digital UNIX 7.11.3 其他实现 7.12 小结 7.13 练习 7.14 参考文献 第8 章 文件系统接口和框架(191) 8.1 简介 8.2 文件的用户接口 8.2.1 文件和目录 8.2.2 文件属性 8.2.3 文件描述符 8.2.4 文件1/O 8.2.5 分散-聚集I/O(Scatter-Garther I/O) 8.2.6 文件加锁 8.3 文件系统 8.3.1 逻辑磁盘 8.4 特殊文件 8.4.1 符号链接 8.4.2 管道和FIFO 8.5 文件系统框架 8.6 vnode/vfs 体系结构 8.6.1 目标 8.6.2 设备 1 门的经验 8.6.3 vnode/vfs 接口概述 8.7 实现概述 8.7.1 目标 8.7.2 v 节点和打开文件 8.7.3 v 节点 8.7.4 v 节点引用计数 8.7.5 vfs 对象 8.8 文件系统相关对象 8.8.1 每个文件的私有数据 8.8.2 vnodeops 向量 8.8.3 vfs 层中的文件系统相关部分 8.9 安装一个文件系统 8.9.1 虚拟文件系统转换 8.9.2 mount 的实现 8.9.3 VFS-MOUNT 处理 8.10 对文件的操作 8.10.1 路径名遍历 8.10.2 目录查找缓存 8.10.3 VOP_LOOKUP 操作 8.10.4 打开文件 8.10.5 文件I/O 8.10.6 文件属性 8.10.7 用户凭证 8.11 分析 8.11.1 SVR4 实现的缺点 8.11.2 4.4BSD 模型 8.11.3 OSF/1 方法 8.12 小结 8.13 练习 8.14 参考文献 第9 章 文件系统实现(227) 9.1 简介 9.2 System V 文件系统(s5fs) 9.2.1 目录 9.2.2 i 节点 9.2.3 超级块 9.3 s5fs 内核组织 9.3.1 内存i 节点 9.3.2 i 节点查找 9.3.3 文件I/O 9.3.4 i 节点的分配与回收 9.4 对s5fs 的分析 9.5 伯克利快速文件系统(FFS) 9.6 硬盘结构 9.7 磁盘组织 9.7.1 块和碎片 9.7.2 分配策略 9.8 FFS 的增强功能 9.9 分析 9.10 临时文件系统 9.10.1 内存文件系统 9.10.2 tmpfs 文件系统 9.11 特殊目的文件系统 9.11.1 specfs 文件系统 9.11.2 /proc 文件系统 9.11.3 处理器文件系统 9.11.4 半透明文件系统 9.12 以往的磁盘缓存 9.12.1 基本操作 9.12.2 缓冲区头结构 9.12.3 优点 9.12.4 缺点 9.12.5 保证文件系统的一致性 9.13 小结 9.14 练习 9.15 参考文献 第10 章 分布式文件系统(255) 10.1 简介 1O.2 分布式文件系统的一般特征 10.2.1 设计考虑 10.3 网络文件系统(NFS) 10.3.1 用户透视 10.3.2 设计日标 10.3.3 NFS 组成 10.3.4 无状态 10.4 协议族 10.4.1 扩展数据表示(XDR) 10.4.2 远程过程调用(RPC) 10.5 NFS 实现 10.5.1 控制流 10.5.2 文件句柄 l0.5.3 mount 操作 10.5.4 路径名查找 10.6 UNIX 语义 10.6.1 打开文件权限 10.6.2 删除打开文件 l0.6.3 读和写 10.7 NFS 性能 10.7.1 性能瓶颈 10.7.2 客户端高速缓存 10.7.3 延迟写 10.7.4 重传高速缓存 10.8 专用NFS 服务器 10.8.1 Auspex 功能性多处理器结构 10.8.2 IBM 的HA-NFS 服务器 10.9 NFS 安全性 10.9.1 NFS 访问控制 10.9.2 UID 重新映射 10.9.3 root 重新映射 10.10 NFSv3 10.11 远程文件共亨(RFS)文件系统 10.12 RFS 结构 10.12.1 远程消息协议 10.12.2 有状态操作 10.13 RFS 实现 10.13.1 远程安装 10.13.2 RFS 客户和服务器 10.13.3 崩溃恢复 10.13.4 其他问题 10.14 客户端高速缓存 10.14.1 高速缓存一致性 10.15 Andrew 文件系统 10.15.1 可扩展的结构 10.15.2 存储和名字空间组织 10.15.3 会话语义 10.16 AFS 实现 10.16.1 缓存以及一致性 10.16.2 路径名查找 10.16.3 安全 10.17 AFS 的缺陷 10.18 DCE 分布式文件系统(DCE DFS) 10.18.1 DFS 体系结构 10.18.2 高速缓冲区一致性 10.18.3 令牌管理器 10.18.4 其他DFS 服务 10.18.5 分析 10.19 小结 10.20 练习 10.21 参考文献 第11 章 高级文件系统(298) 11.1 简介 11.2 传统文件系统的局限 11.2.1 FFS 磁盘布局 11.2.2 写的主导性 11.2.3 元数据更新 11.2.4 崩溃恢复 11.3 文件系统成簇(Sun-FFS) 11.4 日志方法 11.4.1 基本特征 11.5 日志结构文件系统 11.6 4.4BSD 日志文件系统 11.6.1 写日志 11.6.2 数据检索 11.6.3 崩溃恢复 11.6.4 清除进程 11.6.5 分析 11.7 元数据日志 11.7.1 正常操作 11.7.2 日志的一致 11.7.3 崩溃恢复 11.7.4 分析 11.8 Episode 文件系统 11.8.1 基本抽象 11.8.2 结构 11.8.3 记日志 11.8.4 其他特性 11.9 监视器(watchdog) 11.9.1 目录监视器 11.9.2 消息通道 11.9.3 应用 11.10 4.4BSD 端口文件系统 11.10.1 使用端曰(portals) 11.11 堆栈式文件系统层 11.11.1 框架和接口 11.11.2 Sun Soft 原型 11.12 4.4BSD 文件系统接口 11.12.1 Nullfs 和Union Mount 文件系统 11.13 小结 11.14 练习 11.15 参考文献 第12 章 内核内存管理(328) 12.1 简介 12.2 功能需求 12.2.1 评估标准 12.3 资源映射图分配器 12.3.1 分析 12.4 简单2 次幂空闲表 12.4.1 分析 12.5 McKusick-Karels 分配器 12.5.1 分析 12.6 伙伴系统 12.6.1 分析 12.7 SVR4 Lazy 伙伴算法 12.7.1 Lazy 合并 12.7.2 SVR4 实现细节 12.8 Mach/1 的zone 分配器 12.8.1 垃圾收集 12.8.2 分析 12.9 多处理器的分层分配器 12.9.1 分析 12.10 Solaris 2.4 的Slab 分配器 12.10.1 对象复用 12.10.2 硬件Cache 利用率 12.10.3 分配器footprint 12.10.4 设计与接口 12.10.5 实现 12.10.6 分析 12.11 小结 12.12 练习 12.13 参考文献 第13 章 虚存(352) 13.1 简介 13.1.1 内存管理的石器时代 13.2 分页 13.2.1 功能需求 13.2.2 虚拟地址空间 13.2.3 页面初始访问 13.2.4 交换区 13.2.5 转换映射图 13.2.6 页面替换策略 13.3 硬件需求 13.3.1 MMU 缓存 13.3.Z Intel 80x86 13.3.3 IBM RS/6000 13.3.4 MIPS R3000 13.4 4.3BSBSD 实例研究 13.4.1 物理内存 13.4.2 地址空间 13.4.3 页面在哪里 13.4.4 交换区 13.5 4.3BSD 内存管理操作 13.5.1 创建进程 13.5.2 页面失效处理 13.5.3 空闲页面链表 13.5.4 交换 13.6 分析 13.7 练习 13.8 文献 第14 章 SVR4 VM 体系结构(382) 14.1 动机 14.2 内存映射文件 14.2.1 mmap 及相关系统用 14.3 VM 设计原理 14.4 基本抽象概念 14.4.1 物理内存 14.4.2 地址空间 14.4.3 地址映射 14.4.4 匿名页面 14.4.5 硬件地址转换 14.5 段驱动程序 14.5.1 seg-vn 14.5.2 seg-map 14.5.3 seg-dev 14.5.4 seg-kmem 14.5.5 seg-kp 14.6 交换层 14.7 VM 操作 14.7.1 创建一个新映射 14.7.2 匿名页面处理 14.7.3 创建进程 14.7.4 共享匿名页面 14.7.5 页面失效处理 14.7.6 共享内存 14.7.7 其他部件 14.8 与v 节点子系统的交互 14.8.1 v 节点接口变化 14.8.2 统一的文件访问 14.8.3 其他问题 14.9 Solaris 中的虚拟交换空间 14.9.1 扩展交换空间 14.9.2 虚交换管理 14.9.3 讨论 14.10 分析 14.11 性能改进 14.11.1 高失效率原因 14.11.2 SVR4 对SunOS VM 实现的改进 14.11.3 结果与讨论 14.12 小结 14.13 练习 14.14 参考文献 第15 章 进一步关于内存管理的主题(413) 15.1 简介 15.2 Mach 的内存管理设计 15.2.1 设计目标 15.2.2 编程接口 15.2.3 基本抽象概念 15.3 共享内存设施 15.3.1 copy-on-write 共享 15.3.2 读写共享 15.4 内存对象和Pager 15.4.1 内存对象初始化 15.4.2 内核与pager 间的接口 15.4.3 内核与pager 交互 15.5 外部pager 和内部pager 15.5.1 一个网络共享内存服务器 15.6 页面替换 15.7 分析 15.8 4.4BSD 的内存管理 15.9 快表(TLB)一致性 15.9.1 单处理机上的TLB 一致性 15.9.2 多处理机问题 15.10 Mach 的TLB 击落算法 15.10.1 同步和死锁避免 15.10.2 讨论 15.11 SVR4 和SVR4.2 UNIX 中的TLB 一致性 15.11.1 SVR4/MP 15.11.2 SVR4.2/MP 15.11.3 Lazy 击落算法 15.11.4 立即击落 15.11.5 讨论 15.12 其他TLB 一致性算法 15.13 虚地址缓存 l5.13.1 映射变化 15.13.2 地址别名 15.13.3 DMA 操作 15.13.4 维护缓存一致性 15.13.5 分析 15.14 练习 15.15 参考文献 第16 章 设备驱动程序I/O(446) 16.1 简介 16.2 概述 16.2.1 硬件配置 16.2.2 设备中断 16.3 设备驱动程序框架 16.3.1 设备和驱动程序分类 16.3.2 调用驱动程序代码 16.3.3 设备开关表 16.3.4 驱动程序入口点 16.4 I/O 子系统 16.4.1 主、次设备号 16.4.2 设备文件 16.4.3 specfs 文件系统 16.4.4 公共snode 16.4.5 设备克隆 16.4.6 字符设备I/O 16.5 poll 系统调用 16.5.1 poll 的实现 16.5.2 4.3BSD select 系统调用 16.6 块I/O 16.6.1 buf 结构 16.6.2 与v 节点的交互 16.6.3 设备访问方法 16.6.4 到块设备的raw I/O 16.7 DDI/DKI 说明 16.7.1 建议 16.7.2 第三部分函数 16.7.3 其他部分 16.8 新的SVR4 版本 16.8.1 多处理器可靠驱动程序 16.8.2 SVR4.1/ES 的变化 16.8.3 动态加载和卸载 16.9 发展趋势 16.10 小结 16.11 练习 16.12 参考文献 第17 章 流(477) 17.1 目的 17.2 概述 17.3 消息和队列 17.3.1 消息 17.3.2 虚拟拷贝 17.3.3 消息类型 17.3.4 队列和模块 17.4 流I/O 17.4.1 STREAMS 调度程序 17.4.2 优先带(Priority Bands) 17.4.3 流量控制 17.4.4 驱动程序尾 17.4.5 流头 17.5 配置和设置 17.5.1 配置一个模块或驱动程序 17.5.2 打开流 17.5.3 插入(Pushing)模块 17.5.1 克隆设备 17.6 STREAMS ioctl 17.6.1 STR ioctl 处理 17.6.2 透明ioctl 17.7 内存分配 17.7.1 扩展STREAMS 缓冲区 17.8 多路复用 17.8.1 上部多路复用器 17.8.2 下部多路复用器 17.8.3 链接流 17.8.4 数据流 17.8.5 普通链接和持久链接 17.9 FIFO 和管道 17.9.1 STREAMS FIFO 17.9.2 STREAMS 管道 17.10 网络接口 17.10.1 传输供应者接口(TPI) 17.10.2 传输层接口(TLI) 17.10.3 sockets 17.10.4 SVR4 socket 实现 17.11 小结 17.12 练习 17.13 参考文献
CH1 操作系统概论............................................................................................................................1 1.1 操作系统概观............................................................................................................................1 1.1.1 操作系统的定义和目标.....................................................................................................1 1.1.2 操作系统的作用与功能.....................................................................................................2 1.1.3 操作系统的主要特性.........................................................................................................4 1.2 操作系统的形成和发展............................................................................................................6 1.2.1 人工操作阶段.....................................................................................................................6 1.2.2 管理程序阶段.....................................................................................................................6 1.2.3 多道程序设计与操作系统的形成.....................................................................................8 1.2.4 操作系统的发展与分类...................................................................................................11 1.3 操作系统提供的服务和用户接口..........................................................................................18 1.3.1 操作系统提供的基本服务...............................................................................................18 1.3.2 操作系统提供的用户接口...............................................................................................19 1.3.3 程序接口系统调用.......................................................................................................20 1.3.4 操作接口系统程序.......................................................................................................22 1.4 操作系统的结构设计..............................................................................................................26 1.4.1 操作系统的构件...............................................................................................................26 1.4.2 整体式结构的操作系统...................................................................................................29 1.4.3 层次式结构的操作系统...................................................................................................29 1.4.4 虚拟机结构的操作系统...................................................................................................31 1.4.5 客户/服务器与微内核结构的操作系统..........................................................................32 1.4.6 操作系统功能的实现模型...............................................................................................35 1.4.7 实例研究:Windows 2000/XP 客户/服务器结构...........................................................37 1.5 流行操作系统简介..................................................................................................................41 1.5.1 DOS 操作系统...................................................................................................................41 1.5.2 Windows 操作系统............................................................................................................42 1.5.3 UNIX 操作系统家族.........................................................................................................44 1.5.4 自由软件和Linux 操作系统............................................................................................45 1.5.5 IBM系列操作系统...........................................................................................................47 1.5.6 其他流行操作系统...........................................................................................................49 1.6 本章小结.................................................................................................................................50 CH2 处理器管理..............................................................................................................................56 2.1 中央处理器..............................................................................................................................56 2.1.1 单处理器系统和多处理器系统.......................................................................................56 2.1.2 寄存器..............................................................................................................................57 2.1.3 机器指令与特权指令.......................................................................................................58 2.1.4 处理器状态.......................................................................................................................58 2.1.5 程序状态字寄存器...........................................................................................................59 V 2.2 中断技术.................................................................................................................................60 2.2.1 中断的概念.......................................................................................................................60 2.2.2 中断源分类.......................................................................................................................60 2.2.3 中断装置..........................................................................................................................61 2.2.4 中断处理程序...................................................................................................................63 2.2.5 中断事件的具体处理方法...............................................................................................63 2.2.6 中断的优先级和多重中断...............................................................................................68 2.2.7 实例研究:Windows 2000/XP 中断处理........................................................................69 2.2.8 实例研究:Solaris 中断处理..........................................................................................75 2.2.9 实例研究:Linux 中断处理.............................................................................................76 2.3 进程及其实现..........................................................................................................................79 2.3.1 进程的定义和属性...........................................................................................................79 2.3.2 进程的状态和转换...........................................................................................................80 2.3.3 进程的描述.......................................................................................................................83 2.3.4 进程切换与模式切换.......................................................................................................87 2.3.5 进程的控制.......................................................................................................................88 2.3.6 实例研究:UNIX SVR4 进程管理...................................................................................91 2.3.7 实例研究:Linux 进程管理.............................................................................................94 2.4 线程及其实现..........................................................................................................................97 2.4.1 引入多线程技术的动机...................................................................................................97 2.4.2 多线程环境中的进程与线程...........................................................................................98 2.4.3 线程的实现.....................................................................................................................103 2.4.4 实例研究:Solaris 的进程与线程................................................................................106 2.4.5 实例研究:Windows 2000/XP 的进程与线程..............................................................110 2.5 处理器调度............................................................................................................................116 2.5.1 处理器调度的层次.........................................................................................................117 2.5.2 高级调度.........................................................................................................................117 2.5.3 中级调度........................................................................................................................118 2.5.4 低级调度........................................................................................................................118 2.5.5 选择调度算法的原则.....................................................................................................119 2.6 批处理作业的管理与调度....................................................................................................119 2.6.1 作业和进程的关系.........................................................................................................119 2.6.2 批处理作业的管理.........................................................................................................120 2.6.3 批处理作业的调度.........................................................................................................121 2.6.4 作业调度算法.................................................................................................................121 2.7 低级调度................................................................................................................................124 2.7.1 低级调度的功能.............................................................................................................124 2.7.2 低级调度算法.................................................................................................................124 2.7.3 实时调度........................................................................................................................127 2.7.4 多处理器调度.................................................................................................................128 2.7.5 实例研究:UNIX SVR4 调度算法.................................................................................132 2.7.6 实例研究:Windows 2000/XP 调度算法......................................................................133 VI 2.7.7 实例研究:Linux 调度算法...........................................................................................140 2.8 本章小结................................................................................................................................143 CH3 并发进程................................................................................................................................151 3.1 并发进程................................................................................................................................151 3.1.1 顺序程序设计.................................................................................................................151 3.1.2 进程的并发性.................................................................................................................151 3.1.3 与时间有关的错误.........................................................................................................153 3.1.4 进程的交互(Interaction Among Processes):协作和竞争........................................155 3.2 临界区管理............................................................................................................................156 3.2.1 互斥和临界区.................................................................................................................156 3.2.2 临界区管理的尝试.........................................................................................................157 3.2.3 实现临界区管理的软件方法.........................................................................................158 3.2.4 实现临界区管理的硬件设施.........................................................................................160 3.3 信号量与PV 操作.................................................................................................................162 3.3.1 同步和同步机制.............................................................................................................162 3.3.2 记录型信号量与PV 操作..............................................................................................163 3.3.3 用记录型信号量实现互斥.............................................................................................166 3.3.4 记录型信号量解决生产者-消费者问题.......................................................................168 3.3.5 记录型信号量解决读者-写者问题...............................................................................170 3.3.6 记录型信号量解决理发师问题.....................................................................................172 3.4 管程.......................................................................................................................................172 3.4.1 管程和条件变量.............................................................................................................172 3.4.2 Hoare 方法实现管程.......................................................................................................175 3.4.3 Hanson 方法实现管程....................................................................................................178 3.5 进程通信................................................................................................................................184 3.5.1 信号通信机制.................................................................................................................184 3.5.2 共享文件通信机制` .......................................................................................................185 3.5.3 共享存储区通信机制.....................................................................................................188 3.5.4 消息传递通信机制.........................................................................................................189 3.5.5 有关消息传递实现的若干问题.....................................................................................192 3.6 死锁.......................................................................................................................................195 3.6.1 死锁的产生.....................................................................................................................195 3.6.2 死锁的定义.....................................................................................................................196 3.6.3 死锁的防止.....................................................................................................................197 3.6.4 死锁的避免.....................................................................................................................198 3.6.5 死锁的检测和解除.........................................................................................................206 3.7 实例研究:WINDOWS 2000/XP 的同步和通信机制...........................................................209 3.7.1 Windows 2000/XP 的同步和互斥机制...........................................................................209 3.7.2 Windows2000/XP 进程通信机制....................................................................................210 3.8 实例研究:LINUX 信号量机制.............................................................................................211 3.9 本章小结................................................................................................................................212 VII CH4 存储管理................................................................................................................................225 4.1 主存储器................................................................................................................................225 4.1.1 存储器的层次.................................................................................................................225 4.1.2 快速缓存(caching) ....................................................................................................226 4.1.3 地址转换与存储保护.....................................................................................................227 4.2 连续存储空间管理................................................................................................................227 4.2.1 单用户连续存储管理.....................................................................................................227 4.2.2 固定分区存储管理.........................................................................................................229 4.2.3 可变分区存储管理.........................................................................................................230 4.3 分页式存储管理....................................................................................................................235 4.3.1 分页式存储管理的基本原理.........................................................................................235 4.3.2 相联存储器和快表.........................................................................................................236 4.3.3 分页式存储空间的分配和去配.....................................................................................237 4.3.4 分页存储空间的页面共享和保护.................................................................................238 4.3.5 多级页表........................................................................................................................238 4.3.6 反置页表........................................................................................................................240 4.4 分段式存储管理....................................................................................................................241 4.4.1 程序的分段结构.............................................................................................................241 4.4.2 分段式存储管理的基本原理.........................................................................................241 4.4.3 段的共享........................................................................................................................243 4.4.4 分段和分页的比较.........................................................................................................243 4.5 虚拟存储管理........................................................................................................................243 4.5.1 虚拟存储器的概念.........................................................................................................243 4.5.2 请求分页虚拟存储管理.................................................................................................245 4.5.3 请求分段虚拟存储管理.................................................................................................261 4.5.4 请求段页式虚拟存储管理.............................................................................................262 4.6 实例研究:INTEL X86/PENTIUM 存储管理硬件设施...........................................................263 4.6.1 Intel x86/Pentium 段机制——段选择符和段描述符....................................................264 4.6.2 Intel x86/Pentium 运行模式选择....................................................................................265 4.6.3 Intel x86/Pentium 地址转换............................................................................................265 4.6.4 Intel x86/Pentium 页式或段页式地址转换....................................................................266 4.7 实例研究:WINDOWS 2000/XP 虚拟存储管理...................................................................268 4.7.1 进程地址空间布局.........................................................................................................268 4.7.2 用户空间内存分配.........................................................................................................269 4.7.3 内存管理的实现.............................................................................................................273 4.8 实例研究:LINUX 的存储管理.............................................................................................279 4.8.1 Linux 存储管理概述.......................................................................................................279 4.8.2 虚拟地址空间的组织和管理.........................................................................................279 4.8.3 物理内存空间的管理.....................................................................................................280 4.8.4 用户态内存的申请与释放.............................................................................................281 4.8.5 内存的共享和保护.........................................................................................................282 VIII 4.8.6 交换空间、页面的换出和调入.....................................................................................283 4.8.7 缓冲机制........................................................................................................................284 4.9 本章小结................................................................................................................................285 CH5 设备管理................................................................................................................................292 5.1 I/O 硬件原理..........................................................................................................................292 5.1.1 I/O 系统...........................................................................................................................292 5.1.2 I/O 控制方式...................................................................................................................293 5.1.3 设备控制器.....................................................................................................................297 5.2 I/O 软件原理..........................................................................................................................298 5.2.1 I/O 软件的设计目标和原则...........................................................................................298 5.2.2 I/O 中断处理程序...........................................................................................................299 5.2.3 设备驱动程序.................................................................................................................300 5.2.4 与硬件无关的操作系统I/O 软件.................................................................................300 5.2.5 用户空间的I/O 软件.....................................................................................................302 5.3 具有通道的I/O 系统管理.....................................................................................................302 5.3.1 通道命令和通道程序.....................................................................................................302 5.3.2 I/O 指令和主机I/O 程序................................................................................................304 5.3.3 通道启动和I/O 操作过程.............................................................................................305 5.4 缓冲技术................................................................................................................................306 5.4.1 单缓冲............................................................................................................................306 5.4.2 双缓冲............................................................................................................................307 5.4.3 多缓冲............................................................................................................................307 5.5 驱动调度技术........................................................................................................................308 5.5.1 存储设备的物理结构.....................................................................................................308 5.5.2 循环排序........................................................................................................................309 5.5.3 优化分布........................................................................................................................310 5.5.4 交替地址........................................................................................................................311 5.5.5 搜查定位........................................................................................................................311 5.5.6 独立磁盘冗余阵列.........................................................................................................313 5.5.7 提高磁盘I/O 速度的一些方法.....................................................................................316 5.6 设备分配................................................................................................................................316 5.6.1 设备独立性.....................................................................................................................316 5.6.2 设备分配........................................................................................................................317 5.7 虚拟设备................................................................................................................................318 5.7.1 问题的提出.....................................................................................................................318 5.7.2 SPOOLING 的设计和实现.............................................................................................319 5.7.3 SPOOLING 应用例子.....................................................................................................321 5.8 实例研究:WINDOWS 2000/XP 的I/O 系统........................................................................321 5.8.1 Windows 2000/XP I/O 系统结构和组件.........................................................................321 5.8.2 Windows 2000/XP I/O 系统的数据结构.........................................................................325 5.8.3 Windows2000/XP 设备驱动程序....................................................................................328 IX 5.8.4 Windows 2000/XP I/O 处理.............................................................................................331 5.8.5 Windows 2000/XP 高速缓存管理................................................................................333 5.9 实例研究:LINUX 设备管理.................................................................................................344 5.9.1 Linux 设备管理概述.......................................................................................................344 5.9.2 Linux 硬盘管理...............................................................................................................345 5.9.3 Linux 网络设备...............................................................................................................346 5.9.4 Linux 设备驱动程序.......................................................................................................347 5.10 本章小结..............................................................................................................................347 CH6 文件管理................................................................................................................................352 6.1 文件.......................................................................................................................................352 6.1.1 文件的概念.....................................................................................................................352 6.1.2 文件的命名.....................................................................................................................353 6.1.3 文件的类型.....................................................................................................................353 6.1.4 文件的属性.....................................................................................................................354 6.1.5 文件的存取方法.............................................................................................................355 6.1.6 文件的使用.....................................................................................................................356 6.2 文件目录................................................................................................................................357 6.2.1 文件目录与文件目录项.................................................................................................357 6.2.2 一级目录结构.................................................................................................................358 6.2.3 二级目录结构.................................................................................................................358 6.2.4 树形目录结构.................................................................................................................359 6.3 文件组织与数据存储............................................................................................................361 6.3.1 文件的存储.....................................................................................................................361 6.3.2 文件的逻辑结构.............................................................................................................361 6.3.3 文件的物理结构.............................................................................................................365 6.4 文件系统其他功能的实现....................................................................................................371 6.4.1 文件操作的实现.............................................................................................................371 6.4.2 UNIX/Linux 文件操作系统调用.....................................................................................372 6.4.3 文件卷的安装和使用.....................................................................................................375 6.4.4 文件共享........................................................................................................................377 6.4.5 层次式文件系统模型.....................................................................................................382 6.4.6 辅存空间管理.................................................................................................................383 6.4.7 内存映射文件.................................................................................................................385 6.4.8 虚拟文件系统.................................................................................................................386 6.5 实例研究:LINUX 文件管理.................................................................................................387 6.5.1 Linux 文件管理概述.......................................................................................................387 6.5.2 Linux 文件系统的安装和管理........................................................................................388 6.5.3 虚拟文件系统VFS.........................................................................................................389 6.5.4 文件系统管理的缓冲机制.............................................................................................392 6.5.5 系统打开文件表.............................................................................................................394 6.5.6 EXT2 文件系统...............................................................................................................395 X 6.6 实例研究:WINDOWS 2000/XP 文件系统...........................................................................397 6.6.1 Windows 2000/XP 文件系统概述...................................................................................397 6.6.2 Windows2000/XP 文件系统模型和FSD 体系结构.......................................................398 6.6.3 NTFS 文件系统驱动程序...............................................................................................401 6.6.4 NTFS 在磁盘上的结构...................................................................................................402 6.6.5 NTFS 可恢复性支持.......................................................................................................405 6.6.6 NTFS 安全性支持...........................................................................................................405 6.7 本章小结................................................................................................................................406 CH7 操作系统的安全与保护........................................................................................................411 7.1 安全性概述............................................................................................................................411 7.2 安全威胁及其类型................................................................................................................411 7.3 保护.......................................................................................................................................415 7.3.1 操作系统保护层次.........................................................................................................415 7.3.2 内存储器的保护.............................................................................................................415 7.3.3 面向用户的访问控制.....................................................................................................415 7.3.4 面向数据的访问控制.....................................................................................................416 7.4 入侵者...................................................................................................................................416 7.4.1 入侵技术.........................................................................................................................416 7.4.2 口令保护.........................................................................................................................417 7.4.3 入侵检测.........................................................................................................................420 7.5 病毒(恶意软件)................................................................................................................421 7.5.1 病毒及其威胁.................................................................................................................421 7.5.2 病毒的特性.....................................................................................................................423 7.5.3 病毒的类型.....................................................................................................................423 7.5.4 反病毒的方法.................................................................................................................423 7.5.5 电子邮件病毒.................................................................................................................425 7.6 保护的基本机制、策略与模型............................................................................................426 7.6.1 机制、策略与模型.........................................................................................................426 7.6.2 身份认证机制.................................................................................................................438 7.6.3 授权机制.........................................................................................................................442 7.6.4 加密机制.........................................................................................................................452 7.6.5 审计................................................................................................................................456 7.7 实例研究:WINDOWS 2000/XP 的安全机制.......................................................................457 7.7.1. Windows 2000/XP 安全性概述.......................................................................................457 7.7.2. Windows2000/XP 安全性系统组件................................................................................457 7.7.3. Windows2000/XP 保护对象............................................................................................458 7.7.4. 访问控制策略.................................................................................................................458 7.7.5. 访问令牌.........................................................................................................................459 7.7.6. 安全描述符.....................................................................................................................459 7.8 本章小结................................................................................................................................461 CH8 网络和分布式操作系统........................................................................................................465 XI 8.1 计算机网络概述....................................................................................................................465 8.1.1 计算机网络的概念.........................................................................................................465 8.1.2 数据通信基本概念.........................................................................................................467 8.1.3 网络体系结构.................................................................................................................468 8.2 网络操作系统........................................................................................................................474 8.2.1 网络操作系统概述.........................................................................................................474 8.2.2 几个流行的网络操作系统.............................................................................................475 8.2.3 网络操作系统实例.........................................................................................................475 8.3 分布式操作系统....................................................................................................................477 8.3.1 分布式系统概述.............................................................................................................477 8.3.2 分布式进程通信.............................................................................................................478 8.3.3 分布式资源管理.............................................................................................................484 8.3.4 分布式进程同步.............................................................................................................485 8.3.5 分布式系统中的死锁.....................................................................................................495 8.3.6 分布式文件系统.............................................................................................................497 8.3.7 分布式进程迁移.............................................................................................................502 8.4 实例研究:WINDOWS2000 网络体系结构和网络服务.......................................................504 8.4.1 Windows 2000 网络体系结构.........................................................................................504 8.4.2 WindowS 2000 的层次化网络服务.................................................................................518 8.5 本章小结................................................................................................................................522
第1章 操作系统概述 1 1.1 认识操作系统 1 1.1.1 从使用者角度 1 1.1.2 从程序开发者角度 2 1.1.3 从操作系统在整个计算机系统中所处位置 2 1.1.4 从操作系统设计者的角度 3 1.2 操作系统的发展 4 1.2.1 操作系统的演变 4 1.2.2 硬件的发展轨迹 5 1.2.3 软件的轨迹 6 1.2.4 单内核与微内核操作系统 7 1.3 开放源代码的Unix/Linux操作系统 8 1.3.1 Unix的诞生和发展 8 1.3.2 Linux的诞生 9 1.3.3 操作系统标准POSIX 9 1.3.4 GNU和Linux 9 1.3.5 Linux的开发模式 10 1.4 Linux内核 10 1.4.1 Linux内核的位置 10 1.4.2 Linux内核的作用 11 1.4.3 Linux内核子系统 11 1.5 Linux内核源代码 13 1.5.1 多版本的内核源代码 13 1.5.2 Linux内核源代码的结构 13 1.5.3 Linux内核源代码分析工具 14 习题1 15 第2章 内存寻址 17 2.1 内存寻址简介 17 2.1.1 Intel x86 CPU寻址方式的演变 18 2.1.2 IA32寄存器简介 19 2.1.3 物理地址、虚拟地址及线性地址 21 2.2 分段机制 22 2.2.1 地址转换及保护 24 2.2.2 Linux中的段 24 2.3 分页机制 25 2.3.1 页与页表 25 2.3.2 线性地址到物理地址的转换 28 2.3.3 分页示例 28 2.3.4 页面高速缓存(cache) 29 2.3.5 Linux中的分页机制 30 2.4 Linux中的汇编语言 31 2.4.1 AT&T与Intel汇编语言的比较 31 2.4.2 AT&T汇编语言的相关知识 32 2.5 Linux系统地址映射示例 33 习题2 35 第3章 进程 37 3.1 进程介绍 37 3.1.1 程序和进程 37 3.1.2 进程的层次结构 38 3.1.3 进程状态 39 3.1.4 进程实例 40 3.2 进程控制块 41 3.2.1 进程状态 42 3.2.2 进程标识符 43 3.2.3 进程之间的亲属关系 43 3.2.4 进程控制块的存放 44 3.3 进程的组织方式 45 3.3.1 进程链表 45 3.3.2 散列表 46 3.3.3 可运行队列 47 3.3.4 等待队列 47 3.4 进程调度 48 3.4.1 基本原理 48 3.4.2 时间片 50 3.4.3 Linux进程调度时机 50 3.4.4 进程调度的依据 51 3.4.5 调度函数schedule()的实现 52 3.5 进程的创建 54 3.5.1 创建进程 55 3.5.2 线程及其创建 56 3.6 与进程相关的系统调用及其应用 58 3.6.1 fork系统调用 58 3.6.2 exec系统调用 59 3.6.3 wait系统调用 60 3.6.4 exit系统调用 62 3.6.5 进程的一生 63 3.7 与调度相关的系统调用及应用 63 习题3 65 第4章 内存管理 67 4.1 Linux的内存管理概述 67 4.1.1 虚拟内存、内核空间和用户空间 67 4.1.2 虚拟内存实现机制间的关系 69 4.2 进程用户空间的管理 70 4.2.1 进程用户空间的描述 71 4.2.2 进程用户空间的创建 74 4.2.3 虚存映射 76 4.2.4 进程的虚存区示例 76 4.2.5 与用户空间相关的系统调用 78 4.3 请页机制 79 4.3.1 缺页异常处理程序 79 4.3.2 请求调页 81 4.3.3 写时复制 83 4.4 物理内存的分配与回收 83 4.4.1 伙伴算法 85 4.4.2 物理页面的分配 86 4.4.3 物理页面的回收 88 4.4.4 slab分配模式 89 4.4.5 内核空间非连续内存区的分配 93 4.5 交换机制 95 4.5.1 交换的基本原理 95 4.5.2 页面交换守护进程kswapd 99 4.6 内存管理实例 99 4.6.1 相关背景知识 100 4.6.2 代码体系结构介绍 100 4.6.3 实现步骤 103 4.6.4 程序代码 103 习题4 108 第5章 中断和异常 110 5.1 中断的基本知识 110 5.1.1 中断向量 110 5.1.2 外设可屏蔽中断 111 5.1.3 异常及非屏蔽中断 112 5.1.4 中断描述符表 112 5.1.5 相关汇编指令 113 5.2 中断描述符表的初始化 114 5.2.1 IDT表项的设置 114 5.2.2 对陷阱门和系统门的初始化 115 5.2.3 中断门的设置 116 5.3 中断处理 116 5.3.1 中断和异常的硬件处理 116 5.3.2 中断请求队列的建立 117 5.3.3 中断处理程序的执行 119 5.3.4 从中断返回 121 5.4 中断的下半部处理机制 121 5.4.1 为什么把中断分为两部分来处理 122 5.4.2 小任务机制 122 5.4.3 下半部 124 5.4.4 任务队列 125 5.5 中断应用——时钟中断 125 5.5.1 时钟 125 5.5.2 时钟运作机制 126 5.5.3 Linux的时间系统 127 5.5.4 时钟中断处理程序 128 5.5.5 时钟中断的下半部处理 129 5.5.6 定时器及其应用 129 习题5 132 第6章 系统调用 133 6.1 系统调用与应用编程接口系统命令、内核函数的关系 133 6.1.1 系统调用与API 133 6.1.2 系统调用系统命令 134 6.1.3 系统调用与内核函数 134 6.2 系统调用处理程序及服务例程 135 6.2.1 初始化系统调用 136 6.2.2 system_call()函数 136 6.2.3 参数传递 137 6.2.4 跟踪系统调用的执行 139 6.3 封装例程 140 6.4 添加新系统调用 141 6.5 实例——利用系统调用实现一个调用日志收集系统 143 6.5.1 代码体系结构 143 6.5.2 把代码集成到内核中 146 6.5.3 实现步骤 148 习题6 148 第7章 内核中的同步 149 7.1 临界区和竞争状态 149 7.1.1 临界区举例 149 7.1.2 共享队列和加锁 150 7.1.3 确定保护对象 151 7.1.4 死锁 152 7.1.5 并发执行的原因 153 7.2 内核同步方法 153 7.2.1 原子操作 153 7.2.2 自旋锁 155 7.2.3 信号量 156 7.3 并发控制实例 157 7.3.1 内核任务及其并发关系 158 7.3.2 实现机制 158 7.3.3 关键代码解释 162 7.3.4 实现步骤 163 习题7 164 第8章 文件系统 165 8.1 Linux文件系统基础 165 8.1.1 Linux文件结构 165 8.1.2 Linux文件系统 166 8.1.3 文件类型 167 8.1.4 文件访问权限 168 8.2 虚拟文件系统 168 8.2.1 虚拟文件系统的引入 168 8.2.2 VFS中的数据结构 170 8.2.3 VFS超级块数据结构 171 8.2.4 VFS的索引节点 173 8.2.5 目录项对象 174 8.2.6 与进程相关的文件结构 176 8.2.7 主要的数据结构之间关系 179 8.3 文件系统的注册、安装与卸载 180 8.3.1 文件系统的注册和注销 180 8.3.2 文件系统的安装 181 8.3.3 文件系统的卸载 183 8.4 页缓冲区 183 8.4.1 address_space对象 183 8.4.2 address_space对象的操作函数表 184 8.5 文件的打开与读写 185 8.5.1 打开文件 185 8.5.2 读写文件 187 8.6 编写一个文件系统 189 8.6.1 Linux文件系统的实现要素 189 8.6.2 什么是romfs文件系统 191 8.6.3 romfs文件系统的布局与文件结构 191 8.6.4 具体实现的对象 192 习题8 195 第9章 设备驱动 196 9.1 概述 196 9.2 设备驱动程序基础 198 9.2.1 I/O端口 199 9.2.2 设备文件 200 9.2.3 中断处理 201 9.2.4 设备驱动程序框架 203 9.3 字符设备驱动程序 204 9.3.1 字符设备驱动程序的注册 204 9.3.2 简单的字符设备驱动程序示例 205 9.4 块设备驱动程序 208 9.4.1 块设备驱动程序的注册 209 9.4.2 块设备请求 212 习题9 215 附录A 内核中的链表 216 A.1 链表数据结构简介 216 A.2 内核链表数据结构的定义及初始化 217 A.3 操作链表的接口 218 A.4 遍历链表 219 附录B 内核模块 221 B.1 什么是模块 221 B.2 编写一个简单的模块 221 B.3 模块编程的基础知识 222 B.4 模块的编译 224 B.5 模块实用程序modutils 226 附录C Linux内核编译 228 C.1 内核简介 228 C.2 为什么重新编译内核 228 C.3 内核编译模式 229 C.4 新版本内核的获取和更新 229 C.5 内核编译 230 C.6 修改并重启管理器 232 附录D Linux编程基础(C语言环境) 233 D.1 Linux编程常识 233 D.1.1 相关标准(ANSI C、POSIX、SVID、XPG) 233 D.1.2 函数库和系统调用 234 D.1.3 在线文档(man、info、HOWTO) 235 D.1.4 C语言编程风格 237 D.2 Linux上的C/C++编译器和调试器 238 D.2.1 运行gcc/egcs 238 D.2.2 gcc/egcs的主要选项 240 D.2.3 gdb简介 240 D.2.4 gdb的常用命令 241 D.2.5 gdb使用示例 242 D.3 GNU make和makefile 243 D.3.1 GNU make 243 D.3.2 makefile的基本结构 243 D.3.3 makefile的变量 244 D.3.4 GNU make的主要预定义变量 245 D.3.5 GNU make的隐含规则 245 D.3.6 运行make 246
Linux VFS(Virtual File System,虚拟文件系统)是Linux内核中的一个子系统,提供了一个统一的接口来处理不同文件系统的访问。它允许用户空间应用程序通过统一的系统调用接口来访问不同类型的文件系统,如ext4、NTFS、FAT等。 VFS的主要目标是隐藏底层文件系统的细节,使上层应用程序和文件系统操作无需关心具体的文件系统类型。它在内核中提供了一组抽象的数据结构和函数,用于处理文件系统的操作。 以下是VFS的一些关键组件和概念: 1. 文件结构(file struct):表示打开的文件,包含了与该文件相关的信息,如文件描述符、文件位置指针、访问模式等。 2. 目录项(dentry):表示文件或目录在文件系统中的唯一标识符。目录项之间通过树状结构组织,形成文件系统的层次结构。 3. 文件描述符表(file descriptor table):用于跟踪每个进程打开的文件,每个进程都有一个独立的文件描述符表,可以通过文件描述符来间接引用打开的文件。 4. 虚拟文件系统挂载点(vfsmount):表示文件系统在虚拟文件系统层次结构中的挂载点。一个vfsmount结构指向一个具体的超级块(super_block)结构,形成了文件系统的挂载链表。 5. 超级块(super_block):表示文件系统的超级块信息,包含了文件系统的参数和元数据信息。每个文件系统都对应一个超级块结构。 VFS提供了一组统一的操作方法,如读取、写入、打开、关闭、创建、删除等,用于对文件进行操作。这些操作方法由具体的文件系统类型提供,通过super_block结构中的s_op字段指向。通过VFS应用程序可以使用相同的系统调用接口来操作不同类型的文件系统,从而实现了透明访问的功能。 总之,Linux VFS是一个在内核中实现的抽象层,通过统一的接口和数据结构,提供了对不同文件系统的访问和管理能力。它使得应用程序可以与底层文件系统解耦,并且方便地进行文件操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值