[운영체제] 메모리관리

Wuchang·2023년 7월 20일

운영체제

목록 보기
9/9

가상메모리

가상메모리는 메모리 관리 기법의 하나로 컴퓨터가 실제로 이용 가능한 메모리 자원을 추상화하여 이를 이용하는 사용자들에게 매우 큰 메모리로 보이게 만드는 것

  • 가상적으로 만들어지는 주소를 가상주소 라고하며, 실제 메모리상에 있는 주소를 실제주소 라고 한다. 가상 주소는 MMU(메모리관리장치)에 의해 실제 주소로 변환되며, 이 덕분에 사용자는 실제 주소를 의식할 필요 없이 프로그램을 구축할 수 있다.
  • 가상 메모리는 가상 주소와 실제 주소가 매핑되어있고, 프로세스의 주소정보가 들어있는페이지 테이블로 관리된다.

페이지란?

  • 가상 메모리를 사용하는 최소 크기 단위.
  • 전체 메모리를 일정 크기의 '페이지'라는 블록으로 나눕니다. 이 '페이지' 단위로 메모리가 관리되고, 가상 메모리 주소를 물리 메모리 주소로 변환하는 과정에서도 사용된다.
  • 메모리 관리를 효율적으로 할 수 있게 하며, 프로세스 간의 메모리 격리를 통해 안정성과 보안성을 높이는 데에도 기여한다.

페이지폴트

페이지폴트란, 프로세스의 주소 공간에는 존재하지만 지금 RAM 에는 없는 데이터에 접근했을 경우 발생한다. 페이지폴트와 그로 인한 스와핑은 다음 과정으로 이루어진다.
1. CPU는 물리 메모리를 확인해 해당 페이지가 없으면 트랩을 발생시킨다.
2. 운영체제는 CPU를 멈춘다.
3. 페이지테이블을 확인해 가상메모리에 페이지가 있는지 확인하고, 없으면 프로세스를 중단하고 물리메모리에 비어있는 프레임이 있는지 찾는다. 물리메모리에도 없다면 스와핑 발동된다.
4. 비어있는 프레임에 해당 페이지를 로드하고, 페이지테이블을 최신화한다.
5. 중지된 CPU 다시 시작한다.

스와핑

만약 가상메모리에는 존재하지만 RAM에는 현대 없는 데이터에 접근할 경우 페이지폴트가 발생한다. 이때, 메모리에서 당장 사용하지 않는 영역을 하드디스크로 없기고, 하드디스크의 일부분을 메모리처럼 불러와 쓰는 것을 '스와핑' 이라고 한다. 이를 통해 마치 페이지폴트가 발생하지 않은 것처럼 만듦.

스레싱

스레싱은 메모리의 페이지 폴트율이 높은 것을 의미하며, 이는 컴퓨터의 심각한 성능 저하를 초래한다.

  • 스레싱 발생과정
    • 메모리에 너무 많은 프로세스가 동시에 올라가면 스와핑이 많이 발생함
    • 페이지폴트가 일어나면 CPU 사용률 낮아짐
    • CPU 사용률이 낮아짐녀 운영체제는 "CPU가 한가한가?" 라고 생각하여 더 많은 프로세스를 메모리에 올림
    • 이와 같은 악순환이 반복되어 스레싱 발생
  • 해결방법
    • 메모리 늘린다.
    • HDD 를 SSD로 바꾼다
    • PFF 설정: 페이지 폴드의 빈도를 조절하는 기법으로, 상한선과 하한선을 설정해 상한선에 도달하면 프레임을 늘리고, 하한선에 도달하면 프레임을 줄이는 기법이다.

메모리할당

메모리 할당은 연속할당과 불연속 할당으로 나뉘며, 현대 운영체제는 불연속 할당인 페이지 기법을 기본으로 사용한다.

  • 연속할당: 고정분할방식, 가변분할방식
  • 불연속할당: 페이징, 세그멘테이션, 페이지드 세그멘테이션

고정분할방식

고정 분할 방식은 메모리를 미리 나누어 관리하는 방식으로, 내부 단편화가 발생할 수 있다.

내부단편화란?
메모리를 나눈 크기보다 프로그램이 작아서 들어가지 못하는 공간이 많이 발생하는 현상

가변분할방식

매 시점 프로그램의 크기에 맞게 동적으로 메모리를 나누어 사용한다. 외부 단편화가 발생할 수 있다.

외부단편화란?
메모리를 나눈 크기보다 프로그램이 커서 들어가지 못하는 공간이 많이 발생하는 현상

페이징

페이징은 동일한 크기의 페이지 단위로 나누어 메모리의 서로 다른 위치에 프로세스를 할당한다. 홀의 크기가 균일하지 않은 문제가 없어지지만 주소 변환이 복잡해진다.

페이지교체 알고리즘

메모리는 한정되어 있기 때문에 스와핑이 많이 발생한다. 스와핑은 많이 일어나지 않도록 설계되어야 하며, 이는 페이지 교체 알고리즘을 기반으로 스와핑이 일어난다.

FIFO

FIFO(First In First Out)는 가장 먼저 온 페이지를 교체 영역에 가장 먼저 놓는 방법

LRU

LRU(Least Recentle Used)는 참조가 가장 오래된 페이지를 바꾼다. '오래된'것을 파악하기 위해 각 페이지마다 계수기, 스택을 두어야 하는 문제점이 있다.

LFU

LFU(Least Frequently Used)는 가장 참조 횟수가 적은 페이지를 교체한다.

profile
우창의 개발일지🐈

0개의 댓글