6 de dez. de 2010

Gerenciamento de Memória Virtual (Linux)

Gerenciamento de Memória Virtual (Linux)

Em uma pesquisa feita recentemente sobre o método de gerenciamento de memória virtual, foi feita o resumo abaixo, não leve ele como uma referência didática e sim como um ideia de como é feito o gerenciamento, como exemplo dele, temos o sistema operacional Linux.
Para quem não sabe e lembrando quem já sabe, o gerenciamento da memória é o que torna o sistema operacional mais rápido e funcional.

Memória Virtual

Quando os programas tornaram-se muito grandes para a memória, a solução foi dividir os programas em pedaços menores e está técnica ficou conhecida como overlay, porém, somente o programar podia separar as partes, então Fotheringham em 1961 inventou o método de memória virtual, onde o sistema operacional é quem gerência a memória virtual – uma evolução do overlay - sua essência se baseia em que o tamanho do programa, dos dados e da pilha, juntos poderia exceder a quantidade da memória física disponível, no sistema em uso a parte principal ficava na memória principal (RAM) e as outras em disco (ROM).

Um exemplo usual para entender esse processo é, um programa de 16 Mb pode ser executado em uma máquina de 4 Mb, para tal feito é foi necessário dividir o programa em quatro partes de 4 Mb cada e executar cada parte quando for mais necessário.


A memória virtual também pode trabalhar em um sistema de multiprogramação, com pedaços de muitos programas na memória simultaneamente. Enquanto um programa está esperando parte dele próprio ser trazida para a memória, ele fica esperando a E/S e não pode executar, então, a CPU pode ser dada a outro processo, assim como em qualquer outro sistema de multiprogramação (Tanenbaum). Ainda existem algumas técnicas implementadas dentro da memória virtual que serão discutidas.


Paginação, Tabelas de Páginas e Multiníveis e Memória Associativa ou TLB


A maioria dos sistemas com memória virtual utiliza uma técnica denominada paginação. Em qualquer computador existe um conjunto de endereços de memória que os programas podem gerar ao serem executados por do uso de indexação, de registradores-base, registradores de segmento ou outras técnicas. Esses endereços são denominados endereços virtuais e constituem o espaço de endereçamento virtual, existe uma exceção para computadores com pouca memória e seus endereços virtuais são iguais aos físicos, em computadores com memória virtual, os endereços não vão direto para o barramento e sim para a MMU (Memory Management Unit – unidade de gerenciamento de memória), que mapeia endereços virtuais em endereços físicos.

O espaço de endereços virtuais é dividido em unidades chamadas páginas e o espaço de memória física é dividido em unidades chamadas quadros de página, de mesmo tamanho das páginas. A MMU tem uma tabela que indica para cada página, qual o quadro de página que corresponde à mesma. Se o processador tenta acessar o endereço 0, a MMU verifica que isto corresponde ao primeiro endereço da primeira página, verifica então que essa primeira página está alocada no terceiro quadro de página. Converte então esse endereço para 8192 (decimal) e envia o endereço convertido para a memória (nem a memória e nem o processador precisam ficar sabendo da existência de paginação). Esse processo pode ser melhor analisado observando a Figura 1.


Figura 1 – Processo de gerenciamento de memória, utilizando o método de memória virtual.
O modelo acima descreve o tratamento mais simples seria uma longa tabela de página com uma entrada por página (Essas entradas são conhecidas como entradas de tabela de páginas ou PTE - page table entries). No entanto, esta solução resultaria em uma tabela de página que seria muito grande para ser encaixada na MMU, dado que tem que ser na memória. A solução, portanto são tabelas de páginas de multiníveis. Desse modo, à medida que o tamanho dos processos crescem, novas páginas são alocadas e, quando o são, a parte da memória associada à tabela de página é preenchida. Esse método de gestão de memória que permite que o espaço de armazenamento seja não contíguo.

A paginação é suportada por hardware ou por uma combinação do hardware com o software, dividindo-se a memória física em blocos de tamanho fixo, chamados frames, cujo tamanho é uma potência de 2. A memória lógica é dividida em blocos do mesmo tamanho, as chamadas páginas.

Um endereço virtual é dividido em 5 campos: diretório de páginas (PGD), diretório superior de páginas (PUD), diretório intermediário de páginas (PMD), tabela de páginas (PTE) e deslocamento (offset). A arquitetura x86 possui um espaço de endereçamento de 32 bits; quando são utilizadas páginas de 4 KB (o padrão) o PUD e o PMD não são utilizados; o PGD e o PTE usam 10 bits cada, e o deslocamento usa 12 bits.




