趣文网 > 作文大全

有问有答:为什么Steam在下载时会占用非常多的系统资源?

2020-12-03 20:35:01
相关推荐

很多读者朋友都是Steam的忠实用户,现在宽带的带宽普遍增多了,像200Mbps、500Mbps这样入户的也不少见了,可能很多网速较快的朋友在Steam上下载游戏时会发现自己电脑的CPU占用率很高,难不成下载速度快了CPU会跟不上吗?这是有可能发生的,原因呢,出在Steam的整套下载机制上。

Steam使用了一套较为复杂的文件下载机制。首先,开发者可以给自己的游戏建立多个仓库,每个仓库中可以存放不同的文件。Steam会根据仓库中的文件内容,形成一份清单,同时将该仓库中的所有文件进行分块,每个块大小约为1MB,为了不让没有购买过该游戏的用户轻松获取到游戏文件,Steam内容系统将每个块都使用LZMA算法进行了压缩,并且使用一个256-bit长度的密钥对文件块进行了AES加密。每个仓库都有一个独一无二的密钥,并且在仓库的清单中记载有原始文件名、文件大小、文件校验值、文件类型和文件区块的元数据,同时还会记载每个区块的ID、校验码、文件位置偏移值和压缩前后的大小。通过这样的设计,Steam能够有效保障整个下载过程是高效的,并且在下载时不会有差错。同时,对于所有Steam用户来说,每个区块文件都是一样的,这也允许CDN存储静态的内容,而不是动态加密的。

大概就是这样子,把整个仓库的文件给压缩并加密了

在下载一个已经发售的游戏时,Steam是可以第一时间拿到用于解密文件的密钥的,为了节约时间,Steam使用了边下载边解密的办法,而LZMA解压缩(就是7-Zip用的算法之一)和AES解密都是较为吃CPU资源的,这也就是Steam下载速度越快,CPU占用率越高的原因了——因为你同时间要解密的数据量更大了。

在公司500Mbps的网络环境下,用Steam下载游戏大概会吃掉我这块i7-4770K约50%的占用率,还是很高的

而在下载尚未发售游戏的数据时,也就是在预载游戏时,由于拿不到用来解密数据的Key,Steam会把下载到的数据存到*.csd文件中,在游戏正式发售之后,就会使用拿到的密钥进行解密和解压缩。如果你的存储设备速度慢,而网速较快的话,那确实不如不做预载、直接在正式发售后进行下载。

本文主要参考了SteamDB对Steam下载机制的解读文章,如果各位读者对Steam下载还有别的疑惑的话,欢迎在评论区中提出。

阅读剩余内容
网友评论
相关内容
延伸阅读
小编推荐

大家都在看

创新与发展的作文 粗心大意作文 作文满分多少分 为加速作文 梅花香自苦寒来的作文 关于写笑的作文 吃豆芽作文 四季海棠作文 动物作文小猫 印象最深的人作文400 妈妈你听我说作文 心中的彩虹作文600字 介绍班主任的作文 诗意的生活作文 遇见什么作文600字 修改作文范例 写春天的校园作文 描写甘蔗的作文 写节日的作文 英语六级作文模版 七年级下册期中考作文 军训的一天作文 名字意义的作文 关于学校劳动的作文 今天真快乐作文 美作文 什么的一课作文600字 思念的味道作文 描写作文 高考英语作文全国卷