CS/운영체제

운영체제 - 논리/물리 메모리

개발 일기92 2024. 6. 12. 14:26

CPU가 프로세스를 처리할 때 보는 주소 값(논리 주소)과 실제 메모리(물리 주소)의 주소 값은 다르다.

 

논리 메모리 영역(가상 메모리 영역) - 프로세스가 보는 메모리 영역 

물리 메모리 영역 - 실제 메모리 영역(RAM) 

 

메모리 관리 장치(MMU, Memory management Unit) : 논리 주소를 물리주소로 변경 시키는 역할을 하는 하드웨어 장치이다. CPU에 위치하며 CPU에서 메모리에 접근하기 전에 MMU를 거쳐 논리 주소에 해당하는 물리 주소를 얻는다.

MMU는 보호해야 하는 메모리 영역에 대한 접근을 제한해 메모리를 보호하는 역할을 한다.


연속 메모리 할당 

멀티 프로세스 환경에서 여러 프로세스를 메모리에 연속적으로 로드하는 방법. 고정 분할 방식가변 분할 방식이 있다.

 

고정 분할 방식

메모리 영역을 분할한 뒤 각 영역에 프로세스를 할당하는 방식이다. 

분할된 영역의 크기는 서로 다를 수도 있지만(2mb or 4mb 등으로 나눌지는 다를 수 있다),

분할된 크기는 고정된다.

 

단점 : 단편화(fragmentation) 문제가 발생할 수 있다.

 

ex) 총 메모리 공간 24mb, 고정 분할 8mb 메모리에서의 단편화

 

메모리 압축?

외부 단편화 문제를 해결하는 방법이다. 사용 중인 메모리 공간을 재배치해서 흩어져 있는 가용 메모리 공간을 하나로 합치는 것.

 

가변 분할 방식

할당할 프로세스의 크기에 따라 메모리 공간을 분할하는 방식.

메모리 할당 알고리즘을 이용해 가용 메모리 공간에서 프로세스가 로드될 수 있는 메모리 공간을 찾는다.

ex) 최초, 최적, 최악 적합 알고리즘.

 

1. 최초 적합(first-fit) 

가용 메모리 공간에서 비어있는 공간을 차례대로 찾아 프로세스를 로드하는 방식.

ex) 6mb 프로세스를 로드할때 18mb공간을 먼저 사용하게 된다.

 

2. 최적 적합(best-fit)

할당 하려는 프로세스 크기 이상인 가장 작은 메모리 공간에 할당한다.

가용 메모리 공간을 모두 탐색해야 한다.

ex) 6mb 프로세스를 로드할때 6mb공간을 먼저 사용하게 된다.

 

3. 최악 적합(worst-fit)

할당하려는 프로세스 메모리 이상 이면서 가장 큰 공간에 프로세스 로드.

가용 메모리 공간 모두 탐색해야한다.

ex) 최초 적합 사진과 동일


비연속 메모리 할당

프로세스 메모리 영역을 나눠서 메모리 공간에 저장하는 방법

ex) 페이징, 세그먼 테이션

 

1. 페이징

프로세스의 논리, 물리 메모리 영역을 각각 일정한 페이지와 프레임으로 동일한 크기로 나눈다.

페이지와 프레임에는 각각 번호를 할당해 프로세스와 페이지와 메모리의 프레임을 페이지 테이블을 사용하여 매핑한다.

페이지 테이블에는 페이지 정보, 프레임의 주소 값을 저장하고 각 프로세스의 PCB에 저장된다.

장점 : 

  • 페이지를 물리 메모리에 연속 할당할 필요가 없어 외부 단편화 문제를 해결할 수 있다.

단점 : 

  • 프로세스 크기가 페이지 수로 나누어 떨어지는지는 보장하지 않는다. -> 마지막 페이지가 페이지 크기보다 작을 수 있으므로 내부 단편화 문제 발생할 수 있다.
  • 페이지 테이블을 저장하기 위한 별도의 메모리 공간이 필요하다.

페이징 기법 3가지

1. 계층적 페이징(hierarchical paging) : 페이지 테이블을 다시 페이지로 나눠 테이블 자체를 페이징하는 방식. 멀티 레벨 페이징 이라고도 한다.

 

2. 해시 페이지 테이블(hashed page table) : 해시 테이블의 각 항목에 저장된 연결 리스트에 페이지 번호를 해싱(hashing)한 뒤에 첫 번째 요소와 가상 페이지 번호를 비교.

 

3. 역 페이지 테이블(inverted page table) : 프레임을 이용해 페이지를 찾는 방식.(기존과 반대로)

 

세그먼테이션

프로세스 메모리 영역을 논리적 단위인 세그먼트로 분할해 메모리를 할당.( 논리적 단위 - 함수 단위, 스택, 힙 영역 등)

세그먼테이션 테이블을 사용해 세그먼트의 논리 주소를 물리주소로 매핑한다.

세그먼트 주소를 인덱스로 사용하며, 세그먼트별 시작주소인 base와 세그먼트 길이인 limit을 저장한다.

장점:

  • 단위별로 데이터 보호하기 쉽다 -> 프로세스의 메모리 영역을 논리적 단위로 나눠 저장하므로.

 

단점:

  • 프로세스의 할당/해제를 반복하는 과정에서 외부 단편화 문제가 발생할 수 있다->세그먼트의 크기가 균등하지 않아서
  • 메모리에 로드된 스택 세그먼트 영역에서 오버플로가 발생하면 다른 프로세스와 메모리 영역이 겹칠 수 있다.