Gerenciamento de Memória (Parte 1) | Entendendo Back-end para Iniciantes (Parte 5)
ฝัง
- เผยแพร่เมื่อ 26 ส.ค. 2024
- Eu disse no episódio anterior que não sabia se ia falar sobre Gerenciamento de Memória, mas acho que não dá pra terminar a série e não falar disso. Então hoje vamos escovar bits um pouco. Como a série é pra iniciantes, vale revisitar um pouco sobre representações binárias e hexadecimal e entender mais sobre como o computador e seus programas enxergam essa tal de "memória".
Hoje quero explicar como os principais alocadores de memória do Linux funcionam e ensinar o que são os principais desafios que envolvem o gerenciamento de memória. Tudo isso vai ser importante pra semana que vem que vou explicar sobre garbage collectors.
Erratas:
* aos 11:39 min o áudio fica ruim por 1 minuto. Eu gravo o áudio num gravador externo e mantenho o áudio da câmera pra sincronizar. Mas meu gravador parou nesse minuto e fiquei só com o áudio da câmera, por isso que a qualidade cai, mas é só 1 minuto.
* a 26:50 min aparece um typo "Stacjk" que na verdade é "Stack"
Links
* The 640K memory limit of MS-DOS (www.xtof.info/...)
* The difference between booting MBR and GPT with GRUB (www.anchor.com...)
* How Linux system boots up? ( / how-linux-system-boots-up )
* Rebasing Win32 DLLs (www.drdobbs.com...)
* Commodore 64 memory map (www.awsm.de/mem64/)
* Physical Address Extension - PAE Memory and Windows (docs.microsoft...)
* A visual guide to Go Memory Allocator from scratch (Golang) (blog.learngopr...)
* Scalable memory allocation using jemalloc ( / 480222803919 )
* Understanding glibc malloc (sploitfun.word...)
Podcast: anchor.fm/dash...
Transcript: www.akitaonrai...
A Estácio de Sá deveria assistir seus vídeos pra aprender como se da uma aula. Parabéns, me ajudando muito!
Tá fazendo o EaD? Kk
@@aisa1399 Unopar tbm !!
Até as UFs da vida
Que maravilha essa série, estou revisando e juntando todas as peças da minha graduação, e colocando as que faltavam heheh! Parabéns Akita, você é melhor que 95% dos professores universitários heheh. Devia investir nessa área de cursos
Só um louco mesmo pra dar deslike nesse vídeo.
Ou invejoso.
Quem quiser ter a audácia de dar deslike, deixe por ao o feedback dizendo porquê, somente o deslike não ajuda muito, pra começar, nem merece.
E o pior é que deram deslike. O ser humano merece ser estudado.
@pedro madureira vdd
Estou aqui firme e forte maratonado o canal desse que é o cara que eu acredito que seja um dos melhores em todo o TH-cam. Obrigado akita por fazer esse trabalho incrível. Eu como um mero iniciante com 16 ano na área de ti e hoje programador mediano estou aprendendo muito com os seus vídeos
Fala Akita, essa está sendo minha série favorita, não se encontra esse brainstorm de conteúdo em nenhuma faculdade, fico comentando com nosso amigo Halan Pinheiro pessoalmente, ele diz que já lhe ouviu demais hahaha. Tenho 22 anos e sou entusiasta de segurança(de crypto/eng. rev. a pentest) e agora estou focando em back-end dev porque é uma área que acho interessante e fora isso mal tem mercado de segurança aqui no Brasil, quanto mais aqui nesse fim de mundo que é Natal, minha cidade haha. É muito proveitoso esse aglomerado de conhecimento histórico de maneira séria, transparente e de qualidade, de alguém que tá no mercado desde antes de eu nascer. Só tenho a agradecer, abraços! (esperando devops hein hehe)
esse episódio falou de um tema tão importante e praticamente pouca ou quase nunca citado na maioria dos cursos que fiz
mesmo na faculdade foi explanado superficialmente, o video precisa ser visto no minimo uma 3 vezes para absorver o conteúdo.
Uma aula que nem na faculdade ensinam assunto vasto
@@romulo2928 e mesmo um interessante voce sente o foda no assunto né tse tse tse...
Perfeito, o trabalho que está fazendo não tem preço, Akita. Que bom que decidiu estender mais o tema de Back-End e fez esse vídeo sobre gerenciamento de memória.
Logo quando comecei a assistir seus vídeos, eu imaginei que a sua estratégia em disponibilizar conhecimento de altíssima qualidade de forma gratuita era para poder ter mais programadores bons no mercado. E assim, o mercado estando cheio de profissionais bons, o salario cairia e sua empresa lucraria fazendo bons programas com baixos custos operacionais. Muitos vídeos depois eu penso diferente. Agora eu penso que você disponibiliza conteúdo de altíssima qualidade de forma gratuita para que haja muitos programadores bons no mercado fazendo códigos de qualidade, e assim você não teria prejuízos ou desperdício de tempo em concertar bugs de códigos ruins ao mesmo tempo em que entrega o projeto de qualidade com tempo cada vez menor aumentando a sua linha de produção. Código bom, gera pouca manutenção é mais lucrativo do que profissionais baratos. Dessa forma, você pode pagar bem os programadores, porque sabe que funcionários bem remunerados trabalham felizes e motivados e ainda assim obter muito mais lucro. No final das contas, seus vídeos são altamente lucrativos para você e para todos que assistem.
Você chegou na conclusão correta. Ter programadores melhores é lucrativo pra todo mundo.
Que viajem.
@@aisa1399 Qual a sua opinião?
Akita, voce é um dos melhores professores que eu conheço. Esses videos aqui, as you know, podem chegar a auxiliar mais pessoas que voce conseguiria contar, ou fazer pessoalmente. Suas metáforas são precisas e facilitam a compreensão. Parabéns.
Essa serie abre um pool de esclarecimentos na minha formação backend por faculdade. Vendo pela terceira e cada vez mais fica claro.
Mais um ótimo vídeo e desse vez sobre um tema extremamente importante. Saudades dos vídeos de 1 hora, eram os melhores filmes da semana...
Muito boa essa série. Mestre professor Akita. ❤
Akita é um monstro, tô vendo todos os vídeos dessa série e vendo todo o canal do Akita. Pra eu, que estou começando na programação agora, estou aprendendo muito. Fico extremamente grato com seus vídeos, Akita. Espero daqui à um ano ser um bom profissional na programação e ter 30% da sua inteligência.
Minha caminhada no C++ está me obrigando a ver esses vídeos para anotar tópicos de estudo para dominar mais esse linguagem poderosa. Obrigado akita, graças a tu consigo entender várias paradas insanas dessa linguagem por conta das suas recomendações de estudo dos seus vídeos 😁
Rapaz, mais um excelente vídeo. Revisando muita coisa da faculdade e aprendendo um tanto de outras coisas. Parabéns.
Parabéns akita... vc juntou várias aulas de ciência da computação em um só vídeo!
Citou meu amadíssimo Go, já leva um like rs. Muito legal você ir a fundo em detalhes que hoje em dia não se dá tanta importância, que é mais fácil simplesmente deixar o stack resolver de forma "default" para você
Eu estou extremamente impressionado! Parabéns pelo trabalho, cheguei agora no canal e sinto que ainda existe um universo(Que deveria ter aprendido no início da faculdade, mas ficou em esquecimento) que preciso melhorar!
Fantástico vídeo Akita, muito obrigado. Gostaria de acompanhar sua visão sobre desenvolvimento para embarcados, programando para microcontroladores, mas tudo ao seu tempo 👍
Gosto muito da sua forma de explicar. Mesmo em alguns vídeos já saber do assunto assisto pra rever meus conhecimentos. Muito bom. Nostalgia de relembrar os sofrimentos do passado e dificuldade pra encontrar informações sobre. Mesmo com vídeos que você considera longo eu assisto. Ficou muito bem explicado. Vlw mesmo. Obrigado
já aprendi mais nessa playlist do que todo tempo de faculdade!
Mais uma excelente explicação, só um adendo, saudade vídeo de 1 hora, seu conteúdo é muito top amigo, merece mais tempo de vídeo.
Akita, em relação às unidades de memória (6:20), você falou "word" para 64 bits, mas na verdade, word representa apenas 16 bits. Para 64 bits, é necessário que seja uma Quad word (ou QWORD), uma vez que 4 x 16 = 64.
Parabéns!! Akita. Seus vídeos desta série estão realmente incríveis.
Sensacional, Akita. Parabéns!
Parabéns Akita, realmente seus vídeos estão dando foco aos meus estudos, e eu que achava que minha programação estava otimizada... só que não.
Como sempre, os melhores vídeos. Fico imprecionado com a capacidade de transmissão de conhecimento desse cara. Só um adendo: o funcionamento dos computadores eletrônicos antigos era baseado em "válvulas", não lâmpadas. O funcionamento desses dispositivos era bem diferente. Mais parecido com os transistores que o de lâmpadas, embora sejam bastante parecidos visualmente.
Oops eu falei lâmpadas? Sim você está certo, são válvulas
@@Akitando De qualquer forma, continua infalível como o Bruce Lee... kkk! Espero que não tenha desestimulado esse brilhante trabalho!
Aqui em um sábado a noite, revisando esse conteúdo sem igual e mais que excelente...
Parabens Akita., pelo vídeo continua com mais informações interessantes ajuda muito a termos uma noção extra de conhecimentos em diversas arquiteturas ...👏👏👏👏
Oi.mto bom o conteúdo do seu canal. Boa parte do seu público são pessoas interessadas em aprender a programar, mas n tem conhecimento do dia a dia do programador..seria interessante gravar um video sobre o cotidiano do programador tipo vlog, saca?abraço
Ansioso para parte 2
Parabéns pelo conteúdo! Mais uma obra-prima de grande valor para todos da área. ;)
Escova mais ! Vídeo show!... poderia ter 100hs...
Parabéns por mais essa aula show. Obrigado Akita.
Muito obrigado pelo conteúdo de qualidade, Akita!
meu deus do ceu, é muita informação. minha cabeça chegou a doer kkkkkk, otimo video. onde aprendo tudo isso? ahha
Cada vídeo do Akita eu anoto de 15~20 Tópicos novos pra estudar.
Difícil rs
MESTRE,PARABENS
Estou lhe assistindo do meu Windows 7 32 bits :D
Pretendo seguir no desenvolvimento de exploits, e estou estudando com o livro The Shellcoders Handbook.
Será que caberia um vídeo falando sobre a relevância de livros antigos, considerados velhos hoje em dia?
Obrigado por seu trabalho no TH-cam, Akita!
Excelente conteúdo. Valeu, Akita.
Tu é monstro demais cara!
Parabéns pelo excelente conteúdo, faculdade jamais vai ensinar isso.
Acho que se voce vc conseguisse explicar que basicamente o computador somente faz somas, seria bem esclarecedor, mas acho que teria que entrar um pouco em eletronica tambem. Muito bom o video.
Lembro quando fiz um torre de Hanói em c com pilhas, botava 30 discos e ia em bora os 8 gb de ram, demorei uns minuto ate ver que faltava um free na criaçao do "disco" da pilha.
Parabéns, muito boa a aula,!
Malloc pra zona já. Organiza e todo mundo pega no CpU
Excelente vídeo! Esse episódio em particular tá fora da sua playlist dessa série.
Opa, valeu, já tinham me falado, mas tinha esquecido de adicionar. Agora adicionei! :-D
Caramba estes vídeos estão fazendo eu retornar as aulas de S.O...
Abri alguns livros do Tanenbaum e cia que tenho aqui com diversas anotações que eu mesmo fiz e não me lembrava.
Impressionante como no dia a dia acabamos abstraindo tudo isto, ficando mais na camada de alto nível e vamos esquecendo alguns conceitos básicos que fazem a diferença.
Parabéns pelo trabalho e pelos vídeos!
Normalmente vejo vídeos em 1,5 ou 2x. Esses tá no 1x e, por varias vezes, tenho que escutar trechos novamente.
É interessante para um programador estudar matemática?
Com certeza, na verdade me frustra que muito programador até hoje tem problema com álgebra básica, não tô nem falando de nada avancado 🤦
Alguma recomendação, livros, cursos, canal?
Lembro com alguma saudade do tempo que trabalhei desenvolvendo jogos em J2ME para feature phones. Tínhamos um heap não muito maior que 256KB de RAM.
Com frequência, ao fim do projeto, os modelos mais low-end ficavam sem memória e tínhamos que reduzir imagens e ter fallbacks dinámicos que trocavam os assets PNG por desenho feito na Canvas, com cores sólidas ou repetições de assets menores.
Hoje em dia, com Unity, qualquer zé bundão faz jogo.... outros tempos...
Brew, C++ na Qualcomm :-)
@@Akitando esse não tive a chance de brincar, mas comecei com Symbian C++, que não era muito longe disso, lá por 2004
Symbian! Eu sempre quis um Psion Epoc
Não vi ainda tudo daqui pra frente, mas acho que está faltando falar mais sobre REST
Se não me engano, Android já usa jemalloc de algumas versões pra cá. Mas eles nunca se propuseram a suportar libc por completo no bionic
Na verdade no Android ele tem um cara a mais que é o Low Memory killer (LMK) que roda antes o OOM. Se alguns processos como zygote, system_server, systemUI, entre outros, morrerem do nada o Android vai parar de funcionar e vai reiniciar do nada. Como esses processos fazem parte do framework do Android que Roda na JVM do Android (ART), eles precisam ser tratados de forma especial e o Low Memory killer identifica quais processos são menos importantes e podem ser removidos da memória primeiro.
Akita, tenta colocar todos os textos em branco ou amarelo, por exemplo, quando tem muito texto na tela, acaba não dando pro pessoal ler tão bem devido a camisa ou a cadeira.
Tem uns malloc lá na 25 de março
Gostaria de ouvir mais sobre o jemalloc
fera
Em 13:50 temos claramente uma oportunidade perdida de exemplificar com o melhor número hexadecimal: BEBA CAFE
Muito obrigado akita pelo conteúdo eu tenho uma dúvida,eu não estou anotando ainda os episódios algumas coisas estão na mente mas você acha que é necessário anotar msm?
Top demais!
Na questão do uso do stack ou heap, pq algumas literaturas tecnicas recomendam o uso de recursão? Me parece um artificio ruim, pode ate tornar o codigo mais legível mas na minha cabeça faz com que stackoverflow seja um risco no projeto, por exemplo na recursão para fatorial, muito facil algum usuário colocar um número grande que estoure a memoria.
realmente porque é mais simples de descrever certos algoritmos usando recursão. além disso determinadas linguagens/compiladores tem otimização pra tail recursion (que é transformar uma recursão em iterativo no nível do binário) e porque algumas linguagens são stack-less, então não tem o problema de stack-overflow. algumas linguagens inclusive são stack-less (sem stack, só heap). por isso, como sempre, depende.
OOM Killer, acho que o do meu celular já morreu faz tempo ahaha
Vídeos de 1h só são difíceis de editar, porque de assistir a gente aqui não reclama nem um pouco haha
essas técnicas de malloc free delete não causam vulnerabilidade no sistema , tipo o Rust faz isso com mais eficiência ? Se o Rust faz isso com mais eficiência então é só reescrever o glibc que o C vai ficar mais seguro e mais rápido que o rust?
sou leigo no assunto , em um outro video pedi para indicar livros ou escrever os assuntos para nos tornar melhores em linguagem de medio nível, tipo estou estudando C não tem quase nada de assunto e as bibliotecas em C são insanas de ler tenho muita dificuldade tipo GTK4 que usa GLIB e etc são difíceis de mais de ler diferente de flutter que a facilidade é imensa , serio preciso muito ter uma noção melhor para usar C sem ter memory leak ou buffer e etc nem sei qual o padrão de projeto usar já que a distribuição linux antes havia muitos mais muitos problemas de segurança com questões de memoria.
se poder só colocar os nomes específicos de assuntos ou livros aqui , se ficou muito difícil o entendimento me perdoe .
Eu estou vendo os videos programação para iniciante e já assisti aos videos recomendações de Livros - introdução a design Emergente e o the MM-M o melhor livro de sftware
7 programadores que não sabem gerenciar memória ficaram putos :D
O cérebro do Akita processa mais informações por segundo do que o meu computador
Akita é recomendável usar algum alocador de memória no Mac? Outra dúvida, quando um programa recomenda o mínimo de memória de 8gb e a máquina tem apenas 8gb significa dizer que esse programa rodará de forma limitada?
Uma word tem 4 bytes? Não seria 8 bytes pra uma palavra de 64 bits, ou duas words (se ela tiver 4 bytes)? Ainda não entendi direito esse conceito de word
top!!!
Impossível dar deslike!
Qual sua idade? Puta que pariu. É muito conhecimento!!!!
velho kkkk 44 anos
E eu achando que fragmentação só acontecia em disco.
A fragmentação se dá na memória real ou virtual?
Nas duas.
@@Akitando Obrigado. Mas a MMU dá uma força pra gente né?
akita , já assistir vários professores não igual a você
Alguém conhece algum livro bom sobre essa assunto de gerenciamento de memória ?
No Go da para usar Jemalloc usando "spinlock/jemalloc-go"
godoc.org/github.com/spinlock/jemalloc-go"
É válido tentar trocar o malloc do linux (Mint aqui) pro jemalloc pra uso no desk do dia a dia?
Pro dia a dia não faz diferença. Essas coisas só fazem diferença em servidores, com alta carga.
Mas caso instale um jemalloc por exemplo é preciso sinalizar ao compilador de C++ qual deve ser o alocador usado? Ou instalando no linux essa questão fica transparente para a linguagem?
Eu realmente não entendia nada de gerencialmente de memória.rsrsrsrsr
O Windows 95 operava somente em modo real.
FFFF FFFF FFFF FFFF
- Fábio Akita