我们有n个文件f1...fn需要存储在磁盘上。每个文件fi的大小为si<=B字节,其中一个磁盘页面可以存储B字节。我们可以将每个文件完整地存储在一页中,或者在两个连续页面之间拆分它。连续的文件必须存储在同一页面或连续页面上。我们将按顺序访问文件并对每个文件执行计算。每次访问与前一个文件不完全位于同一页上的新文件时,我们都需要花费Tpage的开销将该页面读入主存储器。此外,如果文件fi在两个页面之间拆分,则我们在计算期间会有Tsplit * si的缓存未命中开销。我们希望找到一种有效的算法来存储文件在内存中,以最小化总超额时间。
这个问题的算法被认为是有效的,如果运行时间为O(nB)。
我的方法是重新安排文件以减少缓存未命中。然而,该语句说连续的文件需要存储在相同或连续的页面上。这意味着我们不能改变顺序以最适合可用页面。但是,由于文件是按顺序读取的,因此在读取数据时我们可以“向前查看”以查看当前已读取的页面是否包含下一个文件。维护文件起始点和结束点的索引可能有助于在读取文件时检查它是否包含下一个文件。
有人能否为此问题提供动态规划算法?
这个问题的算法被认为是有效的,如果运行时间为O(nB)。
我的方法是重新安排文件以减少缓存未命中。然而,该语句说连续的文件需要存储在相同或连续的页面上。这意味着我们不能改变顺序以最适合可用页面。但是,由于文件是按顺序读取的,因此在读取数据时我们可以“向前查看”以查看当前已读取的页面是否包含下一个文件。维护文件起始点和结束点的索引可能有助于在读取文件时检查它是否包含下一个文件。
有人能否为此问题提供动态规划算法?