Baixe o app para aproveitar ainda mais
Prévia do material em texto
Pra´tica de Memo´ria - Matriz Triangular Superior Michel Franc¸a Leal Universidade do Estado da Bahia (UNEB) Salvador - Bahia - Brasil {mfrancaleal@gmail.com} Resumo Esta pra´tica tem como objetivo enfatizar o conteu´do es- tudado em sala de aula sobre o uso dos principais compo- nentes de um computador, em especial a memo´ria principal, aliando te´cnicas de programac¸a˜o e outros recursos nativos do Linux como Vmstart GNUPlot. Para tal representac¸a˜o, foi escolhida a Matriz Triangular Superior para formar o ambiente do experimento. 1. Introduc¸a˜o Segundo Maziero(2009)(1) a memo´ria principal tem um papel importante para um sistema operacional, ainda se- gundo ele, ela define o espac¸o de trabalho onde abriga as th- reads, bibliotecas compartilhadas e canais de comunicac¸a˜o, atuando ainda como o nu´cleo do sistema operacional, atrave´s de suas estruturas e co´digos. Existe um emaranhado de compoentes em uma memo´ria, suas funcionalidades e componentes exigem do sistema opercaional um esforc¸o muito grande para gerencia´-la. Para que as operac¸o˜es de um computador sejam bem sucedidas e tenho um bom desepenho do hardware, e´ encessa´rio que o sistema operacional dedique boa parte dos seus recursos com a gereˆncia da memo´ria principal. 2. Esturutura 2.1. A matriz Para essa pra´tica, foi escolhida a Matriz Triangular Su- perior como estrutura a ser criada e impressa para avaliar o desempenho do computador, contabilizando o uso do Pro- cessador e Memo´ria Principal. A Matriz Triangular Superior e´ uma matriz quadrada(2) que onde os elementos que esta˜o na parte abaixo da diago- nal principal sa˜o nulos, isso e´, se for zero todo elemento Mij, onde i e´ maior que j. A figura 1 mostra um exemplo de uma matriz triangular superior do tipo 5 x 5: Figura 1: Exemplo de Matriz Triangular Superior 5 x 5 2.2. O ambiente de teste Para esse experimento, foi utilizado o Sistema Opera- cional Ubuntu 16.04 x64 cuja base e´ Unix. Este sistema opercional esta´ instalado em uma Virtual Machine com as seguintes configurac¸o˜es: Memo´ria Principal ITEM VALOR MemTotal 4645308 MemFree 1688344 MemAvailable 2758616 Buffers 186512 Cached 1083572 Tabela 1: Dados sobre a memo´ria principal Processador ITEM VALOR vendor id GenuineIntel cpu family 6 model name Intel(R) Core(TM) i3-3250 CPU @ 3.50GHz cpu MHz 3500.000 cache size 3072 KB Tabela 2: Dados sobre o processador 2.3. Os co´digos O co´digo foi escrito na linguagem C e consiste em re- ceber as dimenso˜es da Matriz, cria´-la e em seguida fazer a impressa˜o de sua estrutura. Vejamos trechos do co´digo: 2.3.1 Criac¸a˜o da Matriz 1 do ub l e ∗ c r i a M a t r i x ( do ub l e ∗mat r ix , i n t l i n h a , i n t c o l u n a ) { 2 3 i n t ordem = c o l u n a + l i n h a ; 4 5 s r a n d ( t ime (NULL) ) ; 6 f o r ( i n t i =0 ; i<l i n h a ; i ++){ 7 f o r ( i n t j =0 ; j<c o l u n a ; j ++){ 8 i f ( j < i ) 9 m a t r i x [ i ∗ordem+ j ] = 0 ; 10 e l s e 11 m a t r i x [ i ∗ordem+ j ] = ( d ou b l e ) (1+ rand ( ) % ( 5 0 ) ) ; 12 } 13 } 14 r e t u r n m a t r i x ; 15 } Listing 1: Cria Matriz Triangular Superior 2.3.2 Impressa˜o da Matriz 1 vo id impr imeMat r ix ( d ou b l e ∗mat r ix , i n t l i n h a , i n t c o l u n a ) { 2 3 i n t o r d e r = c o l u n a + l i n h a ; 4 f o r ( i n t i = 0 ; i < l i n h a ; i ++) { 5 p r i n t f ( ” | ” ) ; 6 f o r ( i n t j = 0 ; j < c o l u n a ; j ++) { 7 p r i n t f ( ” %.0 f | ” , m a t r i x [ i ∗ o r d e r + j ] ) ; 8 } 9 p r i n t f ( ”\n ” ) ; 10 } 11 } Listing 2: Impressa˜o da Matriz Triangular Superior 2.3.3 Arquivos .sh, .eps, .txt. A estrutura de compilac¸a˜o, execuc¸a˜o, gravac¸a˜o de dados e gerac¸a˜o de co´gidos esta´ concentrada no conjunto de arqui- vos disponibilizado pelo prof. Murilo Boratto(3) em seu site. Uma vez com o co´digo programado e adaptac¸o˜es feitas, basta executar via linha de comando o arquivo START.sh que em por sua vez executa atrave´s do comando bash o arquivo scriAwk.sh que em cascata executa o co´digo responsa´vel por criar e impirmir a matriz, armazena em aquivos tipo texto as informac¸o˜es de uso de memo´ria e processador, as informac¸o˜es geradas pelo co´digo principal que ficam armazenadas noa rquivo file.data e os respectivos gra´ficos de usdo de memo´ria e processador. 2.4. VMStat Nesta pra´tica, a fim de obter informac¸o˜es sobre a utilizac¸a˜o e estado da memo´ria e do processador(4), foi utilizado o comando VMStat. Esse comando relata es- tatı´sticas sobre encadeamentos do kernel na fila de execuc¸a˜o e de espera, como tambe´m, paginac¸a˜o de memo´ria, interrupc¸o˜es, chamadas do sistema, comutadores de con- texto e atividade da CPU. 2.5. GNUPlot GNUPLOT e´ um programa para gerar gra´ficos(5), ele e´ de certa forma interativo, mas tal interac¸a˜o so´ e´ possı´vel atrave´s da linha de comando. E´ possı´vel gerar gra´ficos de func¸o˜es em uma o duas varia´veis que sa˜o definidas dentro dele ou ate´ fazer chamadas de dados externos. As prinicpais vantagens de usar GNUPlot para a platogem de dados em um gra´fico e´ a fa´cil utilizac¸a˜o e integrac¸a˜o da ferramenta e a alta qualidade dos gra´ficos gerados. 3. Resultados 3.1. Matriz Triangular Superior Na figura 2 veremos o resultado da Matriz Triangular Superior apo´s a execuc¸a˜o com as dimenso˜es 8 x 8: Figura 2: Execuc¸a˜o do co´digo da Matriz Triangular Supe- rior 8 x 8. Os valores foram gerados de forma aleato´ria(6) uti- lizando o trecho de co´digo: matrix[i*ordem+j] = (1+rand()% (50)); que gera nu´meros de 1 ate´ 50. 3.2. Uso da CPU Os testes foram feitos em um lac¸o de repetic¸a˜o cujo nu´mero de repetic¸a˜o foi igual a 1000 com incremento de 10 em 10, com podemos ver no trecho do co´digo do arquivo scriAwk.sh: 1 f o r ( ( i = 1 0 ; i <= 1000 ; i +=10) ) 2 do 3 . / $1 ” $ i ” ” $ i ” >> f i l e . d a t a 4 echo ” $ i x $ i ” 5 done Listing 3: Lac¸o de repetic¸a˜o Atribuindo essa tarefa ao computador, criar e imprimir a matriz 100 vezes, obtemos os seguintes dados do compor- tamento e estado da CPU durante o processo: 10 20 30 40 50 60 70 80 90 0 2 4 6 8 10 12 14 16 18 Us o CP U (em % ) Tempo(segundos) Grafico uso de CPU durante a criacao da matriz triangular superior Uso de CPU com Programa Figura 3: Gra´fico uso de CPU durante a criac¸a˜o da matriz Na figura 3 pode-se observar um discreto crescimento no uso da CPU, o crescimento do uso acontece porque no loop, como vimos, ha´ um incremento que aumenta a dimensa˜o da matriz, o que acarreta um maior uso da CPU. Como o processador utilizado tem dois nu´cleos e e´ de certa forma considerado de u´ltima gerac¸a˜o, essa execuc¸a˜o na˜o causou muito impacto em sua permomance. 3.3. Uso da memo´ria principal Sujeita a`s mesmas condic¸o˜es impostas a` CPU, a memo´ria principal teve seu comportamento monitorado e os dados projetados em um gra´fico como poderemos ver na figura 4: 2.25x106 2.3x106 2.35x106 2.4x106 2.45x106 2.5x106 2.55x106 0 2 4 6 8 10 12 14 16 18 Us o m em or ia (e m Kb yte s) Tempo(segundos) Grafico de memoria livre durante a criacao da matriz triangular superior Uso Memoria com programa Figura 4: Gra´fico de memo´ria livre durante a criac¸a˜o da matriz Na figura 4, diferente da figura 3, o gra´fico mostra uma diminuic¸a˜o na quantidade de memo´ria livre. Isso acontece de forma inversa ao que vimos na figura 3, quanto maior a complexidade do problema, maior a necessidade de mais memo´ria, diminuindo assim a quantidade de meo´ria free. 3.4. Tempo de execuc¸a˜o Ale´m de monitorar o uso da memo´ria principal e da CPU, utilizando a ferramenta VMStat foi monitorado e re- gistrado o tempo me´dio de execuc¸a˜o dos loops sobre o co´digo daMatriz Triangular Superior. Pode-se ver a plo- tagem dos dados no gra´fico abaixo: 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0 200 400 600 800 1000 1200 1400 1600 1800 2000 Te m po (s eg un do s) Ordem N x N Calculo do tempo medio de criacao de matrizes trianguar superior MTS Figura 5: Ca´lculo do tempo me´dio de criac¸a˜o de matrizes A figura 5 deixa claro que quanto maior a dimensa˜o da matriz, maior o tempo de execuc¸a˜o. 4. Conclusa˜o Pode-se notar o quanto abragente e´ a linguagem C e o quanto eficaz e ciu´rgico e´ o Sistema Operacional Linux. A junc¸a˜o desses dois permite que se realize tarefas de baixa, me´dia e alta complexidade, oferecendo recursos capazes de atender a uma gama de necessidades dentro das realidades da tecnologia da informac¸a˜o. O monitoramento de comportamento e estado de um com- putador sempre foi uma grande preocupac¸a˜o por parte dos arquitetos de softwares, prever situac¸o˜es ou evitar gargalos e´ fundamental para a criac¸a˜o de um software. Foi possı´vel notar atrave´s dessa pra´tica, muito simples, que os recursos utilizados oferecem um aporte ideal para captar e visualizar dados que em muitos casos ficam ocultos para o usua´rio. Refereˆncias [1] C. A. Maziero. (2008) Sistemas operacionais 2 - gereˆncia de tarefas. [Online]. Available: http://www.ppgia.pucpr.br/maziero [2] A. G. Ribeiro. Matriz triangular. [Online]. Available: http://mundoeducacao.bol.uol.com.br/matematica/matriz- triangular.htm [3] M. Boratto. Pra´ticas - memo´ria. [Online]. Available: http://muriloboratto.com.br [4] I. K. Center. Vmstat. [Online]. Availa- ble: http://www.ibm.com/support/knowledgecenter/pt- br/vmstat.html [5] U. F. do Rio Grande do Sul. Gnuplot. [Online]. Available: http://fiscomp.if.ufrgs.br/index.php/Gnuplot [6] C. Progressivo.net. Gerando nu´meros aleato´rios em c: rand, srand e seed. [Online]. Availa- ble: http://www.cprogressivo.net/2013/03/Como- gerar-numeros-aleatorios-em-C-com-a-rand-srand-e- seed.html
Compartilhar