OS/메모리 관리 6

세그멘테이션 (Segmentation)

세그멘테이션 (Segmentation) 페이징 기법은 페이지라는 단위로 메모리를 일정한 간격으로 자르는 방식으로 메모리를 관리한다. 하지만 프로세스를 물리적인 단위인 페이지 말고 논리적 내용 단위인 세그먼트로 자를 수 있는 세그먼테이션 방법이 있다. 예를 들면 우리가 돼지를 잡아서 보관을 한다고 생각해보자. 페이징의 방법을 사용하면 돼지를 모두 같은 단위로 잘라서 보관을 하는 것이다. 반면에 세그먼테이션은 부위별로 다른 크기로 잘라서 보관하는 것이다. (페이징 관련 내용: ) 세그멘테이션은 프로세스를 세그먼트의 집합으로 생각한다. 사실 하나의 프로세스가 동작하려면 기본적으로 "코드, 데이터, 그리고 스택" 이 세 가지의 세그먼트는 항상 가지고 있다. 추가로, 프로그램의 시작점이라고 할 수 있는 main ..

OS/메모리 관리 2018.10.24

페이지 테이블의 구조 (Structure of the Page Table)

페이지 테이블의 구조 (Structure of the Page Table) 1. 계층적 페이징(Hierarchical Paging) 대부분 현대 컴퓨터는 매우 큰 논리 주소 공간(2^32에서 2^64)을 지원한다. 이러한 환경에서는 페이지 테이블 자체가 상당히 커진다. 예를 들어, 32비트 논리 주소 공간을 가진 시스템을 생각해보자. 이 시스템에서 페이지의 크기가 4KB(2^12)라면 페이지 테이블은 약 100만(2^32/2^12)개의 항목으로 구성될 것이다. 각 항목은 다시 4B로 구성되기 때문에 각 프로세스는 페이지 테이블 하나만을 저장하기 위하여 4MB의 물리 주소 공간이 필요할 것이다. 이 경우, 모든 페이지 테이블을 주 메모리에서 연속적으로 할당하기를 바라지는 않을 것이다. 한 가지 간단한 해결..

OS/메모리 관리 2018.10.13

페이징

페이징 (Paging) 페이징은 논리주소 공간이 연속된 하나의 공간에 모두 모여 있어야 한다는 제약을 없앤다. 그러므로 페이징을 사용하면, 주 메모리에 올라와 있던 부분을 디스크로 내보낼 때 디스크 상에 이들을 연속적으로 수용할 수 있는 자유 공간을 찾기 위해서 부산을 떨 필요가 없다. 전통적으로 페이징을 구현하기 위한 기능은 하드웨어가 제공해 왔다. 그러나, 최근 디자인에서는 하드웨어와 운영체제의 긴밀한 연계를 통해서 페이징을 구현하고 있다. 1. 기본 방법 물리 메모리는 프레임(frame)이라고 불리는 고정 크기의 블록으로 나누어져 있다. 논리 메모리는 페이지(page)라 불리는 프레임과 같은 크기의 블록으로 나누어진다. 논리 메모리는 페이지(page)라 불리는 프레임과 같은 크기의 블록으로 나누어진..

OS/메모리 관리 2018.10.13

연속 메모리 할당 (Contiguous Memory Allocation)

연속 메모리 할당 (Contiguous Memory Allocation) 주 메모리는 운영체제뿐만 아니라 여러 사용자 프로세스도 수용해야 한다. 그리고 이 각 영역은 목적에 맞도록 효율적으로 관리되어야 한다. 메모리는 일반적으로 두 개로 나누어지는데, 하나는 메모리에 상주하는 운영체제를 위한 것이다. 그리고 다른 하나는 사용자 프로세스를 위한 것이다. 운영체제는 메모리 어느 쪽 끝에도 위치할 수 있으며, 이 결정에 영향을 미치는 중요한 요인은 인터럽트 벡터이다. 인터럽트 벡터는 흔히 0번지에 위치하기 때문에 운영체제는 하위 메모리에 위치시키는 것이 보통이다. 그러므로 운영체제는 하위 메모리에 위치하는 상황만 논의할 것인데, 다른 상황도 비슷하다. 보통 여러 프로세스가 동시에 메모리에 적재되어 있는 것이 ..

OS/메모리 관리 2018.10.08

스와핑(swapping)

스와핑(swapping) 프로세스가 실행되기 위해서는 메모리 상에 있어야 하지만 필요한 경우 프로세스는 실행 도중에 임시로 보조 메모리로 교체되어 나갔다가 다시 메모리로 되돌아 올 수가 있다. 이러한 프로세스 교체 과정을 스와핑(swapping)이라고 한다. 예를 들면, 라운드 로빈(round-robin) 스케줄링을 하는 다중 프로그래밍 환경을 생각해 보자. 한 프로세스가 CPU 할당 시간이 끝나면 주 메모리 관리기(memory manager)가 이 프로세스를 보조 메모리로 내보내고 다른 프로세스를 메모리로 불러들일 수 있다. 즉, 스왑시킨다. 이러는 동안 CPU 스케줄러는 메모리 내의 다른 프로세스에게 시간 할당량을 준다. 각 프로세스가 시간 할당량을 모두 소비하면 그 프로세스도 스왑시킬 수 있다. C..

OS/메모리 관리 2018.10.07

메모리 주소 연계 및 동적 적재

메모리 주소 연계 및 동적 적재 1. 주소 연계 (Addressing Binding) 프로그램은 원래 이진 실행 파일 형태로 디스크에 저장된다. 이 프로그램이 실행되기 위해서는 주 메모리로 이동하여 프로세스가 되어야 한다. 사용하는 메모리 관리 기법이 무엇이냐에 따라 프로세스는 실행하는 동안 디스크와 주 메모리 사이를 왕래 할 수 있다. 디스크에서 주 메모리로 들어오기를 기다리고 있는 프로세스들의 집합은 이른바 입력 큐(input queue)를 형성한다. 이 큐에서 하나의 프로세스를 선택해서 메모리로 적재한 후 실행하고 이 프로세스는 실행하는 동안 메모리에서 명령어와 데이터에 접근한다. 언젠가 이 프로세스가 종료되면, 이 프로세스가 사용했던 메모리 공간이 가용 공간이 되며 다른 프로세스를 위해 사용된다...

OS/메모리 관리 2018.10.02