OS: Memory Management

Snack 남관식·2023년 8월 9일
0

Operating System

목록 보기
4/5
post-thumbnail

Memory Management

  • 프로그램 성능 최적화, 자원 활용도 향상, 시스템 안정성을 위해 효율적인 메모리 관리가 필요

프로세스와 메모리

  • 프로세스의 실행과 관련된 메모리 관리는 시스템의 성능과 안정성을 결정하는 핵심적인 부분이다.

프로세스

  • 실행 중인 프로그램을 의미하며 코드, 데이터 및 현재의 실행 상태(레지스터 값, 프로그램 카운터 등)를 포함한다.
  • 여러 프로세스가 동시에 실행될 때 각 프로세스에게 충분한 메모리 공간을 제공하고, 다른 프로세스의 메모리 영역을 침범하지 않도록 보호하는 것이 중요하다.

메모리

  • 고속의 저장 공간으로 프로세스는 주 메모리에 로드되어 실행 코드와 데이터를 저장한다.
  • 운영체제는 메모리를 효율적으로 분배하고 관리하며, 필요에 따라 메모리를 할당/해제하는 역할을 한다.

메모리 영역 관리

  • 시스템 안정성을 유지하기 위해 프로세스가 자신에게 할당되지 않은 메모리 영역에 접근하는 것을 방지해야 한다.
  • 메모리 보호 및 주소 변환의 핵심적인 역할을 수행하기 위해 Base Register, Limit Register가 사용된다.

Base Register

  • 프로세스에 할당된 메모리 영역의 시작 주소를 갖고 있다.
  • 프로세스가 메모리에 접근할 때, 이 레지스터에 저장된 주소 값을 기준으로 메모리 접근을 시작하게 된다.

Limit Register

  • 프로세스에 할당된 메모리 영역의 크기(또는 종료 주소)를 갖고 있다.
  • 프로레스가 메모리의 어느 범위까지만 접근할 수 있는지를 나타낸다.

작동 원리

  • 할당된 메모리 영역 범위 외에 프로세스의 비정상적인 접근이 감지되면 트랩(Trap)이 발생한다.
  • 트랩이 발생되면 해당 프로세스는 중지되고 실행중인 프로세스의 상태와 정보는 PCB에 저장된다.
  • 운영체제의 트랩 핸들러 또는 인터럽트 핸들러가 해당 상황을 처리하여 프로세스를 종료하거나 에러 메시지가 출력된다.

PCB(Process Control Block)
프로세서의 상태, 프로그램 카운터, CPU 레지스터들의 값, CPU 스케쥴링 정보, 메모리 관리 정보 등 프로세스에 관한 모든 정보를 담고 있는 구조체이다. Base Register와 Limit Register의 값도 PCB에 저장된다.


메모리 주소(Memory Address)

  • 메모리 주소는 컴퓨터 메모리 내의 특정 위치를 참조하는 데 사용되는 숫자 값 또는 식별자이다.
  • 메모리 주소는 논리적 주소(Logical Address)와 물리적 주소(Physical Address)로 분류할 수 있다.

논리적 주소(Logical Address)

  • 프로세스의 관점에서 보는 메모리 주소로, 자체 주소 공간 내에서 데이터나 명령어를 참조한다.

물리적 주소(Physical Address)

  • 메모리의 실제 위치를 나타내는 주소로, 데이터의 읽거나 쓸 때 이 주소를 사용한다.

주소 바인딩(Address Binding)

  • 프로그램의 논리적 주소를 메모리의 실제 물리적 주소와 결합(Binding)하는 과정이 필요하다.
  • 주소 바인딩은 프로그램의 여러 단계 및 시점에서 발생할 수 있다.

Compile Time Binding

  • 프로그램이 컴파일될 때 실제 메모리 주소가 결정되는 방식으로, 메모리에서 실행될 위치를 미리 알고 있다는 것을 의미한다.
  • 만약 프로그램이 실행될 예정인 시작 주소에 다른 프로그램이나 작업이 존재한다면, 프로그램은 다시 컴파일되어야 한다.

Load Time Binding

  • 프로그램이 메모리에 로드될 때 실제 메모리 주소가 결정되는 방식이다.
  • 컴파일 시점에서는 실제 메모리 주소를 알 필요가 없으며, 로더가 실행 시간에 실제 메모리 주소를 바인딩한다.
  • 프로그램이 메모리 내의 어느 위치에든지 로드될 수 있으며, 로드될 때마다 다른 위치에 존재할 수 있다.

Execution Time Binding

  • 프로그램이 메모리에서 실행되는 동안 바인딩이 이루어지는 방식으로, 주로 가상 메모리에서 사용된다.
  • 프로그램은 가상 주소를 사용하여 실행되며, 이 가상 주소는 실행중에 MMU(Memory Management Unit)에 의해 실제 물리적 메모리 주소로 변환된다.

MMU(Memory Management Unit)

  • 컴퓨터 하드웨어의 구성 요소로, CPU와 주 메모리 사이에서 주소 변환과 메모리 관리를 담당하는 역할을 한다.
  • MMU의 주요 목적은 논리적 주소를 물리적 주소로 변환하며, 이를 통해 프로세스들이 독립된 가상의 메모리 공간에서 실행될 수 있게 지원한다.

profile
iOS Developer | Product Designer @snacknam

0개의 댓글