{"id":87136,"date":"2020-07-04T01:42:40","date_gmt":"2020-07-03T23:42:40","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/simulyatory-kompyuternyh-sistem-vsem-znakomyj-polnoplatformennyj-simulyator-i-nikomu-neizvestnye-potaktovyj-i-trassy"},"modified":"2020-07-04T01:42:40","modified_gmt":"2020-07-03T23:42:40","slug":"simulyatory-kompyuternyh-sistem-vsem-znakomyj-polnoplatformennyj-simulyator-i-nikomu-neizvestnye-potaktovyj-i-trassy","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/simulyatory-kompyuternyh-sistem-vsem-znakomyj-polnoplatformennyj-simulyator-i-nikomu-neizvestnye-potaktovyj-i-trassy","title":{"rendered":"Simuladores de sistemas computacionais: o j\u00e1 familiar simulador multiplataforma e os desconhecidos pot\u00e1quicos e trilhas","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Na segunda parte do artigo sobre simuladores de sistemas computacionais, continuarei a discutir de forma simples e informativa sobre simuladores de computador, especificamente sobre simula\u00e7\u00e3o de plataforma completa, que \u00e9 mais frequentemente enfrentada pelo usu\u00e1rio comum, bem como sobre modelos de ciclo e trilhas que s\u00e3o mais comuns entre desenvolvedores. <\/p>\n<p><img decoding=\"async\" alt=\"Simuladores de sistemas computacionais: o j\u00e1 familiar simulador multiplataforma e os desconhecidos pot\u00e1quicos e trilhas\" src=\"\/wp-content\/uploads\/2020\/07\/dbc7767cd563ce01b6145ac2e872d4c0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nEm <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/auriga\/blog\/504086\/\">primeira parte<\/a><\/noindex> J\u00e1 expliquei o que s\u00e3o simuladores de forma geral, al\u00e9m dos n\u00edveis de modelagem. Agora, com base nesse conhecimento, proponho mergulhar um pouco mais fundo e conversar sobre simula\u00e7\u00e3o de plataforma completa, como montar trilhas, o que fazer com elas depois, bem como sobre emula\u00e7\u00e3o de microarquitetura de ciclo. <\/p>\n<h3>Simulador de plataforma completa (full platform simulator), ou \"Um homem s\u00f3 n\u00e3o \u00e9 guerreiro\". <\/h3>\n<p>\nSe for necess\u00e1rio investigar o funcionamento de um dispositivo espec\u00edfico, como uma placa de rede, ou escrever firmware ou driver para esse dispositivo, pode-se simular esse dispositivo separadamente. No entanto, us\u00e1-lo isoladamente da infraestrutura restante n\u00e3o \u00e9 muito conveniente. Para executar o driver correspondente, s\u00e3o necess\u00e1rios o processador central, a mem\u00f3ria, acesso ao barramento para transfer\u00eancia de dados, entre outros. Al\u00e9m disso, para o funcionamento do driver, s\u00e3o necess\u00e1rias um sistema operacional (SO) e uma pilha de rede. Pode ser necess\u00e1rio tamb\u00e9m um gerador de pacotes separado e um servidor para receber respostas. <\/p>\n<p>O simulador de plataforma completa cria um ambiente para executar toda a pilha de software, que abrange tudo, desde o BIOS e o carregador at\u00e9 o pr\u00f3prio sistema operacional e suas v\u00e1rias subsistemas, como a pilha de rede, drivers e aplica\u00e7\u00f5es de n\u00edvel de usu\u00e1rio. Para isso, ele implementa modelos de software da maioria dos dispositivos do computador: processador e mem\u00f3ria, disco, dispositivos de entrada e sa\u00edda (teclado, mouse, monitor), al\u00e9m da mencionada placa de rede. <\/p>\n<p>Abaixo est\u00e1 o diagrama de blocos do chipset x58 da Intel. Em um simulador de computador de plataforma completa com este chipset, \u00e9 necess\u00e1rio implementar a maioria dos dispositivos listados, incluindo aqueles que est\u00e3o dentro do IOH (Input\/Output Hub) e ICH (Input\/Output Controller Hub), que n\u00e3o est\u00e3o desenhados detalhadamente no diagrama de blocos. No entanto, como mostra a pr\u00e1tica, h\u00e1 muitos dispositivos que n\u00e3o s\u00e3o utilizados pelo software que pretendemos executar. Modelos desses dispositivos podem n\u00e3o ser criados. <\/p>\n<p><img decoding=\"async\" alt=\"Simuladores de sistemas computacionais: o j\u00e1 familiar simulador multiplataforma e os desconhecidos pot\u00e1quicos e trilhas\" src=\"\/wp-content\/uploads\/2020\/07\/3f62e2e7792ce06026c767146fed9912.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNa maioria das vezes, simuladores de plataforma completa s\u00e3o implementados no n\u00edvel de instru\u00e7\u00f5es do processador (ISA, veja <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/auriga\/blog\/504086\/\">artigo anterior<\/a><\/noindex>). Isso permite criar o simulador de forma relativamente r\u00e1pida e econ\u00f4mica. O n\u00edvel ISA tamb\u00e9m \u00e9 bom porque permanece mais ou menos constante, ao contr\u00e1rio do n\u00edvel API\/ABI, que muda com mais frequ\u00eancia. Al\u00e9m disso, a implementa\u00e7\u00e3o no n\u00edvel de instru\u00e7\u00f5es permite executar o que \u00e9 chamado de software bin\u00e1rio n\u00e3o modificado, ou seja, executar c\u00f3digo j\u00e1 compilado sem quaisquer modifica\u00e7\u00f5es, exatamente da maneira como \u00e9 usado no hardware real. Em outras palavras, pode-se fazer uma c\u00f3pia (\"dump\") do disco r\u00edgido, especific\u00e1-lo como imagem para o modelo no simulador de plataforma completa e - voil\u00e0! - o sistema operacional e outros programas s\u00e3o carregados no simulador sem quaisquer a\u00e7\u00f5es adicionais. <\/p>\n<h3>Desempenho dos simuladores <\/h3>\n<p><img decoding=\"async\" alt=\"Simuladores de sistemas computacionais: o j\u00e1 familiar simulador multiplataforma e os desconhecidos pot\u00e1quicos e trilhas\" src=\"\/wp-content\/uploads\/2020\/07\/870ef9d5e311044059ace05571d607ba.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nComo mencionado anteriormente, o pr\u00f3prio processo de simula\u00e7\u00e3o de todo o sistema, ou seja, de todos os seus dispositivos, \u00e9 um empreendimento bastante demorado. Mesmo se realizarmos tudo isso em um n\u00edvel muito detalhado, como no microarquitetura ou l\u00f3gico, a execu\u00e7\u00e3o se tornar\u00e1 extremamente lenta. O n\u00edvel de instru\u00e7\u00f5es \u00e9 uma escolha adequada e permite que o sistema operacional e os programas sejam executados em velocidades suficientes para que o usu\u00e1rio tenha uma intera\u00e7\u00e3o confort\u00e1vel com eles. <\/p>\n<p>Aqui \u00e9 apropriado tocar no t\u00f3pico de desempenho dos simuladores. Normalmente, \u00e9 medido em IPS (instru\u00e7\u00f5es por segundo), mais precisamente em MIPS (milh\u00f5es de IPS), ou seja, o n\u00famero de instru\u00e7\u00f5es do processador executadas pelo simulador em um segundo. Ao mesmo tempo, a velocidade da simula\u00e7\u00e3o tamb\u00e9m depende do desempenho do sistema em que a simula\u00e7\u00e3o est\u00e1 sendo executada. Portanto, talvez seja mais correto falar sobre \"desacelera\u00e7\u00e3o\" (slowdown) do simulador em compara\u00e7\u00e3o com o sistema original. <\/p>\n<p>Os simuladores de plataforma completa mais comuns no mercado, como QEMU, VirtualBox ou VmWare Workstation, t\u00eam um bom desempenho. Para o usu\u00e1rio, pode at\u00e9 n\u00e3o ser percept\u00edvel que o trabalho est\u00e1 ocorrendo em um simulador. Isso acontece gra\u00e7as \u00e0 funcionalidade especial de virtualiza\u00e7\u00e3o implementada nos processadores, aos algoritmos de tradu\u00e7\u00e3o bin\u00e1ria e a outras quest\u00f5es interessantes. Tudo isso \u00e9 um tema para um artigo separado, mas, resumidamente, a virtualiza\u00e7\u00e3o \u00e9 uma capacidade de hardware dos processadores modernos que permite que os simuladores n\u00e3o simulem instru\u00e7\u00f5es, mas executem-nas diretamente no procesador real, desde que, claro, as arquiteturas do simulador e do processador sejam semelhantes. A tradu\u00e7\u00e3o bin\u00e1ria \u00e9 a convers\u00e3o do c\u00f3digo de m\u00e1quina convidado para o c\u00f3digo de m\u00e1quina hospedeiro e sua execu\u00e7\u00e3o subsequente no processador real. Como resultado, a simula\u00e7\u00e3o \u00e9 apenas um pouco mais lenta, de 5 a 10 vezes, e muitas vezes at\u00e9 funciona na mesma velocidade que o sistema real. Embora isso dependa de muitos fatores. Por exemplo, se quisermos simular um sistema com v\u00e1rias dezenas de processadores, a velocidade cair\u00e1 imediatamente v\u00e1rias dezenas de vezes. Por outro lado, simuladores como Simics, nas vers\u00f5es mais recentes, suportam hardware de hospedagem multiprocessador e paralelizam de forma eficaz os n\u00facleos simulados com os n\u00facleos do processador real. <\/p>\n<p>Falando sobre a velocidade da simula\u00e7\u00e3o microarquitetural, isso geralmente ocorre em ordens de magnitude inferiores, cerca de 1000 a 10000 vezes mais lento na execu\u00e7\u00e3o em um computador comum, sem simula\u00e7\u00e3o. E as implementa\u00e7\u00f5es no n\u00edvel de elementos l\u00f3gicos s\u00e3o ainda mais lentas. Portanto, em n\u00edvel de emula\u00e7\u00e3o, utilizam-se FPGA, o que permite aumentar significativamente o desempenho. <\/p>\n<p>O gr\u00e1fico abaixo mostra a depend\u00eancia aproximada da velocidade de simula\u00e7\u00e3o em rela\u00e7\u00e3o ao detalhamento do modelo. <\/p>\n<p><img decoding=\"async\" alt=\"Simuladores de sistemas computacionais: o j\u00e1 familiar simulador multiplataforma e os desconhecidos pot\u00e1quicos e trilhas\" src=\"\/wp-content\/uploads\/2020\/07\/72189338a6a0c78554118f180a297813.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Simula\u00e7\u00e3o de ciclo <\/h3>\n<p>\nApesar da baixa velocidade de execu\u00e7\u00e3o, os simuladores microarquiteturais s\u00e3o bastante comuns. A simula\u00e7\u00e3o dos blocos internos do processador \u00e9 necess\u00e1ria para simular com precis\u00e3o o tempo de execu\u00e7\u00e3o de cada instru\u00e7\u00e3o. Aqui pode surgir um mal-entendido \u2013 afinal, por que n\u00e3o programar o tempo de execu\u00e7\u00e3o de cada instru\u00e7\u00e3o? No entanto, um simulador assim funcionaria de maneira muito imprecisa, pois o tempo de execu\u00e7\u00e3o da mesma instru\u00e7\u00e3o pode variar de chamada para chamada. <\/p>\n<p>Um exemplo simples \u00e9 a instru\u00e7\u00e3o de acesso \u00e0 mem\u00f3ria. Se a c\u00e9lula de mem\u00f3ria solicitada estiver dispon\u00edvel no cache, o tempo de execu\u00e7\u00e3o ser\u00e1 m\u00ednimo. Se a informa\u00e7\u00e3o n\u00e3o estiver no cache (um \u2018cache miss\u2019), isso aumentar\u00e1 significativamente o tempo de execu\u00e7\u00e3o da instru\u00e7\u00e3o. Portanto, para simula\u00e7\u00e3o precisa, \u00e9 necess\u00e1rio um modelo de cache. No entanto, o modelo de cache n\u00e3o \u00e9 tudo. O processador n\u00e3o aguardar\u00e1 passivamente a obten\u00e7\u00e3o dos dados da mem\u00f3ria caso eles n\u00e3o estejam no cache. Em vez disso, ele come\u00e7ar\u00e1 a executar as pr\u00f3ximas instru\u00e7\u00f5es, escolhendo aquelas que n\u00e3o dependem do resultado da leitura da mem\u00f3ria. Isso \u00e9 chamado de execu\u00e7\u00e3o fora de ordem (OOO, out of order execution), necess\u00e1rio para minimizar o tempo de inatividade do processador. Considerar tudo isso ao calcular o tempo de execu\u00e7\u00e3o das instru\u00e7\u00f5es ajudar\u00e1 a modelar os blocos correspondentes do processador. Entre essas instru\u00e7\u00f5es que s\u00e3o executadas enquanto se aguarda o resultado da leitura da mem\u00f3ria, pode haver uma opera\u00e7\u00e3o de desvio condicional. Se o resultado da condi\u00e7\u00e3o n\u00e3o for conhecido no momento, o processador n\u00e3o interrompe a execu\u00e7\u00e3o, mas faz uma \u2018suposi\u00e7\u00e3o\u2019, realiza o desvio correspondente e continua a executar preventivamente as instru\u00e7\u00f5es a partir do ponto de desvio. Esse bloco, chamado de predictor de desvios, tamb\u00e9m deve ser implementado em um simulador microarquitetural. <\/p>\n<p>A imagem abaixo mostra os principais blocos do processador; n\u00e3o \u00e9 necess\u00e1rio conhec\u00ea-los, mas eles s\u00e3o apresentados apenas para ilustrar a complexidade da implementa\u00e7\u00e3o microarquitetural. <\/p>\n<p><img decoding=\"async\" alt=\"Simuladores de sistemas computacionais: o j\u00e1 familiar simulador multiplataforma e os desconhecidos pot\u00e1quicos e trilhas\" src=\"\/wp-content\/uploads\/2020\/07\/1248d47017346153a233d4c895635569.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nO funcionamento de todos esses blocos em um processador real \u00e9 sincronizado por sinais de clock especiais, de forma semelhante ao que ocorre no modelo. Esse tipo de simulador de microarquitetura \u00e9 chamado de simulador por ciclos (cycle accurate). Seu principal objetivo \u00e9 prever com precis\u00e3o o desempenho do processador em desenvolvimento e\/ou calcular o tempo de execu\u00e7\u00e3o de um programa espec\u00edfico, como um benchmark. Se os valores forem inferiores ao necess\u00e1rio, ser\u00e1 preciso revisar os algoritmos e os blocos do processador ou otimizar o programa. <\/p>\n<p>Como mostrado acima, a simula\u00e7\u00e3o por ciclos \u00e9 muito lenta, portanto, \u00e9 utilizada apenas na pesquisa de determinados aspectos do funcionamento do programa, onde \u00e9 necess\u00e1rio descobrir a velocidade real de execu\u00e7\u00e3o e avaliar o desempenho futuro do dispositivo cujo prot\u00f3tipo est\u00e1 sendo modelado. <\/p>\n<p>Para simular o restante do tempo de execu\u00e7\u00e3o do programa, usa-se um simulador funcional. Como ocorre essa utiliza\u00e7\u00e3o combinada na pr\u00e1tica? Primeiro, inicia-se o simulador funcional, onde o sistema operacional e tudo o que \u00e9 necess\u00e1rio para executar o programa em estudo s\u00e3o carregados. Afinal, n\u00e3o estamos interessados nem no pr\u00f3prio sistema operacional, nem nas etapas iniciais de inicializa\u00e7\u00e3o do programa, sua configura\u00e7\u00e3o, etc. Por\u00e9m, tamb\u00e9m n\u00e3o podemos ignorar essas partes e partir diretamente para a execu\u00e7\u00e3o do programa a partir do meio. Portanto, todas essas etapas preliminares s\u00e3o executadas no simulador funcional. Depois que o programa \u00e9 executado at\u00e9 o ponto de interesse, existem duas op\u00e7\u00f5es. Podemos substituir o modelo pelo simulador por ciclos e continuar a execu\u00e7\u00e3o. O modo de simula\u00e7\u00e3o que utiliza o c\u00f3digo execut\u00e1vel (ou seja, arquivos de programas compilados normais) \u00e9 chamado de simula\u00e7\u00e3o por execu\u00e7\u00e3o (execution driven simulation). Esta \u00e9 a forma mais comum de simula\u00e7\u00e3o. Existe tamb\u00e9m outra abordagem \u2013 a simula\u00e7\u00e3o baseada em trilhas (trace driven simulation). <\/p>\n<h3>Simula\u00e7\u00e3o baseada em trilhas <\/h3>\n<p>\nConsiste em duas etapas. Utilizando um simulador funcional ou em um sistema real, registra-se e grava-se em um arquivo o log das a\u00e7\u00f5es do programa. Esse log \u00e9 chamado de trilha (trace). Dependendo do que est\u00e1 sendo pesquisado, a trilha pode incluir instru\u00e7\u00f5es execut\u00e1veis, endere\u00e7os de mem\u00f3ria, n\u00fameros de portas e informa\u00e7\u00f5es sobre interrup\u00e7\u00f5es. <\/p>\n<p>O pr\u00f3ximo passo \u00e9 o \"replay\" da trilha, quando o simulador por ciclo l\u00ea a trilha e executa todas as instru\u00e7\u00f5es nela gravadas. No final, obtemos o tempo de execu\u00e7\u00e3o deste trecho de programa, al\u00e9m de v\u00e1rias caracter\u00edsticas desse processo, como a porcentagem de acertos no cache. <\/p>\n<p>Uma caracter\u00edstica importante do trabalho com trilhas \u00e9 a determinabilidade, ou seja, ao executar a simula\u00e7\u00e3o da maneira descrita acima, repetidamente reproduzimos a mesma sequ\u00eancia de a\u00e7\u00f5es. Isso permite, ao alterar os par\u00e2metros do modelo (tamanhos do cache, buffers e filas) e usando diferentes algoritmos internos ou ajustando-os, investigar como cada par\u00e2metro influencia o desempenho do sistema e qual op\u00e7\u00e3o oferece os melhores resultados. Tudo isso pode ser feito com o modelo do prot\u00f3tipo do dispositivo antes da cria\u00e7\u00e3o do prot\u00f3tipo de hardware real. <\/p>\n<p>A complexidade dessa abordagem reside na necessidade de prepara\u00e7\u00e3o pr\u00e9via do aplicativo e coleta da trilha, al\u00e9m do enorme tamanho do arquivo da trilha. Entre os pontos positivos, est\u00e1 o fato de que \u00e9 suficiente modelar apenas a parte do dispositivo ou plataforma de interesse, enquanto a simula\u00e7\u00e3o por execu\u00e7\u00e3o geralmente requer um modelo completo. <\/p>\n<p>Assim, neste artigo, examinamos as caracter\u00edsticas da simula\u00e7\u00e3o de plataforma completa, discutimos a velocidade de implementa\u00e7\u00f5es em diferentes n\u00edveis, simula\u00e7\u00e3o por ciclo e trilhas. No pr\u00f3ximo artigo, descreverei os principais cen\u00e1rios de uso dos simuladores, tanto para fins pessoais quanto do ponto de vista do desenvolvimento em grandes empresas.<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/auriga\/blog\/509294\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430\u0445 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0432 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435 \u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u0445 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430\u0445, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u043e \u043f\u043e\u043b\u043d\u043e\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e \u043f\u043e\u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0442\u0440\u0430\u0441\u0441\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u044b \u0432 \u043a\u0440\u0443\u0433\u0430\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u044b \u0432\u043e\u043e\u0431\u0449\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0431 \u0443\u0440\u043e\u0432\u043d\u044f\u0445 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":87137,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-87136","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430\u0445 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0432 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435 \u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u0445 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430\u0445, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u043e \u043f\u043e\u043b\u043d\u043e\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u0442\u0441\u044f.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/simulyatory-kompyuternyh-sistem-vsem-znakomyj-polnoplatformennyj-simulyator-i-nikomu-neizvestnye-potaktovyj-i-trassy\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u044b \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c: \u0432\u0441\u0435\u043c \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0439 \u043f\u043e\u043b\u043d\u043e\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0439 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0438 \u043d\u0438\u043a\u043e\u043c\u0443 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u043f\u043e\u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u0438 \u0442\u0440\u0430\u0441\u0441\u044b | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430\u0445 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0432 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435 \u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u0445 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430\u0445, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u043e \u043f\u043e\u043b\u043d\u043e\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u0442\u0441\u044f.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/simulyatory-kompyuternyh-sistem-vsem-znakomyj-polnoplatformennyj-simulyator-i-nikomu-neizvestnye-potaktovyj-i-trassy\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-07-03T23:42:40+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-03T23:42:40+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Simuladores de sistemas de computador: o bem conhecido simulador de plataforma completa e os desconhecidos simuladores por ciclo e de trilhas | ProHoster","description":"Na segunda parte do artigo sobre simuladores de sistemas de computador, continuarei a falar de forma simples e informativa sobre simuladores de computador, especialmente sobre simula\u00e7\u00e3o de plataforma completa, com a qual frequentemente nos deparamos.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/simulyatory-kompyuternyh-sistem-vsem-znakomyj-polnoplatformennyj-simulyator-i-nikomu-neizvestnye-potaktovyj-i-trassy","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u044b \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c: \u0432\u0441\u0435\u043c \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0439 \u043f\u043e\u043b\u043d\u043e\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0439 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0438 \u043d\u0438\u043a\u043e\u043c\u0443 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u043f\u043e\u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u0438 \u0442\u0440\u0430\u0441\u0441\u044b | ProHoster","og:description":"\u0412\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430\u0445 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0432 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435 \u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u0445 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430\u0445, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u043e \u043f\u043e\u043b\u043d\u043e\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u0442\u0441\u044f.","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/simulyatory-kompyuternyh-sistem-vsem-znakomyj-polnoplatformennyj-simulyator-i-nikomu-neizvestnye-potaktovyj-i-trassy","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-07-03T23:42:40+00:00","article:modified_time":"2020-07-03T23:42:40+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"87136","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 13:57:25","updated":"2022-09-27 17:57:48","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/87136","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=87136"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/87136\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/87137"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=87136"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=87136"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=87136"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}