电脑计算机论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 521|回复: 0

一种快于目前操作系统的本地文件拷贝的方法

[复制链接]
CN19501020 发表于 2022-11-17 13:31:08 | 显示全部楼层 |阅读模式
二、背景技术的方案
文件拷贝、文件删除等文件管理功能是所有操作系统必备的功能。从软盘时代,到硬盘时代,再到固态硬盘时代,操作系统中各种各样的文件系统离不开文件管理功能。而,不论是Fat32文件系统、NTFS文件系统、ext3文件系统,还是Apple文件系统,文件的管理都分为文件目录树记录管理和文件数据块管理。
当用户需要往一个目录拷贝一个新的文件时,文件系统会做如下的几步操作:
1、判断磁盘剩余空间是否足够->2、锁定文件目录树并往文件目录树中添加记录->3、从文件系统空闲块表中锁定一些空闲块->4、复制所有源数据块到这些空闲块。
发明人在开发Compare Struggle2软件的过程中,发现:所有操作系统的本地文件拷贝过程过程都是单线程运作,也就是每个文件依次进行:锁文件目录树->添加文件记录->锁磁盘空闲记录表->分配目标数据块空间->多次拷贝数据块,直至所有源文件的数据块拷贝入目标数据块空间。发明人发现本地操作文件的过程中,一个文件接着一个文件拷贝的这个过程,是一个目前所有操作系统都存在的未被优化的过程。我们从计算机体系结构的知识中知道:流水线的操作是可以并行的,而且在几个步骤互不影响的情况下,多线程的流水线操作可以大大提高总体任务的完成速度。所以,把本地操作多文件的过程设计成多线程的操作过程能够大大提高多文件的拷贝过程。经过实际比较发现:本地文件拷贝过程中,10个线程并发拷贝速度要比操作系统默认拷贝速度快一倍。
多线程拷贝本地文件比操作系统默认拷贝过程要快的原因在于:
拷贝过程中,123步骤是排他的锁操作,写入磁盘数据量小但操作排他,而步骤4是可以同步进行的操作。在发明人设计的多线程拷贝过程中,第一个线程在进行步骤4操作时,第二个线程完全可以进行步骤123的操作,而多个线程也可以同时进行步骤4操作。在存在硬件寻址过程的硬盘系统中,如果只有一个文件的一个数据块存在于硬盘的写入缓存中,硬盘旋转一周或者硬件顺序寻址一次只写入了一个文件的一个数据块;而如果在硬盘的写入缓存中,存在多个文件的多个数据块,硬盘旋转一周或者硬件顺序寻址一次就可以写入多个数据块。这也就是:多个文件的同步拷贝比多个文件的单线程拷贝的速度要快的原因。
       
三、背景技术的缺陷
当前,所有操作系统的本地文件拷贝过程为单线程拷贝过程,拷贝多文件的一个拷贝任务,操作系统会挨个文件进行拷贝,这导致了没有充分发挥硬盘写入缓存的作用,特别是拷贝众多小文件的过程。
       
四、本发明的目的
本发明的目的在于:充分利用硬盘写入缓存、寻址过程和操作系统的多线程特点,相比目前操作系统默认的拷贝速度,大大提高本地文件的拷贝速度。
       
五、本发明的方案
本发明涉及所有操作系统中一个包含多文件的本地拷贝任务的实施过程当前所有操作系统的该过程为逐一文件地写入硬盘没有充分利用硬盘的写入缓存和写入过程特性本发明所述方法包括修改操作系统一个本地拷贝任务的单线程实施过程为多线程实施过程采用固定线程数的线程池逐步并发完成所有本地文件的拷贝从而使得目标写入硬盘的硬盘缓存中同时存在多个小文件的待写入数据块使得目标写入硬盘的一次硬件顺序寻址或硬盘磁片旋转一周也就是扫描硬盘定位需要写入数据的硬件位的硬件过程可以写入多个文件的多个数据块从而达到一个包含众多小文件的本地拷贝任务的加速目的
六、本发明的关键点
改操作系统默认单线程拷贝过程为多线程拷贝过程,固定10个或20个拷贝线程,实现众多小文件的一次拷贝过程,速度大大提高。
       
七、本发明的效果
使用固定10个拷贝线程完成众多小文件的一次拷贝过程,比如一次nodejs前端框架开发环境文件夹的拷贝过程,总体拷贝速度为操作系统默认拷贝速度的两倍。
您需要登录后才可以回帖 登录 | 注册

本版积分规则


QQ|手机版|小黑屋|电脑计算机论坛 ( 京ICP备2022023538号-1 )

GMT+8, 2024-5-19 16:14 , Processed in 0.079115 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表