
아이폰을 사용한다면 휴대폰의 아래를 swipe up 해보고, 윈도우를 사용한다면 작업 관리자를 열어보자.메모리는 한정되어 있지만우리는 여러 프로그램을 동시에 돌리고 싶어한다. 그렇다면 메모리 관리를 어떻게 해야 할까?메모리를 어떻게 관리할까 하다가 생각한 아이디어가 v

Time sharingStatic RelocationBaseBase + BoundsSegmentationPagingMemory에 한번에 하나의 process 올리는 방식매우매우 느림process로 메모리에 올라갈 때, OS가 address를 rewrite해줌protec

프로세스별 address space가 contiguous 해야 함 -> 프로세스 사이사이 비는 공간 wasted!heap이랑 stack은 자라니까, 사이에 큰 공간이 필요함 -> wasted!code, Data, heap, stack별로 각각 base와 bounds를

Address space = 32-bitpage size = 4KBpage table entry = 4B이때, page table의 크기는?구하는 방법page 갯수 = 전체 공간 / page size= 2^32 / 2^12 = 2^202 ^ 20 \* 2^2(4B) =

Address space를, 고정된 크기의 조각으로 잘라서 관리하는 것Virtual Memory의 조각 이름 = pagePhysical Memory의 조각 이름 = Frame두개를 1대1 대응시켜서 관리하는 것page - frame간의 대응 체계를 관리한다메모리에 저장

Translation Lookaside BufferMMU 내부에 존재Page Table의 Cache라고 생각하면 편함1번 : Page Table의 VPN을 추출2번 : TLB를 먼저 뒤져봄3번 ~ : 만약 TLB안에 찾는 page가 있다면(TLB hit)\-> prot

여러 process를 동시에 돌리고 싶은데, Memory만으로는 공간이 부족함 꼭 필요한 page만 메모리에 올리고, 나머지는 disk에 놔두기(swap space) 이때 각 프로세스들은 disk 공간도 memory로 인식 프로세스의 page들은 모두 1\. main