Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
linux中脏页的写回_Linux_Memory Management_Kernel - Fatal编程技术网

linux中脏页的写回

linux中脏页的写回,linux,memory-management,kernel,Linux,Memory Management,Kernel,我有一个关于脏页回写的问题。如果修改了一部分页面数据,写回会将整个页面写入磁盘,还是只将部分页面写入修改过的数据?x86系统上的内存管理硬件的粒度为4096字节。这意味着:不可能找出4096字节页面中的哪些字节确实发生了更改,哪些字节没有更改 理论上,磁盘驱动程序系统可以检查字节是否已更改,而不会写入未更改的512字节块 但是,这意味着,如果块不再位于磁盘缓存中,则必须从硬盘读取页面,以在写入之前检查页面是否已更改 我不认为Linux会这样做,因为从磁盘读取页面会花费太多时间。x86系统上的内存

我有一个关于脏页回写的问题。如果修改了一部分页面数据,写回会将整个页面写入磁盘,还是只将部分页面写入修改过的数据?

x86系统上的内存管理硬件的粒度为4096字节。这意味着:不可能找出4096字节页面中的哪些字节确实发生了更改,哪些字节没有更改

理论上,磁盘驱动程序系统可以检查字节是否已更改,而不会写入未更改的512字节块

但是,这意味着,如果块不再位于磁盘缓存中,则必须从硬盘读取页面,以在写入之前检查页面是否已更改


我不认为Linux会这样做,因为从磁盘读取页面会花费太多时间。

x86系统上的内存管理硬件的粒度为4096字节。这意味着:不可能找出4096字节页面中的哪些字节确实发生了更改,哪些字节没有更改

理论上,磁盘驱动程序系统可以检查字节是否已更改,而不会写入未更改的512字节块

但是,这意味着,如果块不再位于磁盘缓存中,则必须从硬盘读取页面,以在写入之前检查页面是否已更改


我不认为Linux会这样做,因为从磁盘读取页面会花费太多的时间。

在每次硬件中断时,CPU希望写入硬盘控制器能够处理的尽可能多的数据-这个大小由我们定义为blksize(或Linux中的一个扇区):

但是,对一个大文件的单个中断等待太长时间可能会使系统看起来没有响应,因此,合理的做法是将数据块分解为较小的大小(如512字节),以便CPU可以在向下传输每个512字节的同时处理其他任务。因此,无论u更改了一个字节还是511个字节,只要它在单个块内,所有数据都会同时写入。在整个linux内核中,无论是否将块标记为脏块,都使用一个唯一标识符:扇区号,因此任何小于扇区大小的块都很难进行有效管理


综上所述,不要忘记硬盘控制器本身也有一个用于写入操作的最小块大小。

在每次硬件中断时,CPU希望写入硬盘控制器能够处理的尽可能多的数据-这个大小由我们定义为blksize(或Linux中的一个扇区):

但是,对一个大文件的单个中断等待太长时间可能会使系统看起来没有响应,因此,合理的做法是将数据块分解为较小的大小(如512字节),以便CPU可以在向下传输每个512字节的同时处理其他任务。因此,无论u更改了一个字节还是511个字节,只要它在单个块内,所有数据都会同时写入。在整个linux内核中,无论是否将块标记为脏块,都使用一个唯一标识符:扇区号,因此任何小于扇区大小的块都很难进行有效管理


综上所述,不要忘记硬盘控制器本身也有一个用于写操作的最小块大小。

是的,需要强调的是,指示页面是否脏的这一单个信息位位于每个页面的PTE中。因此,单个位只能指示页面是否脏,但当然,这是硬件分页机制:页面大小也可以更改(具有其他后果)。是的,需要强调的是,指示页面是否脏的单个位信息位于每个页面的PTE中。因此,单个位只能指示页面是否脏,但当然,这是硬件分页机制:页面大小也可以更改(还有其他后果)。