본문 바로가기
전공/운영체제

Ch07. 물리 메모리 관리_01)메모리 관리의 개요

by 임 낭 만 2023. 5. 13.

<쉽게 배우는 운영체제> 교재를 참고하였습니다.

메모리 (주기억장치) 관리

  • 메모리 관리는 프로세스들을 위해 메모리 할당, 제거, 보호하는 활동
  • 디스크에 있는 프로그램을 실행하려면 먼저 메모리에 적재 후 메모리 관리자(관리장치)가 예약된 메모리 할당해 주는 것
  • 다중 프로그래밍 시스템에서 여러 프로세스가 메모리에 상주할 수 있도록 운영체제가 동적으로 메모리 세분화
  • 동일한 조건이면 메모리 용량이 512KB인 컴퓨터보다 1GB인 컴퓨터의 작업속도가 더 빠르지만, 4GB 메모리의 컴퓨터와 16GB 메모리의 컴퓨터는 체감 속도가 비슷함
  • 이처럼 메모리의 용량을 늘리면 작업속도가 빨라지지만 어느 수준 이상이 되면 그 차이가 작아짐
  • CPU 작업공간이 메모리이기 때문에 메모리 관리는 컴퓨터 성능에 막대한 영향이 있음

메모리 관리

메모리 관리의 복잡성

  • 메모리 주소
    • 1B로 나뉜 메모리의 각 영역은 메모리 주소로 구분하는데 보통 0번지부터 시작
    • CPU는 메모리에 있는 내용을 가져오거나 작업 결과를 메모리에 저장하기 위해 메모리 주소 레지스터(MAR)를 사용

메모리 주소

  • 메모리 관리의 복잡성
    • 메모리는 폰노이만 구조의 컴퓨터에서 유일한 작업 공간이며 모든 프로그램은 메모리에 올라와야 실행 가능
    • 일괄처리 시스템은 한번에 하나의 프로그램만 실행시킴으로 메모리 관리가 단순함
    • 시분할 시스템에서는 운영체제를 포함한 모든 응용 프로그램이 메모리에 올라와 실행되기 때문에 메모리 관리가 복잡함 (메모리 관리 시스템이 담당)

메모리 관리의 복잡성

메모리 관리의 이중성

  • 프로세스 입장에서는 메모리를 독차지하려 하고, 메모리 관리자 입장에서는 되도록 관리를 효율적으로 하고 싶어함
  • [그림 7-3]의 (b)와 같은 공간관리는 매우 복잡함
  • 프로세스가 작업하는 도중에 할당된 공간이 부족하면 메모리 관리자는 새로운 공간을 확보하기 위해 옆의 프로세스를 밀어내거나 더 큰 공간으로 해당 프로세스를 옮김

메모리 관리의 이중성

  • 작업을 마친 후 빈 공간이 생기면 다음 작업을 위해 빈 공간을 어떻게 처리할지 결정
  • 빈 공간이 여러 개 생기면 합쳐서 하나의 공간을 만들고, 이렇게 하기위해 현재 작업중인 공간을 옆으로 밀고 작은 공간을 합침

소스코드의 번역과 실행

  • 언어 번역 프로그램의 종류
    • 컴파일러 : 소스코드를 컴퓨터가 실행할 수 있는 기계어로 번역한 후 한꺼번에 실행 (C언어, 자바 등)
    • 인터프리터 : 소스코드를 한 행씩 번역하여 실행(자바스크립트, 베이직 등) – 에러찾기가 어렵고 최적화 하기 힘듦
  • 인터프리터와 컴파일러의 동작을 레시피로 나타낸 예

인터프리터와 컴파일러의 동작

  • 컴파일러의 목적
    • 오류 발견 : 소스코드에서 오류를 발견하여 실행 시 문제가 없도록 하는 것
    • 코드 최적화 : 소스코드를 간결하게 정리하여 실행 속도를 빠르게 하는 것
  • 컴파일러와 인터프리터의 차이
    • 컴파일러를 사용하는 자바와 인터프리터를 사용하는 자바스크립트 비교

자바와 자바스크립트의 차이

  • 컴파일 과정
    • ① 소스코드 작성 및 컴파일
      • 에러찾기와 최적화
    • ② 목적 코드와 라이브러리 연결
    • ③ 동적 라이브러리를 포함하여 최종 실행
      • 라이브러리 내의 함수가 변경되면 다시 컴파일 해야 했지만, 동적 라이브러리는 실행 시에 포함됨으로 재 컴파일 필요 없음

컴파일 과정


메모리 관리자의 역할

메모리 관리자 (Memory Manage Unit, MMU)

  • 메모리 관리를 담당하는 하드웨어

메모리 관리자의 작업

메모리 관리자의 작업

  • 가져오기 작업 (Fetch) : 프로세스와 데이터를 메모리로 가져옴
    • 메모리 관리자는 사용자가 요청하면 프로세스와 데이터를 모두 메모리로 가져옴
    • 어떤 상황에서는 데이터의 일부만 가져와 실행, (예: 대용량 동영상)
    • 사용자의 요청이 없어도 앞으로 필요한 것이라고 예상되는 데이터를 미리 가져옴
  • 배치 작업 (Placement) : 가져온 프로세스와 데이터를 메모리의 어떤 부분에 올려놓을지 결정
    • 배치 작업 전에 메모리를 어떤 크기로 나눌 것인지가 매우 중요함
    • 같은 크기로 자르느냐, 실행되는 프로세스 크기에 맞게 자르느냐에 따라 메모리 관리 복잡성이 달라짐
  • 재배치 작업 (Replacement) : 꽉 차 있는 메모리에 새로운 프로세스를 가져오기 위해 오래된 프로세스를 내보냄

메모리 관리자의 정책

  • 가져오기 정책 : 프로세스가 필요로 하는 데이터를 언제 메모리로 가져올지 결정하는 정책
    • 디스크에서 메모리로 프로세스 반입 시기 결정하는 것
    • 프로세스가 요청할 대 메모리로 가져오는 것이 일반적이지만, 예상되는 데이터를 미리 가져오는 방법 (Prefetch)도 있음
    • 요구 적재 : 운영체제나 시스템 프로그램, 사용자 프로그램 등 참조 요청에 따라 다음에 실행할 프로세스를 메모리에 적재하는 오래된 방법
    • 예상 적재 : 시스템의 요청을 미리 예측하여 메모리에 적재하는 방법
  • 배치 정책 : 가져온 프로세스를 메모리의 어떤 위치에 올려놓을지 결정하는 정책
    • 메모리를 동일한 크기로 자르는 것을 페이징이라고 하며, 프로세스의 크기에 맞게 자르는 것을 세그먼테이션이라고 함
    • 페이징과 세그먼테이션의 장단점을 파악하여 메모리를 효율적으로 관리할 수 있도록 정책을 만드는 것
    • 이것은 한정된 메모리를 효율적으로 사용하기 위한 것으로, 시스템의 효율을 좌우하는 매우 중요한 기준임
  • 재배치 정책 : 메모리가 꽉 찼을 때 메모리 내에 있는 어떤 프로세스를 내보낼지 결정하는 정책
    • 메모리가 충분하지 않을 때 현재 메모리에 적재된 프로세스 중 제거할 프로세스를 결정하는 교체 방법
    • 앞으로 사용하지 않을 프로세스를 내보내면 시스템의 성능이 올라가지만, 자주 사용할 프로세스를 내보내면 성능이 저하됨
    • 가까운 미래에 사용하지 않을 프로세스를 찾아서 내보내는 알고리즘을 교체 알고리즘이라고 함

댓글