티스토리 뷰

메모리(기억장치)의 종류


메모리(기억장치) 계층구조

Block

  • 보조기억장치와 주기억장치 사이의 데이터 전송 단위
  • Size: 1 ~ 4KB

Word

  • 주기억장치와 레지스터 사이의 데이터 전송 단위
  • Size: 16 ~ 64 bits

Address Binding

  • 프로그램의 논리 주소를 실제 메모리의 물리 주소로 매핑(mapping)하는 작업

  • Binding 시점에 따른 구분
    • Compile time binding
    • Load time binding
    • Run time binding

User Program Processing Steps

 

Compile time binding

  • 프로세스가 메모리에 적재될 위치를 컴파일러가 알 수 있는 경우
    • 위치기 변하지 않음
  • 프로그램 전체가 메모리에 올라가야 함

Load time binding

  • 메모리 적재 위치를 컴파일 시점에서 모르면, 대체 가능한 상대 주소를 생성
  • 적재 시점(load time)에 시작 주소를 반영하여 사용자 코드 상의 주소를 재설정
  • 프로그램 전체가 메모리에 올라가야 함

  • 주소가 0번으로 시작한다고 가정하고 그로부터 상대적인 위치를 사용
  • 실제 메모리의 주소가 400부터 시작한다면 상대적 주소에 + 400 을 하여 절대 주소를 구한다.
  • 상대주소를 절대주소로 변환하여 사용

Run-time binding

  • 프로세스가 running 상태가 될 때 주소 지정
  • Address binding 을 수행시간까지 연기
    • 프로세스가 수행 도중 다른 메모리 위치로 이동할 수 있음
  • HW의 도움이 필요
    • MMU: Memory Management Unit
  • 대부분의 OS가 사용


Dynamic Loading

  • 모든 루틴을 교체 가능한 형태로 디스크에 저장
  • 실제 호출 전까지는 루틴을 적재하지 않음
    • 메인 프로그램만 메모리에 적재하여 수행
    • 루틴의 호출 시점에 address binding 수행
  • 장점
    • 메모리 공간의 효율적 사용

Swapping

  • 프로세서 할당이 끝나고 수행 완료 된 프로세스는 swap-device로 보내고 (Swap-out)
  • 새롭게 시작하는 프로세스는 메모리에 적재 (Swap-in)


Memory Allocation

  • Continuous Memory Allocation (연속할당)
    • Uni-programming
    • Multi-programming
      • Fixed partition (FPM)
      • Variable partition (VPM)
  • Non-continuous Memory Allocation (비연속할당)

Continuous Memory Allocation

  • 프로세스 (context)를 하나의 연속된 메모리 공간에 할당하는 정책
    • 프로그램, 데이터, 스택 등
  • 메모리 구성 정책
    • 메모리에 동시에 올라갈 수 있는 프로세스 수
      • Multiprogramming degree
    • 각 프로세스에게 할당되는 메모리 공간 크기

    • • 메모리 분할 방법

Uni-programming

  • Multiprogramming degree = 1
  • 프로세스가 한번에 하나만 올라가는 경우

Multi-programming

  • Fixed(static) partition multi-programming (FPM)
    • 고정 분할
  • Variable(dynamic) partition multi-programming (VPM)
    • 가변 분할

 

Uni-Programming

  • 하나의 프로세스만 메모리 상에 존재
  • 가장 간단한 메모리 관리 기법

 

  • 문제점
    • 프로그램의 크기 > 메모리 크기
    • 프로그램을 분할해서 메모리에 올려야 한다.
  • 해결법
    • Overlay structure
      • 공통된 부분은 메모리에 적재
      • 메모리에 현재 필요한 영역은 번갈아가며 적재
      • 사용자가 프로그램의 흐름 및 자료구조를 모두 알고 있어야 함

  • 문제점
    • 커널(Kernel) 보호
    • 커널영역은 제외한 메모리만 사용해야 한다.
  • 해결방법
    • 경계 레지스터 (boundary register) 사용

  • 문제점
    • Low system resource utilization
    • Low system performance
    • 메모리 공간 낭비 -> 비효율적, 낮은 성능
  • 해결법
    • Multi-programming

강의

www.youtube.com/watch?v=es3WGii_7mc&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=24

www.youtube.com/watch?v=te-GU7NKa5Y&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=25

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함