Figura 2 – Tabela de páginas de multiníveis.
Outro ponto importante é que a tradução de endereços virtuais para físicos tem de ser rápida. Isso requer que a tradução seja feita, tanto quanto possível no hardware. Como não é nada prático colocar a tabela de página por completo na MMU, a MMU apresenta o que é chamado de TLB (Translation Lookaside Buffer) ou Memória Associativa.

A MMU da CPU armazena o mapeamento das tabelas de página mais recentemente usadas. Esse processo é chamado Translation Lookaside Buffer (TLB). Quando um endereço virtual precisa ser traduzido em um endereço físico, a busca é feita inicialmente na TLB. Se a requisição for encontrada, o endereço físico é retornado e o acesso à memória continua. No entanto, se não foi encontrado, a CPU gera uma page fault (falha na página) e o sistema operacional terá um interrupt handler (Manipulador de Instruções) para lidar com elas.

O TLB é implementado da seguinte forma:
  • A tabela de páginas é guardada na memória principal;
  • O PTBR (Page-table base register) aponta para a tabela de páginas;
  • O PRLR (Page-table length register) indica o tamanho da tabela de páginas;
  • Qualquer acesso a dados/instruções requer 2 acessos à memória: 
  • Um para a tabela de páginas;
  • Outro para os dados/instruções;
  • O problema dos dois acessos à memória pode ser resolvido através duma cache de pesquisa rápida, designada por memória associativa ou TLBs;


Aplicação da Memória Virtual e Comentários

O Linux é um sistema operacional com memória virtual paginada, isto quer dizer que podemos ter programas em execução cujo tamanho é maior que a memória física disponível para executá-los. O sistema operacional passa a ser responsável por manter na memória as partes dos programas efetivamente em uso, deixando o resto no disco rígido. Por exemplo, um programa de 16MB pode ser executado em uma máquina de 4MB de memória, com o sistema operacional selecionando os 4MB do programa que deverão ser mantidos na memória a cada instante, com as suas partes sendo copiadas do disco rígido para a memória e vice-versa, quando necessário. A utilização da memória virtual torna o computador mais lento, embora faça com que ele aparente ter mais memória RAM do que realmente tem.

No Linux, a memória funciona com prioridade para processos que estão em execução. Quando um processo termina, havendo espaço na memória, o sistema mantém resíduos desse processo na memória para que uma possível volta a processo seja mais rápida. Caso essa memória RAM esteja lotada com processos que estão em execução, faz-se uso da memória SWAP (troca).

Cada processo do Linux, em uma máquina de 32 bits, dispõe de 3GB de espaço de endereçamento virtual para si próprio, com 1GB restante reservado para suas tabelas de páginas e outros dados do núcleo. O 1GB do núcleo não é visível quando o processo executa no modo usuário, mas torna-se acessível quando o processo faz uma chamada ao núcleo. O espaço de endereçamento é gerado quando o processo é criado e sobrescrito em uma chamada ao sistema.

A paginação fornece uma forma de se conseguir grandes espaços de endereçamento lineares em uma quantidade finita de memória física.

22 de nov. de 2010

"Ser ou não ser, eis a questão"

Vou deixar aqui um trecho de motivação para você!
O texto foi retirado do blog do Miguel Almeida.

Hunter S. Thompson (1937-2005), via Schneier:
Segurança ... o que significa esta palavra em relação à vida como a conhecemos hoje? Para a maior parte dos casos, significa estabilidade e liberdade de preocupações. Diz-se ser o fim que todos os homens se esforçam para alcançar, mas será a segurança um objectivo utópico ou será outra palavra para rotina?
Leia o post completo, clicando aqui.
Repito não deixe de ler!!

20 de nov. de 2010

Você é brasileiro ou brasiliano?

E ai pessoal.. ou você.. blz?

Nessa semana me deparei com uma pergunta muito diferente e curiosa no twitter, postada por @StephenKanitz: "Você é brasileiro ou brasiliano?". Resolvi ler e por sinal é um artigo super interessante e genial do STEPHEN KANITZ. Agora vou fazer a mesma pergunta para você e você deve estar se perguntando, mas o que é "brasiliano", bom vou deixar o texto genial para você compreenderem esse pensamento.

Por 500 anos mentiram para nós. Esconderam um dado muito importante sobre o Brasil. Disseram-nos que éramos brasileiros. Que éramos cidadãosbrasileiros, que deveríamos ajudar os outros, pagando impostos sem reclamar nem esperar muito em troca. Esconderam todo esse tempo o fato de que o termo brasileiro não é sinônimo de cidadania, e sim o nome de uma profissão. Brasileiro rima com padeiro, pedreiro, ferreiroBrasileiro era a profissão daqueles portugueses que viajavam para o Brasil, ficavam alguns meses e voltavam com ouro, prata e pau-brasil, tiravam tudo o que podiam, sem nada deixar em troca. 


