一般情况下,读比较简单,写就麻烦多了
写的起始位置/结束位置一般不一定正好就是页边界.所以一般写的区域由三个部分组成:不完整的首页+N个完整的中间页+不完整的尾页
N个完整的中间页好办,直接写就是了,比较麻烦的是首尾页.所谓不完整页,是指的你写的只能是这些页的一部分,原来的数据需要保留一部分.参见下图.
... ... xxxxxxxx xxxxx--- -------- ... ... -------- --xxxxxx ... ... 写的起始地址在这里----^ 写的结束地址在这里---^ \______/ \_______________________/ \______/ | 首页 | |中间N个完整的页| | 尾页 |
首尾页的写,需要定义一个页大小的缓冲区,先把页读进来,根据地址算好相应的偏移把需要更新的数据在这个缓冲区里更新好,再写回去.
|