메모리 관리
는 컴퓨터 시스템에 있어서 매우 중요합니다. 왜냐하면 CPU가 작업을 하는 곳이 메모리이기 때문입니다. 이 메모리를 어떻게 관리하느냐가 결국 컴퓨터 성능에 막대한 영향을 미치게 됩니다. 이번에는 메모리 관리의 복잡성과 메모리 관리자의 역할을 알아보려고 합니다.
메모리 관리의 복잡성
CPU는 메모리에 있는 내용을 가져오거나 결과를 저장할 때 메모리 주소 레지스터(MAR)
를 사용합니다. 메모리 주소 레지스터(MAR)
에 필요한 메모리 주소를 넣으면 데이터를 메모리에서 가져오거나 옮길 수 있습니다.
폰 노이만 구조의 컴퓨터의 메모리는 유일한 작업 공간이며 메모리에 올라와야 실행이 가능합니다. 과거, 일괄 처리 시스템
에서는 한 번에 한 가지 작업만 처리했기 때문에 메모리 관리가 어렵지 않았습니다. 하지만 현재의 시분할 시스템
에서는 다양한 응용프로그램이 메모리에 올라와 작업하기 때문에 메모리 관리가 어렵습니다.
쉽게 비유하면 '도마에 하나의 재료만을 다듬는 게 쉬울까?' 아니면 '10개의 재료를 섞이지 않게 다듬는 게 쉬울까?'를 생각하면 됩니다.
이처럼 복잡한 메모리 관리는 메모리 관리 시스템
이 담당합니다.
메모리 관리의 이중성
메모리 관리의 이중성은 프로세스 입장에서 작업의 편리함과 관리자 입장에서 관리의 편리함이 충돌을 일으키는 것을 의미합니다.
- 관리자 입장 : 메모리 공간을 최대한 효율적으로 쓰고 싶어!
- 프로세스 입장 : 난 메모리를 독차지 하고 싶어!
결국 한정된 메모리 공간에서 각 프로세스 방의 크기를 조절하며 관리를 해야 하는데 이러한 요구는 메모리 관리를 매우 복잡하게 만듭니다.
메모리 관리자의 역할
메모리 관리자의 정확한 명칭은 메모리 관리 유닛(MMU)
라는 하드웨어입니다. 메모리 관리자의 작업은 크게 3가지가 있습니다.
- 가져오기 (fetch)
- 배치 (placement)
- 재배치 (replacement)
📌 가져오기
프로세스와 데이터를 메모리로 가져오는 작업입니다. 사용자가 요청 시, 프로세스와 데이터를 모두 메모리로 가져옵니다. 특정 상황에서는 데이터를 일부분만 가져오거나 앞으로 필요할 것이라 예상되는 데이터를 미리 가져옵니다.
📌 배치
가져온 프로세스와 데이터를 메모리의 어떤 부분에 올려놓을지 결정하는 작업입니다. 배치 전 메모리를 어떤 크기로 자를 것인지를 결정하고 배치합니다. (이로 인해 복잡성이 늘어납니다.)
📌 재배치
새로운 프로세스를 가져올 시, 메모리가 꽉 차서 오래된 프로세스를 내보내는 작업입니다.
간단 요약
메모리 관리
는 컴퓨터 성능에 큰 영향을 미치고 현대 시스템에서 매우 복잡하다. 이를 해결하기 위해 메모리 관리자가 존재한다.
'컴퓨터 공학 > 운영체제' 카테고리의 다른 글
[운영체제] 교착상태(Dead Lock, 데드락)이란? 그 해결 방법은? (0) | 2021.10.09 |
---|---|
[운영체제] 프로세스 간 통신 (0) | 2021.09.22 |
[운영체제] 스케줄링 종류와 목적 (0) | 2021.09.19 |
[운영체제] 프로세스와 스레드의 차이 (0) | 2021.09.12 |
[운영체제] 병렬 처리 기법 (0) | 2021.08.30 |
댓글