사전지식

 

1) 메모리란?

 

  -  프로그램과 프로그램 수행에 필요한 데이터 및 코드를 저장하는 장치
  - 메모리는 크게 내부 기억장치인 주기억장치와 외부 기억장치인 보조 기억장치로 분류됨
    ▷ DRAM(RAM, DDR4) 등의 메모리, CPU 안에 있는 레지스터(register)와 캐쉬(cache memory) 등이 주기억장치
     SSD, HDD 등이 보조 기억장치

 


2) 가상 메모리란?


  - 메모리가 실제 메모리보다 많아 보이게 하는 기술
  - 어떤 프로세스가 실행될때 메모리에 해당 프로세스 전체가 올라가지 않더라도 실행 가능함
  - 프로그램 실행에 필요한 일부분만 메모리에 올라가며, 나머지는 디스크에 남음 (즉, 디스크가 RAM의 보조 기억장치처럼 작동 → 가상메모리의 핵심은 보조 기억장치)  
  - 가상 메모리 구현을 위해서는 컴퓨터가 특수 메모리 관리 하드웨어를 갖춰야함 = MMU(Memory Management Unit)
  - MMU는 가상주소를 물리주소로 변환 & 메모리를 보호하는 기능을 수행

 

 

3) (가상) 메모리 관리 기법


  - 할당정책, 호출정책, 배치정책, 교체정책 이 존재
  ≫ 페이징 기법과 세그먼트 기법은 할당정책에 해당!

 

 

4) 메모리 단편화란?

 

  - 메모리의 빈 공간이 여러 조각으로 나뉘는 현상
  - 컴퓨터에서 어떤 프로그램을 실행할 때, 메모리의 공간을 연속적인 형태로 할당하여 사용하게 됨
  - 이렇게 프로그램이 메모리에 할당되고, 해제되고, 다시 새로운 프로그램이 할당되고를 반복하다보면 메모리 공간이 조각조각 나뉘게 되어 실제로는 사용가능한 메모리가 충분히 존재하지만, 할당이 불가능한 상태가 발생함 > 이를 메모리 단편화 문제라고 함

  - 내부단편화, 외부단편화 존재
    내부단편화 : 메모리를 할당할때, 프로세스가 필요한 보다 더 큰 메모리가 할당되어 프로세스에서 사용하는 메모리 공간이 낭비되는 상황
    외부단편화 : 메모리가 할당되고 해제되는 작업이 반복적으로 발생할때, 중간중간 사용하지 않는 작은 메모리가 생김 / 총 메모리공간은 충분하지만, 실제로는 할당할 수 없는 상황을 외부 단편화라고 함

 

참조 : https://m.blog.naver.com/rbdi3222/220623825770

 

 

→ 이러한 메모리 단편화 문제 해결 방법으로 페이징과 세그멘테이션이 있음
  


 

 

페이징 기법

 

- 고정 분할 기법

- 프로세스를 일정한 크기의 페이지로 분할해서 메모리에 적재하는 방식

  • 페이지(Page) : 고정 사이즈의 가상 메모리 내 프로세스 조각
  • 프레임(Frame) : 페이지 크기와 같은 주 기억 장치의 메모리 조각

 

- 모든 프로세스는 하나의 페이지 테이블을 가지고 있음

- 페이지 테이블에는 각 페이지 번호와 해당 페이지가 할당된 프레임의 시작 물리 주소를 저장

- CPU는 논리 주소로 프로그램이 설정한대로 연속적인 주소값으로 명령을 내리고, 이는 메모리로 가기전에 각 페이지의 실제 메모리 주소가 저장되어 있는 테이블에서 물리 주소로 변경

- 고정 크기로 분할된 가상 메모리의 각 개별 페이지는 순서에 상관없이 물리 메모리에 있는 프레임에 매핑되어 저장

 

 

페이징의 장단점

장점

외부 단편화 해결

 

단점

내부 단편화 문제가 발생 가능

 

 

 

 

세그멘테이션 기법

 

- 가변 분할 기법

- 프로세스의 주소 공간을 동적으로 설정되는 가변 크기의 블록들로 분할

  • 세그먼트(Segment) : 가상 메모리를 서로 크기가 다른 논리적 단위로 분할한 것

 

- 세그멘테이션은 프로세스를 물리적 단위인 페이지가 아닌 논리적 단위인 세그먼트로 분할해서 메모리에 적재하는 방식

- 세그먼트 테이블은 세그먼트 번호와 시작 주소(base), 세그먼트 크기(limit)를 저장

- 가상 주소의 세그먼트 번호를 이용하여 해당 세그먼트가 적재된 물리 메모리 블록의 시작 주소를 얻음

- CPU에서 해당 세그먼트의 크기를 넘어서는 주소가 들어오면 인터럽트가 발생해서 해당 프로세스를 강제로 종료

 

 

세그멘테이션의 장단점

장점

내부 단편화 해결

 

단점

외부 단편화 문제가 발생 가능

 

 

 

→ 이러한 두가지 방법을 혼합한 Paging / Segmentation 기법 활용 가능

파일관리는 Segment 단위로 하고, 메모리에 올라오는 프로그램의 조각은 Page 단위로 관리

 

 

 

 

 

페이징 또는 세그멘테이션을 사용하는 이유

메모리 단편화 문제를 해결하기 위해

최초 적합, 최적 적합, 압축 등의 방식을 통해서도 단편화를 해결할 수 있지만, 메모리 계산의 비용이 적은 페이징 또는 세그멘테이션을 주로 사용

 

 

'CS > 운영체제' 카테고리의 다른 글

프로세스 vs 스레드  (0) 2022.07.16
파일 시스템  (0) 2022.06.25
세마포어(Semaphore)와 뮤텍스(Mutex)  (0) 2022.06.18
CPU 스케줄링  (0) 2022.06.11
PCB와 Context Switching(문맥교환)  (0) 2022.06.11

+ Recent posts