운영체제(OS)/공룡책

    [운영체제] 페이지 테이블 구조

    [운영체제] 페이지 테이블 구조

    이번엔 페이지 테이블의 구조에 대해서 알아보자 1 ) 계층적 페이지 -> 페이지 테이블을 여러 개의 작은 조각으로 나누는 방법. -> 2단계 페이징 기법 : 페이지 테이블 자체가 다시 페이징 되도록 함. 2 ) 해시 페이지 테이블 주소 공간이 32비트 보다 크면 3단계 페이지의 경우 시간이 오래걸린다. -> 한 페이지로 표현하는 해쉬테이블을 사용한다. 1 ) 가상 페이지 번호 2 ) 사상되는 페이지 프레임 번호 3 ) 연결 리스트상의 다음 원소 포인터 가상 주소 공간으로부터 페이지 번호가 오면 해싱하여 해시 페이지 테이블에서 연결리스트로 따라가면서 첫 번째 원소와 가상 페이지 번호를 비교한다. 테이블의 크기는 어떻게 정해야 할까 ? 1 ) 너무 크게 잡으면 메모리 낭비가 된다. 2 ) 작게하면 충돌의 위..

    [운영체제] 메모리 보호와 공유 페이지

    [운영체제] 메모리 보호와 공유 페이지

    [메모리 보호] 메모리 보호를 위해 메모리에서 사용하지 않는 공간을 페이지 테이블에서 Valid, Invalid로 표시함으로써 보호할 수 있다. [페이지 공유] 페이지 테이블이 프레임 번호를 공유함으로써 쉽게 페이지를 공유할 수 있도록 한다.

    [운영체제] 페이지 테이블 구현

    [운영체제] 페이지 테이블 구현

    이번에는 페이지 테이블을 어떻게 구현하는지에 대해 공부해보자. [페이지 테이블 구현 방법] 메인 메모리에는 페이지 테이블이 존재한다. 페이지 테이블은 PTBR과 PTLR로 구성된다. → PTBR(Page Table Base Register) : 페이지 테이블을 가리킨다. → PTLR(Page Table Length Register) : 페이지 테이블의 사이즈를 가리킨다. 메인 메모리에 저장하는 방법은 다음과 같은 문제점을 가진다. → 문제점 : 페이지 테이블을 찾기 위한 메인 메모리 접근 1번, 실제 메모리 읽기 위해 1번 총 2번 접근해야함. 속도가 느림. → 해결 : 페이지 테이블을 TLB(Translation Look-Aside Buffer)라는 캐쉬 메모리에 두는 방법. [TLB 캐쉬 메모리는 이..

    [운영체제] 페이징 기본 개념

    [운영체제] 페이징 기본 개념

    페이징은 프로세스의 물리 주소 공간이 연속되지 않아도 되는 메모리 관리 기법으로 연속 메모리 할당의 외부 단편화와 관련 압축의 필요성 문제를 해결한다. 물리 메모리는 프레임이라 불리는 같은 크기 블록으로 나누어진다. 논리 메모리는 페이지라 불리는 같은 크기의 블록으로 나누어진다. CPU에서 나오는 모든 주소는 페이지 번호(p)와 페이지 오프셋(d) 두 개의 부분으로 나누어진다. 1 ) 페이지 번호 : 페이지 테이블을 액세스할 때 사용된다 cf ) 페이지 테이블은 물리 메모리의 각 프레임의 시작 주소를 저장하고 있다. 2 ) 오프셋 : 참조되는 프레임 안에서의 위치를 가리킨다. → 프레임의 시작 주소와 페이지 오프셋이 결합하여 물리 메모리 주소가 된다. [페이징 예시] 논리 메모리의 페이지 번호 N = 2..

    [운영체제] 연속 메모리 할당과 단편화 문제

    [운영체제] 연속 메모리 할당과 단편화 문제

    [연속 메모리 할당] 메인 메모리는 OS 와 사용자 공간으로 구분된다. 사용자 공간에 프로그램을 적재할 때 프로세스 크기 만큼 연속 배정(주소1부터 주소 N까지)하는 것을 연속할당이라고 한다. 가용 공간에 n바이트를 요구하는 프로그램을 할당할 때 어떤식으로 할당할 것인지 정해야 한다. 1 ) 최초 적합 : 첫 번째 사용 가능한 가용 공간을 할당 2 ) 최적 적합 : 사용 가능한 공간 중에서 가장 작은 것 선택 3 ) 최악 적합 : 가장 큰 가용 공간을 택함. -> 보편적으로 최초 적합 및 최적 적합이 효율적이라고 한다. [연속 메모리 할당에서 발생할 수 있는 문제점] 1 ) 외부 단편화 : 총합 메모리 공간은 요청을 만족시킬 수 있지만, 가용 공간이 연속적이지 않다. 2 ) 내부 단편화 : 할당된 메모리..