应用程序级别的文件的页面/块是啥意思?
Posted
技术标签:
【中文标题】应用程序级别的文件的页面/块是啥意思?【英文标题】:What do we mean with pages/blocks for files in the application level?应用程序级别的文件的页面/块是什么意思? 【发布时间】:2013-11-16 11:14:16 【问题描述】:当我在教科书中阅读有关文件的内容时,似乎我所知道的有关操作系统的一些概念在应用程序级别的文件中重复出现。 例如,术语 block 和 page 用于文件中数据的逻辑表示(因此我们不在 HD 级别的组织中)。但我不明白这里的想法是什么。我们在应用程序中是否定义了块大小和页面大小并在访问文件时使用它,例如使用 NIO 还是阻塞 IO? 我们通常如何定义这些尺寸?随意?我在这里感到困惑吗?
@RobinGreen 请求后更新 我所说的一个例子是例如时隙块页面结构或描述的可变长度记录的列表表示,例如在 Silberschatz for Database System 的书中文件部分中
【问题讨论】:
【参考方案1】:在 Linux 中,操作系统块大小与硬盘报告的扇区大小(以字节为单位)无关(现在这也是假的 - 出于 Bios 兼容性的原因!)。
在应用程序级别,您可以将数据存储在与操作系统级别的块无关的固定大小或可变大小的块中。
所以有很多关卡,都是互不相关的!
当然,以块的形式读写数据当然是个好主意。例如,一次读取和写入 1 个字节的数据会涉及到内核的往返次数过多。但要使用的正确尺寸是一个经验问题:哪种尺寸对您的用例最有效?
页面大小略有不同。它们由 CPU 架构定义(至少在 x86/x86_64 系列上)并影响分页/交换。应用程序不会直接遇到分页和交换,但会遇到性能下降的影响。
【讨论】:
我不确定这是我要问的。就像在应用程序级别我们可以拥有固定/可变长度的记录(这很常见)一样,我们似乎也可以在页面中操作文件。 IE。我们可以在记录上做一个seek
并写入我们的20字节对象。但我不确定 page 或 block 如何适合我给你的代码示例
“页面”这个词的含义与我使用的操作系统术语不同。我建议最好保留单词 page 来表示该含义。至于写一个 20 字节的对象,我确实讨论过:“当然,以块的形式读写数据是个好主意。”
但这就是 OP 的意义所在。由于这些术语在教科书中也用于应用程序级别的文件
为了清楚起见,也许你可以引用教科书的一小段摘录来展示它所说的一个例子。或者,更好的是,有些教科书在 Google 图书上在线 - 如果我知道教科书和页码,我也许可以自己阅读。以上是关于应用程序级别的文件的页面/块是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章