pintos-pro4-filesystem

loading 分享 2026-7-17 下载文档

} if(n==-1) n=Evict();

fs_device->ops->read(fs_device->aux,sector,SecArr[n].data); fs_device->read_cnt++; ManArr[n].Use=true; ManArr[n].SecNo=sector; ManArr[n].Num=0; ManArr[n].Dirty=false; lock_release(&CacheLock); // printf(\ return n; }

int InCache(block_sector_t sector) {

int i;

for(i=0;i

int Evict() {

int i,n=-1;

unsigned int maxn=0; for(i=0;i

if(ManArr[i].Use==true&&ManArr[i].Num>=maxn) { maxn=ManArr[i].Num; n=i; } }

lock_acquire(&ManArr[n].Lock); ASSERT(n!=-1); WriteBack(n);

ManArr[n].Use=false;

lock_release(&ManArr[n].Lock); // printf(\ return n; }

void WriteBack(int n) {

fs_device->ops->write(fs_device->aux,ManArr[n].SecNo,SecArr[n].data); fs_device->write_cnt++; ManArr[n].Dirty=false; }

void DestroyCacheMan(void) {

WriteAllBack(); }

void CountSec(int n) {

int i;

for(i=0;i

void WriteAllBack(void) {

int i;

for(i=0;i


pintos-pro4-filesystem.doc 将本文的Word文档下载到电脑
搜索更多关于: pintos-pro4-filesystem 的文档
相关推荐
相关阅读