운영체제 메모리 관리 방법

HOW TO Manage Memory by OS

캐시의 지역성

캐시 메모리는 속도가 빠른 장치와 느린 장치간의 속도차에 따른 병목 현상을 줄이기 위한 범용 메모리

CPU가 어떤 데이터를 원할 것인가를 어느정도 예측할 수 있어야 한다. 적중율을 극대화시키기 위해 데이터 지역성의 원리를 사용한다. 지역성의 전제조건으로 프로그램은 모든 코드나 데이터를 균등하게 Access 하지 않는다는 특성을 기본으로 한다.

메모리

메인 메모리는 CPU가 직접 접근할 수 있는 접근 장치
프로세스가 실행되려면 프로그램이 메모리에 올라와야 함

메인 메모리는 주소가 할당된 일련의 바이트들로 구성되어 있다.

TLB(MMU)

메모리 할당 알고리즘

가상 메모리: 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법

→ 가상 메모리는 물리 메모리로부터 사용자 관점의 논리 메모리를 분리시켜 주 메모리를 균일한 크기의 저장 공간으로 구성된 엄청나게 큰 배열로 추상화 시켜 준다.
→ 작은 메모리를 가지고도 큰 가상 주소 공간을 제공

요구페이징: 초기에 필요한 것들만 적재하고, 페이지들이 실행 과정에서 실제로 필요할 때 적재하는 기법이다.

페이지 부재(Page Fault): 프로세스(프로그램)가 메인 메모리(RAM)에 저장되지 않은 페이지를 사용하려는 현상 → 페이지 부재 트랩(page-fault trap)을 발생

페이지 교체: 페이지 부재가 발생하면 메인 메모리에 있으면서 사용하지 않는 페이지를 디스크로 내보내고 새로운 페이지로 바꾸는 과정

페이지 교체 알고리즘

메모리 관리: 페이징

프레임(Frame) : 물리 메모리를 일정한 크기로 나눈 블록

페이지(Page) : 가상 메모리를 일정한 크기로 나눈 블록

물리메모리(프레임)와 가상메모리(페이지)를 대응하기 위해 page mapping 과정이 필요합니다.

이를 위해 Paging table을 설정해야 합니다.

페이징 기법을 사용하면 연속적이지 않은 공간도 활용할 수 있기 때문에 외부단편화(External fragmentation)을 해결할 수 있고, 코드를 쉽게 공유할 수 있다는 장점이 있습니다.

그리고 페이지 단위를 작게하면 내부 단편화(Internal fragmentation) 역시 해결할 수 있지만

(페이지에 공간을 할당한 후, 남는 공간이 적어지기 때문에) 그 만큼, page mapping 과정이 증가하므로 서로 trade off 관계에 있습니다.

메모리 관리: 세그멘테이션

세그먼트들의 크기가 서로 다르기 때문에 메모리를 페이징 기법처럼 미리 분할해 둘 수 없고,

메모리에 적재될 때 빈 공간을 찾아 할당하는 사용자 관점의 가상메모리 관리 기법입니다.

페이징기법과 마찬가지로 mapping을 위해 세그먼트 테이블을 필요로 합니다.

이 기법은 하나의 세그먼트 단위로 통제가 가능한 장점이 있습니다.

즉 내부단편화가 발생하지 않습니다.

그러나 서로 다른 크기의 세그먼트들에 대해 필요시에 메모리에 올리고 필요없을 경우

내리는 작업을 반복하다보면 외부 단편화가 생기는 문제점이 있습니다.

메모리 보호

프로세스는 독립적인 메모리 공간을 가져야 되고, 자신의 공간만 접근해야 한다.

따라서 한 프로세스에게 합법적인 주소 영역을 설정하고, 잘못된 접근이 오면 trap을 발생시키며 보호한다.

메모리 과할당

실제 메모리의 사이즈보다 더 큰 사이즈의 메모리를 프로세스에 할당한 상황

페이지 기법과 같은 메모리 관리 기법은 사용자가 눈치 채지 못하도록 눈속임을 통해 메모리를 할당해준다. (가상 메모리를 이용해서)

과할당 상황에 대해서 사용자를 속인 것을 들킬만한 상황이 존재한다.

페이지 교체

스레싱

메모리 영역에 접근하게 될 때, 메모리에 페이지 부재(=페이지 폴트(Page fault)율이 높은 것을 의미하며, 심각한 성능 저하를 초래합니다.

- 다중 프로그래밍 정도가 높아짐에 따라 CPU 이용률이 높아진다.

CPU이용률이 최대값에 도달하였을때, 다중 프로그래밍의 정도가 그 이상으로 더 커지면

쓰레싱이 일어나게 되고 CPU 이용률은 급격히 떨어진다.

- 운영체제는 CPU 이용률을 감시하면서, CPU 이용률이 너무 낮아지면 새로운 프로세스를 시스템에 더 추가해서

다중 프로그래밍의 정도를 높인다. 이 때 전역 페이지 교체 알고리즘을 사용하여 어떤 프로세스의 페이지인지에 대한 고려 없이 교체를 수행한다.

I will be a software architect.

Love podcasts or audiobooks? Learn on the go with our new app.