public Acess ValidTrade(Acess acess = null) { var r = new Acess(); foreach (var item in Fila.ToArray()) { r = FilaControle.Where(x => x.Page == item).LastOrDefault(); if (r.R == 1) { r.SetR(0); } else { if (Table.Where(x => x.Page == r.Page).Select(x => x.Count).FirstOrDefault() >= K) { if (r.M == 1) { r.SetM(0); Fila.Add(Fila.FirstOrDefault()); Fila.RemoveAt(0); } else { return(r); } } } } return(ValidTrade(r)); }
public void AddNewPage(Acess acess) { var rp = FilaControle.Where(x => x.Page == acess.Page).ToList(); if (rp.Count != 0) { if (rp.LastOrDefault().M == 1) { acess.MovM(); } } FilaControle.Add(acess); var updated = NewPage(() => { var remove = SecondChance(); OldValue = remove.Page; TradingPostion = Memory.IndexOf(OldValue); Memory[TradingPostion] = NewValue; }, acess.Page); ResetBitR(); }
public void AddNewPage(Acess acess) { var t = new Acess(); var rp = FilaControle.Where(x => x.Page == acess.Page).ToList(); if (rp.Count != 0) { if (rp.LastOrDefault().M == 1) { acess.MovM(); } } FilaControle.Add(acess); NewPage(() => { t = ValidTrade(); OldValue = t.Page; TradingPostion = Memory.IndexOf(OldValue); Memory[TradingPostion] = NewValue; Fila.Add(NewValue); }, acess.Page); foreach (var x in Table.ToArray()) { if (x.Page == t.Page) { x.Reset(); } } foreach (var item in Table.ToArray()) { if (acess.Page == item.Page) { item.Reset(); } if (Memory.Contains(item.Page)) { item.Update(); } } ResetBitR(); }
static void Main(string[] args) { #region FIFO Console.WriteLine(" --------------------- FIFO -------------------------"); var fifoMemory = new List <string> { "0", "0", "0" }; var fifoList = new List <string> { "A2", "A3", "B2", "B3", "A1", "A2", "A3", "B2", "B1", "B3", "B2", "A3", }; var fifo = new FIFOController(new FIFOService(fifoMemory.ToList())); fifo.Run(fifoList.ToList()); #endregion FIFO #region OTIMO Console.WriteLine(" --------------------- OTIMO -------------------------"); var otmMemory = new List <string> { "B1", "0", "0" }; var otmList = new List <string> { "A2", "A3", "B2", "B3", "A1", "A2", "A3", "B2", "B1", "B3", "B2", "A3", }; var otimo = new OTIMOController(new OTIMOService(otmMemory.ToList())); otimo.Run(otmList.ToList()); #endregion OTIMO #region LRU Console.WriteLine(" --------------------- LRU -------------------------"); var lruMemory = new List <string> { "0", "0", "0" }; var lruList = new List <string> { "A1", "A2", "A3", "B2", "B3", "A1", "B2", "A3", "A2", "A1", }; var lru = new LRUController(new LRUService(lruMemory.ToList())); lru.Run(lruList.ToList()); #endregion LRU #region Relogio Console.WriteLine(" --------------------- Relogio -------------------------"); var rlgMemory = new List <string> { "0", "0", "0" }; var rlgList = new List <string> { "A1", "A2", "A3", "B2", "B3", "A1", "B2", "B3", "A2", "A1", }; var Relogio = new RelogioController(new RelogioService(rlgMemory.ToList())); Relogio.Run(rlgList.ToList()); #endregion Relogio #region NRU Console.WriteLine(" --------------------- NRU -------------------------"); var nruMemory = new List <string> { "A1", "A2", "A3" }; var nru = new NRUController(new NRUService(nruMemory.ToList())); var nruList = new List <Acess>() { Acess.CreateFrom("A1", "E"), Acess.CreateFrom("A2", "L"), Acess.CreateFrom("B1", "L"), Acess.CreateFrom("B2", "L"), Acess.CreateFrom("B3", "L"), Acess.CreateFrom("A1", "L"), Acess.CreateFrom("B2", "L"), Acess.CreateFrom("B3", "L"), Acess.CreateFrom("A2", "L"), Acess.CreateFrom("A1", "E"), }; nru.Run(nruList.ToList()); #endregion NRU #region WSClock Console.WriteLine(" --------------------- WSClock -------------------------"); var wsMemory = new List <string> { "0", "0", "0" }; var wsList = new List <Acess>() { Acess.CreateFrom("A1", "E"), Acess.CreateFrom("A2", "L"), Acess.CreateFrom("B1", "L"), Acess.CreateFrom("B2", "L"), Acess.CreateFrom("A1", "L"), Acess.CreateFrom("A1", "L"), Acess.CreateFrom("B2", "L"), Acess.CreateFrom("B3", "L"), Acess.CreateFrom("A2", "L"), Acess.CreateFrom("A1", "E"), }; var wsClock = new WSClockController(new WSClockService(wsMemory.ToList(), wsList.ToList())); wsClock.Run(wsList.ToList()); #endregion WSClock }
public void Add(Acess page) { service.AddNewPage(page); }