# Translation Lookaside Buffer

[OS] 페이징: 더 빠른 변환 (TLB)
페이징: 더 빠른 변환 (TLB) 페이징은 잘못 설계하면 상당한 성능 저하를 가져올 수 있다. 페이징은 프로세스 주소공간을 고정 크기의 페이지로 나누고, 각 페이지의 실제 위치(매핑 정보)를 메모리에 저장 매핑 정보를 저장하는 자료구조를 페이지 테이블이라고 함 근데 이 페이지 테이블이 잡아먹는 메모리 공간이 매우 크고 그리고 페이지 테이블 접근을 위한 메모리 읽기 작업의 비용이 매우 커 성능 저하를 유발함 모든 load/store 명령어 실행이 추가적인 메모리 읽기를 수반한다고 생각하면, 굉장한 성능저하가 있을 것 > 핵심 질문: 주소 변환 속도를 어떻게 향상할까? 주소 변환을 어떻게 빨리 할 수 있을까? 페이징에서 발생하는 추가 메모리 참조를 어떻게 피할 수 있을까? 어떤 하드웨어가 추가로 필요할까? 운영체제는 어떤 식으로 개입? 운영체제의 실행 속도를 개선하려면 하드웨어의 도움을 받아야 한다. 따라서

Memory Virtualization: Paging(1)
Recap Fragmentation : wasted space. huge fragmentation = low utilization External : free gaps between allocated chunks request memory를 충족하지 못하는 chunk들이다. request size보다 전체 free space가 더 크더라도 그 space가 fragmented되어 segment를 할당할 수는 없는 상태이다. Internal : don't need all memory within allocated chunks 우리가 utilize하지 못하는 space이다. process에게 할당되었지만 사용되지 않는 공간인데 이미 process에게 할당되었기 때문에 그 공간을 utilize하지 못한다. 
[운영체제] 가상 메모리
가상 메모리 컴퓨터 아키텍처 배경부터 짤막하게 설명드리자면, 폰 노이만 아키텍처 기반으로 된 코드들은 반드시 메모리RAM에 적재되어 실행되어야 해요. 이 말대로라면 실제로 각 프로세스마다 메모리를 할당하기에는 메모리 크기에 한계가 있어요. 일반적으로 저희는 16~32GB의 RAM을 컴퓨터에 장착시켜요(상황에 따라 더 넣는 경우도 있지만요). 그런데 우리는 게임을 실행시키고(이건 프로그램 크기가 엄청나죠), 유튜브를 검색하면서 음악도 듣거나 아니면 중간에 넷플릭스도 틀죠. 그럼에도 컴퓨터는 이걸 전부 다 끊김없이 잘만 실행시켜요. 바로 이걸 가능케 하는게 가상 메모리Virtual Memory 시스템이에요. 가상 메모리는 적은 메모리로 여러 프로세스를 실행시키기 위한 시스템이에요. 이는 메모리가 실제 메모리보다 많아 보이게 하는 기술이에요. 프로세스 크기 자체는 엄청나지만, 실제로 프로세스가 사용하는 메모리는 작다는 점에 착안해서 고안되었어요. 프로세스간 공간 분리로