OS

[운영체제] 기억장치의 관리란??

ch010104 2025. 5. 12. 14:18

프로세스는 기억장치에 할당 되어 저장된다. 그러면 프로세스는 어떤한 방식으로 기억장치에 할당되는걸까??

 

1. 배경: 컴퓨터 시스템에서 기억장치의 역할

● 기억장치(DRAM)

  • 주소를 가진 워드 또는 바이트 단위로 구성됨
  • 프로그램이 실행되기 위해선 반드시 기억장치에 적재되어야 함
  • 적재된 프로그램은 **프로세스(process)**가 됨

● 프로세스의 실행 흐름

  1. **PC(프로그램 카운터)**가 명령어 주소 지정
  2. CPU가 명령어를 가져와(fetch) 해독하고(decode) 실행(execute)
  3. 결과를 다시 기억장치에 저장(store)

2. 주소 바인딩(Address Binding)

● 개념

  • 프로그램의 명령어와 데이터를 기억장치에 적재할 때, 어떤 주소를 가질지 결정하는 과정
  • 소스코드에서 사용한 변수나 함수는 실제 실행 시 주소를 알아야 함

● 바인딩의 시점에 따른 분류

종류 설명
컴파일 시(Compile Time) 실행 파일에 절대 주소를 포함. 적재 위치가 고정됨
적재 시(Load Time) 실행 시 위치에 따라 재배치 주소를 절대 주소로 바꿈
실행 시(Execution Time) 실행 도중에도 주소 변경 가능. 예: 페이징, 세그먼트 등

3. 동적 적재(Dynamic Loading) & 동적 연결(Dynamic Linking)

● 동적 적재

  • 필요한 함수만 호출 시 메모리에 적재
  • 사용하지 않는 함수는 적재되지 않음 → 메모리 절약

● 동적 연결

  • 라이브러리를 실행 중에 연결
  • 실행 파일 크기를 줄이고, 라이브러리를 여러 프로그램이 공유 가능

4. 논리 주소 vs 물리 주소

용어 정의
논리 주소 (Logical Address) CPU가 생성한 주소 = 가상 주소
물리 주소 (Physical Address) 실제 DRAM의 주소
 

● 주소 공간

  • 논리 주소 공간: 모든 논리 주소의 집합
  • 물리 주소 공간: 대응되는 실제 주소의 집합

5. MMU (Memory Management Unit)

  • 주소 변환을 담당하는 하드웨어 장치
  • 논리 주소 + 재배치 레지스터 → 물리 주소 계산
  • 운영체제가 CPU를 할당할 때 MMU에 시작 주소를 세팅

6. 기억장치 할당 기법

  4가지할당기법

  • 연속 할당 기법
  • 페이징
  • 세그먼테이션
  • 페이지화된 세그먼테이션

1) 연속 할당 (Contiguous Allocation)

  • 프로세스를 연속된 공간에 적재
  • 외부 단편화(External Fragmentation) 발생
  • 할당 전략:
    • 최초 적합(First-fit): 첫 번째 맞는 공간
    • 최적 적합(Best-fit): 가장 작은 적절 공간
    • 최악 적합(Worst-fit): 가장 큰 공간

2) 단편화(Fragmentation)

구분 설명
외부 단편화 남은 공간이 분산되어 연속되지 않아 사용 불가
내부 단편화 할당받은 공간 중 사용하지 않는 부분
압축(Compaction) 프로그램을 이동시켜 연속 공간 확보 (실행 시 바인딩 필요)

 


7. 페이징(Paging)

● 핵심 개념

  • 프로세스를 고정 크기 단위인 **페이지(page)**로 분할
  • 메모리는 같은 크기의 **프레임(frame)**으로 나눔
  • 페이지 하나는 프레임 하나에 적재됨 (페이지 크키 = 프레임 크기)

● 장점 & 단점

장점 단점
외부 단편화 없음 내부 단편화 발생 가능
주소 공간이 유연해짐 주소 변환 필요 → 오버헤드 발생

8. 주소 변환 in Paging

● 페이지 테이블(Page Table)

  • 논리 주소를 물리 주소로 매핑
  • 각 프로세스마다 하나씩 존재
  • 운영체제가 페이지 테이블 시작 주소를 MMU에 등록

● 논리 주소 구성

  • 논리 주소 = (페이지 번호 p, 페이지 변위 d)
    - 빨간색 숫자가 페이지 번호(p)
    - 나머지 숫자가 페이지 변위(d)
  • 논리 주소 공간 크기 = 2^m, 페이지 크기 = 2^n →
    • 상위 (m−n)비트: 페이지 번호(p)
    • 하위 n비트: 페이지 변위(d)

예시:

  • 논리 주소 공간: 2¹² (12바이트)
  • 페이지 크기: 2² = 4바이트
  • 주소 10 (이진수 1010) →
    • 상위 2비트: 페이지 번호 10 = 2
    • 하위 2비트: 변위 10 = 2
    • ⇒ (p, d) = (2, 2)