9. 메모리 관리 기법

수진·2021년 12월 7일
0

컴퓨터시스템

목록 보기
6/10

01 메모리 관리의 개요

메모리 관리의 복잡성
일괄처리 시스템은 한번에 하나의 프로그램만 실행-> 단순
시분할 시스템에서는 모든 응용프로그램이 메모리에 올라와 실행-> 복잡

메모리 관리의 이중성
프로세스 -> 메모리를 독점하려고함
메모리 관리자 -> 관리를 효율적으로 하고 싶음

컴파일러 vs 인터프리터
자바-컴파일러, 자바스크립트-인터프리터

1-4 메모리 관리자 MMU

메모리 관리를 담당하는 하드웨어
작업: 가져오기(메모리로), 배치(메모리의 어디에), 재배치(메모리가 꽉 찼을 때 오래된 프로세스 내보내기)
정책: 가져오기 정책(언제), 배치 정책, 재배치 정책(어떤 프로세스를 내보내)

02 메모리 주소

2-1 32bit CPU / 64bit CPU

한 번에 처리할 수 있는 메모리 비트

  • 워드:한 번에 다룰 수 있는 데이터의 최대 크기
  • 32bit CPU의 1 word = 32bit

물리 주소 공간: 하드웨어 입장에서 본 주소 공간. 컴퓨터마다 크기가 다름
논리 주소 공간: 사용자 입장에서 본 주소 공간(사용자 메모리 시작되는 주소를 0번지)

2-2 절대 주소와 상대 주소

단순 메모리 구조
한번에 한가지 일만 처리(일괄처리 시스템)
사용자 프로세스, 운영체제 영역을 피해서 메모리에 적재
-> 사용자 프로세스를 메모리의 최상위부터 사용
-> 메모리를 거꾸로 사용하기 위해 주소를 변경하는 일이 복잡함(잘 안쓰임)

경계 레지스터
운영체제 영역 / 사용자 영역 경계지점의 주소를 가진 레지스터

절대주소: 실제 물리 주소(물리 주소 공간)
상대주소: 사용자 영역이 시작되는 번지를 0번지로(논리 주소 공간)

메모리 접근 시: 상대주소 + 재배치 레지스터 -> 절대 주소
재배치 레지스터(사용자 영역의 시작 주소값)

03 단일 프로그래밍 환경에서의 메모리 할당

3-1 메모리 오버레이

프로그램 크기 > 물리 메모리 크기 -> 적당한 크기로 잘라서 가져오는 기법

  • 필요한 모듈만 메모리에 올라와 실행
  • 한정된 메모리에서 메모리보다 큰 프로그램 실행 가능
  • 프로그램 일부만 메모리에 올라와도 실행 가능

3-2 스왑 영역

메모리에 올라가지 못한 프로세스를 모아두는 영역
저장장치는 장소만 빌려주고 메모리 관리자가 관리
사용자 인식 -> 전체 메모리 = 실제 메모리 크기 + 스왑 영역 크기

04 다중 프로그래밍 환경에서의 메모리 할당

4-1 메모리 분할 방식

(시분할 시스템 때문에)

가변 분할 방식
메모리를 프로세스의 크기에 따라 나눔
연속 메모리 할당
장점: 연속된 공간 배치
단점: 비어있는 공간을 합쳐야함.(프로세스의 자리 옮겨야 -> 메모리 관리 복잡)

고정 분할 방식
메모리를 같은 크기로 나눔
비연속 메모리 할당(큰 프로세스 -> 여러 조각으로 배치)
장점: 메모리 관리 수월(메모리 통합 필요X)
단점: 메모리 낭비 발생

4-2 가변분할 방식의 메모리 관리

외부 단편화
프로세스가 종료되어 생기는 빈 공간
해결법
1. 메모리 배치 방식

  • 최초 배치: 첫번째로 발견한 배치 가능 공간
    빈 공간 찾아다닐 필요 X
  • 최적 배치: 모두 확인 -> 가장 작은 공간
    단편화 X, 아주 작은 조각을 만듦
  • 최악 배치: 모두 확인 -> 가장 큰 공간
    남는 공간이 커서 쓸모 있음, 빈 공간 크기가 줄어들면 최적 배치처럼 작은 조각 만듦

결과적으로 외부 단편화가 생겨 조각 모음을 해야함

2. 조각 모음: 빈 칸이 생겼을 때 모아줌
이미 배치된 프로세스를 옆으로 옮겨 빈 공간들을 모아줌
1) 프로세스의 동작을 멈춤
2) 프로세스 적당한 위치로
3) 프로세스 재시작

4-3 고정분할 방식의 메모리 관리


내부 단편화
각 메모리 조각에 프로세스를 배치하고 공간이 남는 현상

4-4 버디 시스템

메모리를 반으로 나눠 가장 어울리는 메모리에 프로세스 배치
각 구역에는 1개 프로세스
프로세스 종료 -> 주변의 빈조각과 합침

특징
1. 가변분할 방식처럼 메모리가 프로세스 크기대로 나뉨
2. 고정분할 방식처럼 한 구역에 한 프로세스, 내부단편화 발생
3. 비슷한 크기의 조각이 서로 모여 큰 조각을 만들기 쉬움

05 컴파일과 메모리 관리

profile
끄적끄적

0개의 댓글