운영체제 강의 - 메모리 관리

이진호·2022년 6월 4일
0

운영체제 이론

목록 보기
6/9

메모리의 종류

레지스터, 캐시 -> CPU가 관리
메인 메모리, 보조기억장치 -> SW(OS)가 관리

메모리 계층구조

Block

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

Word

  • 주기억장치와 레지스터 사이의 데이터 전송 단위
  • CPU의 bit가 word 단위로 나타냄 즉, 64bit체제일 경우 word의 단위가 64bit(완벽한 정답은 아니지만 대략적으로 생각할 수 있음)
  • Size: 16 ~ 64 bits

Address Binding

  • 프로그램의 논리 주소를 실제 메모리의 물리 주소로 맵핑하는 작업
    ex) int a; 물리 주소(memory) 100번지에 적용한다고 가정하면 a가 100번에 있다는 것을 연동시켜주는 과정

Binding 시점에 따른 구분

  • Compile time binding
  • Load time binding
  • Run time binding

메모리에 실행파일을 올려주는 것을 loading이라 하고 loader가 수행함.

Run-time binding

  • Address binding을 수행시간까지 연기(즉, ready에서 running이 되었을때)
  • HW(MMU:Memory Management Unit)의 도움이 필요
  • 대부분의 OS가 사용

Dynamic Loading

  • 모든 루틴을 교체 가능한 형태로 디스크에 저장
  • 실제 호출 전까지는 루틴(ex=function)을 적재하지 않음
    - 메인 프로그램만 메모리에 적재하여 수행
    - 루틴의 호출 시점에 address binding 수행
  • 장점
    - 필요한 부분만 메모리에 적재해서 사용하므로 메모리 공간을 효율적으로 사용할 수 있음.

Swapping

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

Memory Allocation

  • Continuous Memory Allocation
  • Non-continuous Memory Allocation

Continuous Memory Allocation

  • 프로세스 (context)를 하나의 연속된 메모리 공간에 할당하는 정책(프로그램, 데이터, 스택 등) -> 메모리에 통째로 올린다는 의미로 이해되고, 사용하지 않는 부분의 메모리까지 공간을 차지해서 비효율적일것으로 보임
  • 메모리 구성 정책
    - 메모리에 동시에 올라갈 수 있는 프로세스 수
    - 각 프로세스에게 할당되는 메모리 공간 크기
    - 메모리 분할 방법

Variable Partition Multiprogramming

  • 초기에는 전체가 하나의 영역
  • 프로세스를 처리하는 과정에서 메모리 공간이 동적으로 분할
  • No internal fragmentation

메모리 배치 전략

  • first fit
  • best fit
  • next fit

Coalescing holes: 인접한 빈 영역을 하나의 partition으로 통합

  • Process가 메모리를 releasegk가 release하고 나가면 수행
  • Low overhead

Storage Compaction(메모리 압축)

  • 모든 빈 공간을 하나로 통합
  • 프로세스 처리에 필요한 적재 공간 확보가 필요할 때 수행
  • High overhead: 모든 Process 재배치(Process 중지) 및 많은 시스템 자원을 소비

매번 새로운 변수를 선언하거나 동적 할당을 하는 경우 속도가 매우 느림. 따라서, 만일 1GB를 사용해야 한다면 미리 해당 용량만큼을 할당 받고, 그 시작 주소를 통해
빠르게 메모리 공간을 사용할 수 있음 -> memory pool

0개의 댓글