kernel笔记——VFS】的更多相关文章

vfs(the virtual filesystem, virtual file switch)为应用程序访问文件提供了统一的接口,如read.write.open等. 下面我们看加载文件系统模块.格式化磁盘.挂载磁盘,这些步骤相应的内核实现,vfs在其中又发挥了哪些作用. 文件系统在内核中由file_system_type结构表示,当我们执行以下命令加载文件系统模块时: modprobe ext2 内核使用了以下函数完成ext2模块注册: 调用module_init(init_ext2_fs)…
说明: 使用Vm虚拟机构建自己的LFS系统时,系统引导不成功,提示 kernel panic VFS: Unable to mount root fs 参考链接:http://www.52os.net/articles/linux-from-scrath-7-7-part-four.html 发现,编译内核时,有些选项没有打开所致 编译内核: make mrproper make LANG=en_US.UTF-8 LC_ALL= menuconfig 生成的.config文件中,确保以下内容是打…
概念: ①硬链接:若一个 inode 号对应多个文件名,则称这些文件为硬链接.即硬链接就是同一个文件使用了多个别名.硬链接可由命令 link 或 ln 创建. 其特性: 文件有相同的 inode 及 data block: 只能对已存在的文件进行创建: 不能交叉文件系统进行硬链接的创建: 不能对目录进行创建,只可对文件创建: 删除一个硬链接文件并不影响其他有相同 inode 号的文件. ②软连接:若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接.软链接就是一个普通文件,只…
  Linux下,I/O处理的层次可分为4层: 系统调用层,应用程序使用系统调用指定读写哪个文件,文件偏移是多少 文件系统层,写文件时将用户态中的buffer拷贝到内核态下,并由cache缓存该部分数据 块层,管理块设备I/O队列,对I/O请求进行合并.排序 设备层,通过DMA与内存直接交互,将数据写到磁盘 下图清晰地说明了Linux I/O层次结构: 写文件过程 写文件的过程包含了读的过程,文件先从磁盘载入内存,存到cache中,磁盘内容与物理内存页间建立起映射关系.用于写文件的write函数…
内核与操作系统 由于一些商业操作系统设计上的缺陷以及日益庞杂,“操作系统”的概念对很多人而言变得含糊不清.在进一步讨论Linux内核的话题前,我们先区分“内核”与“操作系统”这两个概念. 操作系统:指在整个系统中完成最基本功能和系统管理的部分,包括内核.设备驱动.文件管理工具.系统管理工具.shell命令行或其他用户界面(gnome/KDE等) 内核:是操作系统的核心,完成进程管理.cpu调度.内存管理.中断处理等功能 一般我们编写的应用程序,跑在操作系统上,完成文字编辑.音乐播放.网页游览等特…
库文件 先从我们熟悉的c库入手,理解系统调用(system call).c代码中调用printf函数,经历了以下调用过程:   最终输出的功能由内核中write调用完成,c库封装了系统调用. 对于以下hello world程序: #include int main() { printf("Hello world.\n"); return ; } 我们可以使用ldd查看程序依赖的库文件: linux # ldd hello linux-vdso.so. => (0x00007fff…
调度器完成以下任务: 时钟中断(或类似的定时器)时间内刷新进程的时间片,设置进程调度标志 系统调用返回或中断完成时检查调度标志 schedule函数 内核代码中完成进程调度的函数为schedule(),该函数中包含以下调用: put_prev_task(rq, prev); next = pick_next_task(rq); context_switch(rq, prev, next); schedule首先将当前执行函数放入运行队列,然后选择下一个要运行的进程(怎么选择下一个进程,这部分就是…
cpu与磁盘.网卡.键盘等外围设备(相对于cpu和内存而言)交互时,cpu下发I/O请求到这些设备后,相对cpu的处理能力而言,磁盘.网卡等设备需要较长时间完成请求处理. 那么在请求发出到处理完成这段时间,应如何设定cpu的行为,既能让这期间运行的其他程序得到执行,又能在外设处理完成后,cpu及时获取到处理完成的消息? 可以按以下方式设定cpu行为: cpu以轮询(polling)的方式,每隔一段时间询问请求是否处理完成 cpu下发请求后执行其他进程,磁盘等外设完成处理后,主动告知cpu 对于第…
内核同步 内核同步解决并发带来的问题,多个线程对同一数据进行修改,数据会出现不一致的情况,同步用于保护共享数据等资源. 有两种形式的并发: 同时进行式并发,在不同cpu上执行的进程同时访问共享数据 二次进入式并发,某进程读写一段数据时,中断触发,在中断处理函数中再次修改之前进程读写的内容 访问共享数据的那部分代码被称为临界区. 原子操作 不可打断的操作为原子操作,一条汇编指令不可被中断,其为原子操作.在内核代码中,我们可以看到类似atomic64_add这样的函数,使用它们完成加减运算,而不是简…
内核中时钟主要完成以下作用: 记录系统运行时间 完成时间相关的统计功能,如cpu占用率等 定时功能,设定某个进程一段时间后完成某项任务 为实现以上功能,硬件以及内核提供了不同类型的时钟. RTC 实时时钟(real time clock,RTC),又叫硬件时钟.墙上时钟.RTC记录的是00:00:00 GMT,1 January 1970到当前经历的时间. 开机时,内核读取RTC时间,关机时内核更新RTC时间,系统运行的过程中不操作RTC.关机后依靠RTC记录时间,其由主板上的电池供电. 内核读…