17. Allocation, Memory Management, Type of Addresses, Address Space

Allocation

  • Static Allocation

    • Program 실행 전, Compile Time에 결정되는 것
    • Static, Global 변수들
  • Dynamic Allocation

    • Run-Time에 결정되는 것
    • Program이 실행되면서 필요에 따라 Dynamic하게 Memory 할당
    • 필요성

      앞으로 얼마나 많은 Memory가 사용될 지 모르기 때문

Memory Management

  • Main Memory Part

    • Operating System

      세분화 작업은 OS에 의해서 동적으로 수행됨 => Memory Management

    • User Part

      OS 영역 외 User Program이 적재되는 공간

  • Requirements

    • Relocation

      프로그램이 어디에 배치될 지 미리 알 수가 없음

      프로그램이 Memory 공간에 따라 swap되서 들어올 수도, 밖으로 나갈 수도 있음

      그래서 메모리에 적재할 때 relocate함

    • Protection

      프로세스가 다른 프로세스에게 방해 받으면 안됨

      => 그 Process에 할당된 Memory Space에만 접근 가능하도록 보장해야 함

      RunTime에 Memory References를 Check하고 비정상적일 경우 실행 시점에 abort를 시켜야 함

    • Sharing

      Protection에도 Flexibility를 갖추어야 함

      만약 다수의 Process가 동일한 Program을 실행할 때, 각각의 Process마다 별도의 Program Copy 본을 가지고 있는 것이 아니라, 코드를 공유해서 Access할 수 있도록 함

      Kernel Code와 Data 또한 Share 되는 것

    • Logical Organization

      램과 프로그램의 구성이 다름

      램은 그냥 Byte 단위로 공간을 인식, Program은 논리적으로 특성별로 모듈로 구분해서 관리함

      Sharing과 Protection이 모듈 Level에서 제공된다면 효과적으로 관리할 수 있음

    • Physical Organization

      Memory는 Main Memory와 Secondary Memory로 나뉘어지고,

      Main Memory에는 필요한 만큼만 부분 적재하고 나머지는 Disk에 두어서 효율적으로 공간을 Saving함

Types of Addresses

  • Symbolic address

    변수, 상수, 코드의 주소 등

  • Logical address (상대 주소, 가상 주소)

    프로세스 내에서의 위치

    프로세스 시작 위치를 0이라고 봄

  • Physical address (절대 주소)

    Main Memory에서의 실제 주소

Address Space

Memory에서 Process 시점의 주소

프로세스 관점(Logical)의 주소로 Compile됨 (Physical Address X)

실행될 때 물리 주소로 Translation 되는데, Address Translation 하는 걸 사용자한테 보여줄 필요 없으므로 Process에게 Transparent(숨김)처리 함


© 2025. Na2te All rights reserved.