} //botao acessar - pega o dado digitado pro usuario e acessa o bloco na ram e passa para cache private void BotaoGO_Click(object sender, EventArgs e) { if (!ValidaCampos()) { MessageBox.Show("Preencha Todos os Campos.", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { tamanhoMR = Convert.ToInt32(this.textBox1.Text); tamanhoBloco = Convert.ToInt32(this.textBox2.Text); n = Convert.ToInt32(this.textBox3.Text); linhasCache = Convert.ToInt32(this.textBox4.Text); if (!(tamanhoMR < tamanhoBloco) && tamanhoMR % tamanhoBloco != 0 && linhasCache % n != 0) //valida se bloco é maior que a memoria e se valores são multiplos do tamanho da MR { if (tamanhoMR % tamanhoBloco != 0) //valida multiplo ram e bloco { MessageBox.Show("Tamanho da memoria RAM deve ser MULTIPLO do tamanho do Bloco", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { MessageBox.Show("Bloco NÃO pode ser maior que a Memoria.", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error); } if (linhasCache % n != 0) //valida multiplo cache e N { MessageBox.Show("Numero de linhas da Cache DEVE ser multiplo do Numero de conjuntos (N)", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { Ram.Columns.Add("bloco", "Bloco"); // Ram.Columns.Add("dado", "Dado"); // cria coluna datagrid RAM Ram.Columns.Add("endereço", "Endereço"); // Cache.Columns.Add("cor", "N"); // Cache.Columns.Add("tag", "Tag"); // Cache.Columns.Add("bloco", "Bloco"); // cria coluna datagrid Cache Cache.Columns.Add("hora", "Hora Carregada"); // Cache.Columns.Add("ultima", "Ultima Hora Usada"); // Cache.Columns.Add("acessos", "Acessos"); // WidthChanger(); blocos = new int[tamanhoMR / tamanhoBloco]; //numero de linhas do bloco ContAcesso = new int[tamanhoMR / tamanhoBloco]; //contador de acesso para cada linha DataAcesso = new string[linhasCache]; //date visita para cada linha HoraCarregada = new string[linhasCache]; // for (int i = 1; i <= blocos.Length; i++) //preenche o datagrid Ram { string data = Alfanumerico_aleatorio(tamanhoBloco); ContAcesso[i - 1] = 0; Ram.Rows.Add(i, data, (i - 1) * tamanhoBloco); blocos[i - 1] = i - 1; } for (int i = 1; i <= linhasCache; i++) //cria tamanho grid cache { Cache.Rows.Add(null, null, null, null); Cache.Rows[i].Height = 30; } int k = 0; //n int aux = 0; int contador = 0; for (int i = 0; i < linhasCache / n; i++) //preenche datagrid cache { for (int j = 0; j < n; j++) { contador++; if (contador == 1) { aux = i; } Cache.Rows[aux].Cells[0].Value = k; aux++; } k++; } for (int i = 0; i < linhasCache; i += n) //colore N { CacheColorChanger(i, 0, n, linhasCache); } } } Cache.ClearSelection(); Ram.ClearSelection(); } //botao go - valida os dados digitados e se estiver tudo ok, cria os datagrids e começa o simulador