Continue lendo clicando aqui... 

2 de nov. de 2010

Novas edições do Stay Safe, polêmica Stuxnet e possível Cyberwar!

Desde a última postagem muitas coisas aconteceram, vou tentar passar um pouco das novidades para todos,  como podcast e alguns assunto polêmicos.

Começando pela galera do Stay Safe Podcast:

19º Edição – Thiago Bordini, Jordan Bonagura e Christophe De La Fuente
http://www.staysafepodcast.com.br/?p=280

18º Edição – Thiago Bordini e Jordan Bonagura
http://www.staysafepodcast.com.br/?p=269

17º Edição – Thiago Bordini, Jordan Bonagura e Cleber Brandão
http://www.staysafepodcast.com.br/?p=262

16º Edição – Thiago Bordini, Jordan Bonagura e Filipe Balestra
http://www.staysafepodcast.com.br/?p=256

15º Edição – Thiago Bordini, Jordan Bonagura e Carol Bozza
http://www.staysafepodcast.com.br/?p=198

14º Edição – Thiago Bordini e Jordan Bonagura
http://www.staysafepodcast.com.br/?p=191

13° Edição - Thiago Bordini, Jordan Bonagura e Wagner Elias
http://www.staysafepodcast.com.br/?p=184

Thiago Bordini, Jordan Bonagura e seus convidados estão fazendo um excelente trabalho para cena brasileira de segurança da informação, divulgando informação, debatendo os principais assuntos e mostrando o quão amplo é essa área, devido as experiências de cada convidado. Vale apena acompanhar esse podcast.

Cyberwar e StuxNet

Hoje no dia-a-dia da midia que acompanho tem se dito muito sobre Cyberwar e sobre o vírus que talves entrou para história, pelo seu jeito de agir, deixando o foco que são máquinas finais (Usuário) fazendo fraudes, roubos de dados e outros aspectos voltados para roubos e indo para uma área industrial com outros objetivos. A symantec divulgou um pdf que explica como o Stuxnet funciona (Clique aqui e baixe o pdf).
A partir desse ponto os países começaram a mobilizar equipes para um possível cyberwar. Para uma melhor leitura sobre esse assunto polêmico, deixo os seguintes links:

Stuxnet Worm et al: As defesas
O futuro depois da Stuxnet Worm
www.google.com

Se você pesquisar no Google, vai achar muita coisa já escrita sobre o assunto.

O que eu acho?
Preparem seus Firewalls/IDS/IPS/Proxy e o que mais tiver e atualize todos os programas e o mais importante prepare seu conhecimento e busque mais, porque vai ser sua melhor ferramenta! Brincadeira...

Por enquanto é isso!
[]'s

15 de jul. de 2010

StaySafe podcast e revista

Depois de muito atraso.. voltando a postar nesse humilde blog.
Bom.. desde a última postagem já saíram duas edições do stay safe podcast. Ouçam:

10° Edição:
http://www.staysafepodcast.com.br/?p=144

11° Edição:
http://www.staysafepodcast.com.br/?p=161

12° Edição:
http://www.staysafepodcast.com.br/?p=168

Eles também lançaram uma revista, muito boa. Todo conteúdo em português que ajuda a divulgar o  conhecimento aqui em nosso país e para outros que tenham o mesmo idioma. Eu dei uma lida em alguns matérias e está muito bom o conteúdo por ser a primeira edição. Agora só falta melhorar no design e isso vem com o tempo.

1° Edição da Revista StaySafe:
http://www.staysafepodcast.com.br/?page_id=44

Comentando sobre revistas de SI eu e meu amigo Anarkiabr fizemos um tópico no fórum-invaders e deixamos algumas dicas:

Revistas e zines gratuitas sobre Segurança e Redes

e... não para de chover e a três dias em São Paulo... ohhh blz!

14 de jun. de 2010

8° e 9° Edição do Stay Safe Podcast

E ai leitores do Blog, não deve ter nenhum.. tudo bem, algum dia alguém verá esse tópico. :S

Bom, estou meio atrasado com o lançamento de notícias, deve ser o tempo, a preguiça ou a falta de compromisso, porém, com o tempo vou me adequando a isso.Enfim, vamos ao que interessa!

