コード例 #1
0
        //-----------------------------------------------------------------------------//
        // Carrega os dados de configuração do Simulador.
        static bool LoadSetting(ref SettingApp s)
        {
            bool   flag;
            string line, param, value;

            string[] tokens;
            param = "";
            flag  = true;

            try {
                StreamReader file = new StreamReader("setting.ini");
                while ((line = file.ReadLine()) != null)
                {
                    if (line.StartsWith("#"))
                    {
                        continue;
                    }

                    tokens = line.Split(':');
                    if (tokens != null && tokens.Length == 2)
                    {
                        param = tokens[0].Trim(' ', '\t');
                        switch (param)
                        {
                        case "CACHE_SIZE": s.CacheSize = Convert.ToInt32(tokens[1]); break;

                        case "RAM_PAGES_FILE": s.RamPagesFile = tokens[1].Trim(' ', '\t'); break;

                        case "ASSIGNMENT_POLICY":
                            value = tokens[1].Trim(' ', '\t');

                            switch (value)
                            {
                            case "DIRETO": s.Mapping = AssignmentPolicyType.Direto; break;

                            case "ASSOCIATIVO": s.Mapping = AssignmentPolicyType.Associativo; break;

                            case "POR-CONJUNTO": s.Mapping = AssignmentPolicyType.PorConjunto; break;

                            default:
                                PrintValidValues("ASSIGNMENT_POLICY", value, 1);
                                flag = false;
                                break;
                            }
                            break;

                        case "REPLACEMENT_ALGORITHM":
                            value = tokens[1].Trim(' ', '\t');

                            switch (value)
                            {
                            case "FIFO": s.Replace = ReplacementAlgorithmType.Fifo; break;

                            case "LRU": s.Replace = ReplacementAlgorithmType.Lru; break;

                            case "LFU": s.Replace = ReplacementAlgorithmType.Lfu; break;

                            case "MRU": s.Replace = ReplacementAlgorithmType.Mru; break;

                            case "RANDOM": s.Replace = ReplacementAlgorithmType.Random; break;

                            default:
                                PrintValidValues("REPLACEMENT_ALGORITHM", value, 1);
                                flag = false;
                                break;
                            }
                            break;

                        default:
                            PrintValidValues(param, "", 2);
                            flag = false;
                            break;
                        }
                    }
                }
            }
            catch (FileNotFoundException) {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.Write("[!] ");
                Console.ForegroundColor = ConsoleColor.Gray;
                Console.Write("Não foi possível carregar o arquivo '");
                Console.ForegroundColor = ConsoleColor.Red;
                Console.Write("setting.ini");
                Console.ForegroundColor = ConsoleColor.Gray;
                Console.Write("'. Verifique e tente novamente!!!\n\n");
                flag = false;
            }
            catch (FormatException) {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.Write("[!] ");
                Console.ForegroundColor = ConsoleColor.Gray;
                Console.Write("Não foi possível obter o valor do parâmetro '");
                Console.ForegroundColor = ConsoleColor.Red;
                Console.Write("{0}", param);
                Console.ForegroundColor = ConsoleColor.Gray;
                Console.Write("'. Verifique e tente novamente!!!\n\n");
                flag = false;
            }

            return(flag);
        }
コード例 #2
0
        //-----------------------------------------------------------------------------//
        // Função principal.
        //-----------------------------------------------------------------------------//
        static void Main(string[] args)
        {
            // Se carrega desde arquivo a configuração do simulador.
            config = new SettingApp();
            if (!LoadSetting(ref config))
            {
                Console.Read();
                return;
            }

            // Garanto que o tamanho da memória cache sempre seja base 2.
            config.CacheSize = FixMemoryTo2Potency();

            try {
                // Se carrega desde arquivo os endereços de memória principal.
                ramPages = readFile_PagesRAM(config.RamPagesFile);
            }
            catch (FileNotFoundException) {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.Write("[!] ");
                Console.ForegroundColor = ConsoleColor.Gray;
                Console.Write("Não foi possível carregar o arquivo '");
                Console.ForegroundColor = ConsoleColor.Red;
                Console.Write(config.RamPagesFile);
                Console.ForegroundColor = ConsoleColor.Gray;
                Console.Write("'. Verifique e tente novamente!!!\n\n");
                return;
            }

            // Loop principal da aplicação.
            char option;

            do
            {
                Console.Clear();
                PrintWelcome();
                PrintConfiguration();
                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.WriteLine("\n» Selecione o tipo de simulação:");
                Console.WriteLine("   (1) Execução simples: 1 mapeamento com 1 substituição (exceto se mapeamento é Direto)");
                Console.WriteLine("   (2) Execução por grupo: 1 mapeamento com M substituições (exceto se mapeamento é Direto)");
                Console.WriteLine("   (3) Execução múltiple: N mapeamentos com M substituições");
                Console.WriteLine("   (0) Sair.");
                Console.ForegroundColor = ConsoleColor.Gray;
                Console.Write("Opção: ");
                option = Convert.ToChar(Console.Read());

                switch (option)
                {
                case '1': SingleSimulation(); break;

                case '2': GroupSimulation(); break;

                case '3': MultipleSimulation(); break;

                default: continue;
                }

                Console.WriteLine("\nDigite qualquer tecla para ir ao menu de seleção...");
                Console.ReadKey();
                FlushKeyboard();
            } while (option != '0');
        }