윤개발

6. 물리메모리 본문

컴퓨터과학/운영체제

6. 물리메모리

DEV_SJ 2021. 5. 17. 00:01

 

32bit와 64bit의 차이에 대해서 아는가?

32Bit CPU는 레지스터, BUS, ALU등이 한번에 처리할 수 있는 최대 Bit가 32bit이다.

따라서 MAR(Memory Address Register)도 32bit의 크기이고 이는 0~2^32  - 1 만큼의 주소값을 가질수 있다. (약 4GB)반면에 64Bit는 0~2^64 -1 까지의 주소값을 가리킬수 있는데 이는 사실상 무한이다. (16,777,216TB)

 

이러한 원리로 32bit는 4GB의 메모리만 처리할수 있기 때문에 메모리를 업그레이드 하여도 쓸수가 없다.

 

 

운영체제의 메모리 영역

운영체제는 부팅시에 메모리 영역의 최상단에 프로세스로 올라간다. 사용자가 운영체제 메모리에 프로세스를 할당하면 안되기 때문에 메모리 관리자는 경계레지스터를 사용하여 접근을 막는다.

 

  • 경계레지스터: 메모리의 운영체제 영역과 사용자 영역의 경계를 구분하기 위해 사용자가 작업을 요청할 때마다 검사하는 레지스터

그렇다면 MAR등에서 메모리 주소값을 가리킬때 절대주소와 상대주소는 어떤 차이가 있을까

  • 절대주소: 운영체제의 영역이 시스템 실행도중에 변경될 수 있어서 접근될 확률이 있어 위험하다.
  • 상대주소: 운영체제 영역의 끝부터 주소 0으로 지정하고 메모리관리자가 상대주소를 빠르게 변환해준다.

 

메모리 오버레이

프로그램의 크기가 메모리보다 클경우에 적당한 크기로 잘라서 가져오는 기법이다. 일부만 메모리에 올라와도 프로그램이 실행가능하다는 장점이 있다.

이처럼 프로그램은 여러개의 프로세스로 나누어서 실행이 가능하다. 그렇다면 어떤식으로 분할하는지 알아보자.

 

 

사용자 프로세스 분할방식

프로그램이 메모리에 올라가 프로세스가 될때 어떤방식으로 메모리를 할당받을까?

 

1. 가변분할 (세그멘테이션, 연속메모리 할당)

   프로세스의 크기에 따라 메모리를 할당하는 방식이다.

  • 프로세스가 종료되면 외부단편화가 발생한다.
    • 1111, 222, 333333 44 이런식으로 4개의 프로세스를 할당했을때 프로세스2와 프로세스4가 종료되고 크기가 4인 프로세스가 왔을때 메모리 할당이 불가능하다.
    • 따라서 비어있는 공간 모두에 할당이 불가능하다면 메모리의 자리변경이 필요하므로 메모리 관리가 어렵고 옮기는데 비용이 많이든다.
    • 이를 조각모음이라 하는데 조각모음은 이미 배치된 프로세스를 앞으로 옮기는 작업이다.

2. 고정분할(페이징, 비연속메모리 할당)

   메모리를 같은 크기로 나누어 프로세스를 쪼개어 할당하는 방식이다.

  • 나눈 크기보다 작은 크기의 메모리가 들어올 경우 내부단편화가 발생한다.
    • 크기를 4로 나누어 XXXX, XXXX, XXXX, XXXX 로 메모리를 나누었을때 크기가 3인 프로세스가 들어오면 크기1이 낭비된다.
    • 고정분할 방식은 조각모음을 할 수 없다. 나누는공간 크기를 조절하여 최소화 해야한다.

 

3. 버디시스템

   가변분할의 단편화를 완화한다.

  • 프로세스가 들어올때 메모리를 프로세스와 비슷한 크기가 될때까지 반으로 나누고 할당한다.
    • 16크기의 메모리가 있고 3크기의 프로세스가 들어온다면 '16을 8로 나누고' '8을 4로 나누어' 4 공간에 크기가3인 프로세스를 할당한다.
    • 비슷한 크기의 메모리들이 모여있어서 통합하기가 쉽게 된다.
    • 고정분할 방식이 메모리 관리 측면에서 더 단순하기 때문에 고정분할 방식이 많이 사용된다.

 

현대의 운영체제는 가변분할과 고정분할을 혼합하여 사용하고 있다.

 

 

 

'컴퓨터과학 > 운영체제' 카테고리의 다른 글

5. 교착상태  (0) 2021.05.17
4. 프로세스 동기화  (0) 2021.05.17
3. cpu 스케쥴링  (0) 2021.05.17
2. 프로세스와 스레드  (0) 2021.05.16
1. 하드웨어 구성  (0) 2021.05.16
Comments