paging

    세그멘테이션(Segmentation)이란? 세그멘테이션 vs 페이징

    세그멘테이션이란? 페이징은 프로세스를 물리적으로 일정한 크기로 나눠서 메모리에 할당하는 것을 의미한다. 반면, 세그멘테이션은 프로세스를 논리적 내용을 기반으로 나눠서 메모리에 배치하는 것을 의미한다. 세그멘테이션은 프로세스를 세그먼트(segment)의 집합으로 표현한다. 이때 세그먼트는 논리 단위로 아래와 같은 것들이 해당된다. main program procedure function method object stack local variable global variable etc... 프로세스를 code영역, data영역, stack영역 등으로 나누는 것 또한 세그멘테이션이라고 할 수 있다. 세그멘테이션 계산 세그멘테이션도 페이징과 비슷하게 세그먼트 테이블을 가지고 있다. 페이징과 비슷하게 논리주소가 ..

    Memory Allocation (논리 메모리, 물리 메모리, Dynamic Loading, Paging이 나온 이유 )

    memory를 나눌 때 어떻게 눌지 정해야 한다. 모든 프로세스는 메모리에 올라와서 실행되는데 각각의 프로세스는 자신만의 할당 메모리가 있다. 이때 하나의 프로세스가 다른 프로세스 메모리에 침범하면 문제가 생긴다. 이런 이유 때문에 메모리의 구분이 필수적이다. 예방하는 방법으로 가장 단순하게는 시작 주소와 끝 주소를 지정하는 것이다. base 주소로부터 limit 주소를 하나의 프로세스에게 할당한다. (+아래서 보이지만, 운영체제 또한 메모리 상에 존재한다.) 어떤 프로세스를 할당할 때, base 주소보다 크고 base + limit 주소보다 작은 공간이 비어 있다면 할당하는 순서를 가질 수 있다. 메모리 주소 메모리에는 Logical address와 Physical address가 존재한다. 이 차이를..

    페이징(Paging)이란? 페이지 테이블이란?

    페이징(Paging)이란? 논리주소의 메모리를 고정된 크기의 페이지(Page)로 나누어 관리하는 기법이다. 페이징은 아래와 같은 특징들을 갖고 있다. 물리주소 공간(Physical address)은 연속적이지 않을 수 있다(noncontiguous) 페이지는 모두 같은 크기를 가진다. 물리주소 공간을 페이지와 같은 사이즈로 나눈 것들을 프레임(Frame)이라고 한다. 페이지 사이즈(=프레임 사이즈)는 하드웨어에 의해 정해진다. 페이지의 크기는 일반적으로 2의 제곱수를 사용한다. 일반적으로 4KB(2^12) ~ 1GB(2^20) 페이지 테이블(page table)을 이용해 논리주소에서 프레임을 가리키는 물리주소로 매핑한다. 외부 단편화는 발생하지 않으나, 내부 단편화는 발생한다. 페이지 테이블(Page T..