8° Edição - Thiago Bordini, Jordan Bonagura e Bruno (mphx2)

Para baixar e saber os temas que vão ser tratados, segue o link:
http://www.staysafepodcast.com.br/?p=130

Nesta oitava edição foi convidado o Bruno, trabalha como profissional de pentest pela Trustwave no spiderlabs - O cara é fera!! - , foi um podcast que como os anteriores faltou tempo para trabalhar mais os assuntos de SI - que não são poucos - particularmente achei achei excelente, mesmo ficando algumas dúvidas no ar. Foi trabalhado a parte de como é um pentest, como ele tem que agir no seu dia-a-dia, sobre as diversidades que podem ser encontrada,s onde um profissional pode ter uma visão diferente do outro tornando o trabalhar mais eficaz. Falou sobre as ferramentas que ele e a empresa que trabalhar usam - ouçam, muitos como eu, inesexperientes na área vão ficar motivados em aprender sobre open soucer - muito interessante. Nossa tem muita coisa interessante na oitava edição, então não percam mais tempo..cliquem no link que divulguei acima e ouçam!

9° Edição - Thiago Bordini, Jordan Bonagura e Willian Caprino
http://www.staysafepodcast.com.br/?p=136

Essa eu ainda não ouvi, mas daqui a pouco vou ouvir!
Willian Caprino, um cara FODA na área, integrando de i shot the sheriff, bom vamos ver... deve estar muito bom!!!!!!

Abraços galera!!
=p

2 de jun. de 2010

7° Edição do Stay Safe podcast

Stay Safe é um podcast sobre segunrança da informação, foi criado em meados desse ano (2010) por Jordan Bonagura e Thiago Bordini. Eles tem trazido convidados de peso e nessa 7° Ed. o escolhido foi o Gustavo Scotti. Bom agora baixem e ouçam os anteriores.

Stay Safe PodCast: http://www.staysafepodcast.com.br/

7° Ed.: http://www.staysafepodcast.com.br/?p=125

Aguardando a 8° Ed. que já foi gravada!
Para quem não ouviu, tem um participante que entra depois do break!
Ficou muito bom essa edição.

8 de mai. de 2010

Ataque à rede do Google afetou sistema 'Gaia' de senhas

Administrador de senhas da empresa estava  entre as informações roubadas pelos ataques que supostamente partiram  da China em janeiro.


Entre as informações da rede do Google que foram acessadas durante ciberataques  supostamente vindos da China, em janeiro deste ano, estava o  sistema de administração de senhas chamado Gaia, que permite o  gerenciamento de senhas para diversos serviços do Google. A notícia foi  divulgada pelo jornal The  New York Times na tarde de segunda-feira (19/4), citando uma  fonte anônima.

O software ainda é usado pelo Google, mas foi  discutido publicamente uma única vez, durante uma conferência há alguns  anos, diz a fonte ao jornal.

Aparentemente, as senhas de usuários  do webmail Gmail não foram perdidas, mas há uma pequena possibilidade  de que os invasores que tiveram acesso ao software roubado busquem  vulnerabilidades que o Google ainda não conhece.

O porta-voz do  Google, Jay Nancarrow não comentou a respeito do post  publicado pelo Google em janeiro deste ano sobre a suspeita  da origem dos ataques ter partido da China. No post, o Google comentou  sobre a invasão e suas preocupações com a censura à internet chinesa,  além de ter anunciado que iria interromper a censura de seu sistema de  buscas naquele país. Atualmente, o buscador está hospedado em Hong Kong,  onde conteúdos políticos não são censurados pelo firewall do governo.

O  ataque que afetou a rede do Google e mais 33 empresas teve início  quando um funcionário da subsidiária do Google na China clicou em um  link malicioso enviado via comunicador instantâneo, afirma reportagem do  NY Times. Desta forma, o invasor conseguiu acessar com computador do  funcionário e, em seguida, uma base de software usada por  desenvolvedores no escritório do Google, na Califórnia.

Os  invasores também tiveram acesso a um diretório interno do Google chamado  Moma, que armazena informações sobre tarefas de trabalho de cada  funcionário da companhia, disse a fonte anônima ao jornal.

Inaguração

Prazer a todos,
O nome não tem muito haver com o conteúdo a ser postado. A primeira coisa que vem a cabeça de você é exploit, não será esse o meu objetivo, quem sabe no futuro?!
Vou tentar postar algumas vezes por semana, os assuntos a serem tradados aqui vão desde programação até textos filosóficos ou humor! :S Confuso não?! Mudei do Wordpress para o blogspot.
Enfim, é isso aew.. vamo nessa!
^^