[운영체제(OS)] 8장. Memory Managements(1)

kothe·2022년 12월 4일
0

운영체제

목록 보기
7/17

Backgrounds

memory관리 기법을 알아보기에 앞서 메모리의 종류와, address binding, Overlay structure, Swapping에 대해 알아보자.

Types of memories

  • Processor registers
  • Cache memory
    hardware가 관리하므로 OS의 관리체계는 아니다.
    • CPU register access time : CPU clock 사이클 기준 0~1 사이클이 소요된다.
    • Memory access time : 50 ~ 200 CPU clock cycle로 긴 시간이 소요된다.
      memory access동안 CPU는 아무일도 못한다. 너무 긴 시간동안 CPU가 멈춰있게 되기 때문에 고안한 방법이 Cache memory이다.
  • Main memory
  • Auxiliary memory

CPU가 cache memory나 main memory에서 데이터를 가져갈땐 word 단위로 가져간다. 하지만 auxiliarty storage에서 데이터를 가져갈땐 cpu가 직접 가져갈 수 없고, block 단위로 데이터를 가져간다.

Block : 1~4KB
Word : 16~64 bits

Address binding

프로그램을 코딩한 후 실행하기까지의 과정은 다음과 같다.
실행파일(executable image)가 로드된 이후 OS가 메모리 관리를 시작하게 된다. 프로그램을 실행하기위해서 Loader가 커널에 어떤 메모리가 비었는지 물어보는 과정이다.

  • Compile-time binding
    컴파일할때부터 프로그램이 memory에 어떤 부분에 위치할 지 정하는 방식이다. absolute code가 생성된다.

  • Load-time binding
    Compile/linking할때는 프로그램 시작을 메모리 주소 0에 해두고, 실제로 메모리에 load될 때는 임의의 번지로 갈 수 있다.

    다음과 같이 binding이 진행되는데, Jump 360와 같은 address constant를 그대로 두게 되면 loading 이후에 엉뚱한 주소로 jump되게 된다. 그렇기 때문에 relocation과정을 통해 Address constant들의 주소를 맞춰줘야한다.

  • Run-time binding
    load-time에서의 relocation을 하지 않는다. 즉 address constant들을 건드리지 않기 때문에 MMU(Memory Management Unit)라는 하드웨어 장치를 통해, 프로세스를 그대로 시키면서 relocation register를 더해준다.

  • Notes

    • Logical address(virtual address) : 위 그림의 1204처럼 CPU에 의해서 생성되는 주소다.
    • Physical address : 실제 메모리에 load 된 주소
    • Relocation register(base register) : 실제 메모리에 load 됐을 때 시작 주소를 담고 있는 register
    • Limit register : 프로그램의 크기를 담고 있는 register
  • Dynamic-Linking
    보통 load되기 전 linking을 하는 static linking을 하지만 실행당시에 linking을 하는 것을 dynamic-linkning이라고 한다.

    • 주로 system libraries과 함께 사용된다.
    • linking을 실행시간에 다시 하게 만드는 stub코드로 구현돼있다. 이 코드가 호출되면 dynamic-linking을 하게된다.

Overlay structure


다음과 같이 8M의 메모리에 총 10M의 프로그램을 load해야하는 경우를 살펴보자.
Assembler는 pass-1의 실행이 끝나면 pass-2 실행이 시작된다. 즉 pass-1과 pass-2를 동시에 메모리에 올려둘일이 없다. 두 프로세스가 같은 메모리공간을 사용하기 떄문에 relocation을 할때나 run-time binding시 주소를 보정할 때 복잡해지는 점은 감안해야한다.

Swaping

2장에서 살펴본 swap in/out과 같은 개념이다. 쫓겨난 프로세스는 backing store(swap device) 로 가게 된다.

  • Swap device (swap file system)
    Ordinary file system과는 다르게 Contiguous allocation되어있고, 이로 인해 빠른 접근을 할 수 있다.
  • Time quantum이 swap time보다 커야한다.
  • Pending I/O : I/O 중인 프로세스는 swap되면 안된다. 만약 swap될 경우 데이터가 중간에 날라가는 것을 막기 위해서 I/O operation은 kernel buffer에 저장되고, user space에서 필요할 때 데이터를 전달하는 방식을 사용한다.
profile
천천히 꾸준히

0개의 댓글