linux系统读磁盘文件过程发生的事。

read过程 :磁盘数据——>内核态缓冲区(内核态数据可能写回磁盘)——>用户态缓冲区(用户态数据可能被交换到交换区或写回到内核态缓冲区)

一个用户态进程 会有一个文件描述符数组,进程每次open一个文件就会在数组中增加一个元素并且建立一个文件对象,其中文件对象中最重要的字段就是指向回调函数的指针,也就是对文件的操作方法。

当发出open()调用时,通过文件名找到索引节点,然后open这个函数,建立了文件对象,其中文件对象中的操作文件的方法基本都基于文件系统定义的方法。然而一个文件可以被多个进程open,因此会有多个文件对象,但是文件在内核态中的磁盘高速缓存区却只有一个,因此就会出现多个进程操作同一个磁盘高速缓存,从而出现多个进程间缓存不一致的现象。

比如:

在从磁盘读数据到缓存中时,由于存在预读的机制,进程1可能通过预读把自己并不需要的页读到缓存中,而进程2恰好需要这个页,因此进程2在磁盘高速缓存中找到了这个页,但这个页进程1却并未对它进程IO,也就是说这个页内没有文件内容,当进程2检测到此页需要重新IO时,可由于某种原因,比如系统内存紧缺回收,进程1会将不脏的页归回内存,因此这个页从高速缓存中删除,所以进程2也就必须把这个页框释放掉,重新申请一个页框,并锁定该页,开始IO。当IO结束后,就可以把该页内容拷贝到用户缓冲区,但此时还存在问题,因为可能存在进程3以写的方式打开该文件,并对该文件进行了删减,导致该页内容从磁盘中被删掉,因此还需要进程2拷贝数据之前检查该页的索引在不在文件范围内,如果不在就要释放该页。

时间: 2024-11-05 16:37:41

linux系统读磁盘文件过程发生的事。的相关文章

Linux 系统的启动过程

阅读目录 Linux 系统启动过程 内核的引导 运行init 运行级别 系统初始化 建立终端 用户登录系统 图像模式与文字模式的切换 Linux的关机 当我们在启动Linux操作系统时,会显示出硬件自检以及很多的启动信息,包括启动失败的我们都一目了然! 在Centos 5.x版本上是可以完全可以看见硬件自检以及启动信息的 在Centos 6.x版本上只显示进度条,只需要按F4 或者 root用户修改 /boot/grub/grub.conf 文件 vim /boot/grub/grub.conf

详解linux系统的启动过程及系统初始化

一.linux系统的启动流程 关于linux系统的启动流程我们可以按步进行划分为如下: POST加电自检 -->BIOS(Boot Sequence)-->加载对应引导上的MBR(bootloader)-->主引导设置加载其 BootLoader-->Kernel初始化-->initrd—>/etc/init进程加载/etc/inittab,其进程流 程图如下: 二.剖析详细启动过程 ⑴. POST开机自检:电脑主机打开电源的时候,随后会听到滴的一声,系统启动开始了开机

linux系统开机启动过程

Linux系统开机过程 1:BIOS 通电自检 2:读取MBR 3:boot loader 4:加载内核 5:用户层init根据inittab文件来设定运行等级 6:init进程执行rc.sysinit 7:启动内核模块 8:执行不同运行级别的脚本程序 9:执行/etc/rc/d/rc.local 10:执行/bin/login 程序,进入登录状态.

linux系统的启动过程简要分析

接触linux系统运维已经好几年了,常常被问到linux系统启动流程问题,刚好今天有空来梳理下这个过程:一般来说,所有的操作系统的启动流程基本就是: 总的来说,linux系统启动流程可以简单总结为以下几步:1)开机BIOS自检,加载硬盘.2)读取MBR,进行MBR引导.3)grub引导菜单(Boot Loader).4)加载内核kernel.5)启动init进程,依据inittab文件设定运行级别6)init进程,执行rc.sysinit文件.7)启动内核模块,执行不同级别的脚本程序.8)执行/

Linux系统在启动过程中启动级别发生错误的解决办法

一.系统启动级别一共有六个: 0:系统停机模式,系统不可以正常启动 1:单用户模式, root权限,用于系统的维护,禁止远程登陆 2:多用户模式,没有NFS网络支持 3:完整的多用户文本模式,有NFS,登陆后进入控制台命令行模式 4:系统未使用,作为保留一般不用 5:图形化模式,登陆后进入GUI模式 6:重启模式,默认级别不能为6,否则不能正常启动 示例:若我们设置默认模式为poweroff.target,则在开机的时候会出现启动关机死循环状态 使用reboot命令后,会出现如下情况:(停在该位

vmware下linux系统的安装过程

虚拟机VMware下CentOS6.6安装教程图文详解 [日期:2016-05-24] 来源:Linux社区  作者:Sungeek [字体:大 中 小] 分享下,虚拟机VMware下CentOS6.6安装教程图文详解. CentOS 6.6 发布下载 地址: http://www.linuxidc.com/Linux/2014-10/108554.htm 1.首先要下载一个centos的iso镜像,我是用虚拟机VMware来安装的,用VMware最好创建一个空白硬盘. 2.创建完毕再设置里面挂

linux系统的启动过程及系统初始化

(其中/etc/inittab是一个很重要的文件,值得细究http://www.2cto.com/os/201108/98426.html) 其开头的446字节内容特指为"主引导记录"(MBR),其后是4个16字节的"磁盘分区表"(DPT),以及2字节的结束标志(55AA) http://www.ruanyifeng.com/blog/2013/08/linux_boot_process.html http://chrinux.blog.51cto.com/6466

Linux系统开机引导和启动过程-img文件

操作系统的启动分为两个阶段: 引导boot 启动startup 引导阶段开始于打开电源开关,结束于内核初始化完成和 systemd 进程成功运行.启动阶段接管了剩余工作,直到操作系统进入可操作状态. 总体来说,Linux 的开机引导和启动过程是相当容易理解,下文将分节对于不同步骤进行详细说明. BIOS 上电自检(POST) 引导装载程序 (GRUB2) 内核初始化 启动 systemd,其是所有进程之父. 注意,本文以 GRUB2 和 systemd 为载体讲述操作系统的开机引导和启动过程,是

[Linux学习笔记] Linux系统引导流程(一)

前面我们已经介绍过以CentOS为例的Linux系统的安装以及Linux常用命令的使用,本节内容我们将介绍Linux系统引导流程.当按下电源的那一刻,到我们看到用户界面,这其中都发生了些什么呢?赶快来一探究竟. 下图为Linux系统引导流程过程图: 以下对Linux引导流程过程做一个简单的说明: 1. POST加电自检 POST(POST ON SELF TEST)首先对每一个设备进行检查,完成后会寻找存有引导记录的设备,找到读入操作系统的引导记录,将系统控制权交给引导记录. 2. MBR引导