コード例 #1
0
 protected virtual void WritePageToMemory(Page page)
 {
     StorageReader.Seek(page.Address, SeekOrigin.Begin);
     StorageReader.Write(page.Data, 0, Constants.PAGE_SIZE);
     if (PageWrite != null)
         PageWrite(this, new LRUCacheEventArgs(page));
 }
コード例 #2
0
 protected virtual Page AllocateNewPage(Address address)
 {
     Int64 pageAddress;
     if (FreePages.Count > 0)
         pageAddress = FreePages.Dequeue();
     else
         pageAddress = NextPageAddress;
     AddressTranslationTable.Add(address, pageAddress);
     Page newPage = new Page(Address.NewAddress(), pageAddress, new Byte[Constants.PAGE_SIZE]);
     PageTranslationTable.Add(pageAddress, newPage);
     return newPage;
 }
コード例 #3
0
 protected virtual Page LoadPageFromMemory(Int64 offset)
 {
     Byte[] data = new Byte[Constants.PAGE_SIZE];
     StorageReader.Seek(offset - offset % Constants.PAGE_SIZE, SeekOrigin.Begin);
     StorageReader.Read(data, 0, Constants.PAGE_SIZE);
     Page page = new Page(Address.NewAddress(), offset, data);
     if (PageFault != null && !DisablePageFault)
         PageFault(this, new LRUCacheEventArgs(page));
     return page;
 }
コード例 #4
0
 public LRUCacheEventArgs(Page page)
 {
 }