|
Mounter
|
 |
« : Setembro 29, 2007, 09:35:37 » |
|
Olá!
Vou aqui falar um pouco sobre o funcionamento da memória do processador da Intel 80x86!
A memória do processador pode funcionar de dois meios: segmentos e paginada. Esses dois tipos de memória vou explicar nas próximos tópicos e qualquer duvida que tiverem usem essa seção para perguntas e respostas...
Memória Segmentada
Podemos definir a memória segmentada como a divisão da memória em regiões, cada região definindo o que está contido naquela área. Por exemplo, temos a área de código, onde fica concentrada o código do programa em execução; área de dados, onde estão concentrados os dados do programa; área de pilha, onde se encontra os dados da pilha do usuário.
Essas regiões podem crescer conforme feito o uso da memória, se a pilha crescer para o seu limite, então será gerado um erro para o núcleo que poderá aumentar o tamanho da área.
Os registradores da CPU que controlam o local dessas áreas são CS, DS, ES, SS, FS, GS e temos também os registradores bases IP, BP, SP, DX, DI, SI. Podendo formar pares como CS:IP, DS:DX, etc. Isso nos processadores 8086, no X86 são os registradores estendidos EIP, EBP, ...
A GDT (Global Descriptor Table) é onde o processador X86 localiza as informações dos segmentos, podendo haver até 8192 segmentos e cada LDT (Local Descriptor Table) possui 8 bytes. A LDT é um dos descritores da tabela, o primeiro descritor deve ser sempre 0 (senão o computador reinicia). Se CS for igual a 8 então quer dizer que ela aponta para a entrada 1 da GDT e assim por diante...
Memória Página
A memória páginada é muito comumente usada para se fazer swap dos programas e a virtualização da memória, com a capacidade de dar a cada programa 4GB (virtuais) aos programas. E é nessa virtualização da memória que entra o swap, o swap é a ação de mover um pedaço da memória (4KB no x86) para o disco e do disco a memória. Para fazer essa troca existem vários algoritmos que podem ser usados pelo núcleo (poderemos escolher um ou mais de um deles).
O processador controla essa memória através de uma estrutura de dados formada por um diretório (4Bytes por entrada) e podendo ter 1024 entradas. Cada entrada mapeia um tabela com 1024 entradas (4Bytes cada). Cada tabela pode mapear até 4MB da memoria, então 1024 * 4MB = 4GB sendo este o total que o processador pode suportar de memória.
Memória paginada e virtual
Podemos combinar as 2 técnicas, fornecendo ao programa paginação de segmentos.
Eu resumi um pouco neste tópico como funciona a memória, mas provavelmente eu irei melhora-lo mais, como eu não sou bom em textos ainda, e irei provavelmente por-lo na Wiki do site!
Comentem!
|
|
|
|
« Última modificação: Outubro 02, 2007, 09:45:08 por btox »
|
Registrado
|
|
|
|
|
gnomo
|
 |
« Responder #1 : Outubro 01, 2007, 07:43:31 » |
|
Quais seguimentos devem ser declarados basicamente para multitarefa com TSS ?
CODE32 DATA32 TSS0 (ring0) TSS3(usuário)
com esses ja daria um chá ?
|
|
|
|
|
Registrado
|
|
|
|
|
gnomo
|
 |
« Responder #2 : Outubro 01, 2007, 07:48:23 » |
|
CODE32 (user mode) DATA32 (user mode)
e um seguimento de pilha... xD
|
|
|
|
|
Registrado
|
|
|
|
|
gnomo
|
 |
« Responder #3 : Outubro 01, 2007, 07:50:20 » |
|
tipo... pelo fato de ser autodidata deixo passar coisas basicas como essas, ficando duvidas, espero tirá-las aqui ^^
não adianta nada eu saber fazer um driver VGA, floppy ou etc ou etc se ainda tenho duvidas "bestas" como essa, por isso q to expondo aqui agora, espero ser ajudado! vlw galera!
|
|
|
|
|
Registrado
|
|
|
|
|
Mounter
|
 |
« Responder #4 : Outubro 01, 2007, 09:14:48 » |
|
Eu sei que o escrevi é bem um resumo e nem foi revisado... Mas foi mais por querer tirar duvidas que eu o criei...
Quanto ao segmentos inicialmente pode ser somente os segmentos de códigos, dados e TSS para o núcleo e para o usuario somente código e dados! A questão da multitarefa ficaria com o núcleo que salva e carrega os dados! Mas qualquer coisa voi pesquisar aqui e responder assim que possível.
T+
|
|
|
|
« Última modificação: Outubro 02, 2007, 09:43:57 por btox »
|
Registrado
|
|
|
|
|
|
|
btox
|
 |
« Responder #6 : Outubro 02, 2007, 09:49:53 » |
|
Gnomo seria muito bom para a comunidade.
|
|
|
|
|
Registrado
|
"Poderia viver recluso numa casca de noz,e me considerar rei do espaço infinito"
System:Slackware 11 kernel version:2.4 Hardware:P4 2.4;512 mb ram; ==================== Btox simple geek life style!!
|
|
|
|
gnomo
|
 |
« Responder #7 : Outubro 03, 2007, 07:33:03 » |
|
vou ver se "arrumo" onde escanear, n tenho escaner! :S
|
|
|
|
|
Registrado
|
|
|
|
|
Mounter
|
 |
« Responder #8 : Outubro 03, 2007, 09:43:03 » |
|
Não seria mais facil ver se tem um ebook e disponibilizar um link aqui?
|
|
|
|
|
Registrado
|
|
|
|
|
|
TaSK_ZoMBiE
OS Newbie
Karma: 0
Mensagens: 17
|
 |
« Responder #10 : Novembro 05, 2008, 12:21:51 » |
|
Esse livro eu o encontrei na faculdade. É muito bom, e destinado a users que já estão calejados pela linguagem...Esse é um dos livros que tem mais de 20 anos e pode ser escaniado sem maiores complicações.
|
|
|
|
|
Registrado
|
|
|
|
|