티스토리 뷰

CS/OS

주 메모리

bool-flower 2022. 8. 13. 18:37

인프런에 무료로 공개되어 있는 주니온님의 운영체제 공룡책 강의 내용을 정리한 글입니다. 수강해보시는 걸 추천드려용

메모리


메모리는 주소를 가진 바이트로 구성된 큰 배열이다. 메모리 주소 공간을 각 프로세스가 따로 관리하기 위해서 메모리 공간을 구분할 필요가 있는데, 이 구분을 base registerlimit register를 통해 정한다.

 

메모리 공간 보호 (Protection for memory space)

주소 할당 (Address Binding)

  • source program - symbolic address
  • object file - relocatable address
  • executable file -  logical address(논리적 주소)
  • program in memory - physicla address (물리적 주소)

CPU에서는 프로세스에 접근하기 위해 논리적 주소를 사용한다. 물리적 주소에 접근하기 위해서, 논리적 주소와 물리적 주소를 매핑해주어야 하는데, 이 때 MMU(Memory Management Unit)가 이 역할을 한다. 

relocation register 값을 통해서 논리적 주소를 물리적 주소로 바꿔준다.

Dynamic Loading

메모리 공간을 효율적으로 사용하기 위해서, 필요할 때만 루틴을 로드하는 것

Dynamic Linking & Shared Libraries

  • DLLs(Dynamically Linked Libraries) - 어떤 라이브러리가 로딩되면, 실행되는 중에 링킹하는 것
  • static linking - loader가 binary program code를 링킹하는 것
  • dynamic linking -  링킹을 실행 시까지 연기하는 것
  • shared library - dll이랑 비슷

Contiguous Memory Allocation (연속 메모리 할당)


한 프로세스를 메모리에 통째로 올리는 것이다.

메모리 할당 전략

메모리를 할당해주다 보면 hole이 발생한다. hole에 프로세스를 어떻게 로드할 것인지 고민해야 한다.

  • First-Fit - 충분한 크기의 hole이 존재하면 바로 로드하는 것
  • Best-Fit - 충분한 크기의 hole 중 가장 작은 공간에 로드하는 것- 우선순위 큐로 구현?
  • Worst-Fit - 가장 큰 hole부터 로드하는 것

Fragmentation (단편화)

  • 외부 단편화(external fragmentation) - 메모리 할당 및 해제 작업의 반복으로 hole이 발생하여 메모리 총공간은 충분하지만 할당할 수는 없는 상황
  • 내부 단편화(internal fragmentation) - 프로세스가 필요한 양보다 더 큰 메모리가 할당되어 메모리 공간이 낭비되는 현상

'CS > OS' 카테고리의 다른 글

페이징과 스와핑  (0) 2022.08.18
스토리지와 입출력  (0) 2022.08.13
프로세스 간 통신(IPC)  (0) 2022.08.08
프로세스  (0) 2022.08.08
CPU 스케쥴  (0) 2022.08.07
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday