CS/OS

[운영체제] 메모리 관리 요구조건

IT록흐 2021. 10. 24. 09:47
반응형

 

다수의 프로그램을 운용하려면 메모리를 적절히 분할하고 프로그램을 적절히 배치해야한다. 이같은 작업을 '메모리 관리'라고 하고 운영체제에 의해서 동적으로 이루어진다. 

 

 

메모리 관리 요구조건

 

1) 재배치 ( Relocation )

2) 보호 ( Protection )

3) 공유 ( Sharing )

4) 논리적 구성 ( Logical Organization )

5) 물리적 구성 ( Physical Organization )

 

1) 재배치 ( Relocation )

 

특정 주소에서 수행 중인 프로세스를 다른 주소로 옮기는 작업

 

 

주기억장치 공간은 한정되기에 스와핑(swapping)이 일어난다. 스와핑이란, 불필요한 프로세스를 디스크로 옮기고(스왑아웃, 보류상태) 다른 프로세스를 메모리에 적재시키는(스왑인, 준비상태) 행위이다. 

 

이때, 잠시 디스크로 옮겨진 프로세스가 주기억장치로 스왑인 되었을 때 기존과 같은 주소를 할당받을 수 있다는 보장이 없다. 이런 경우 프로세스를 적절한 위치에 재배치(relocation)해야 한다. 

 

 

2) 보호 ( Protection )

 

메모리 재배치가 일어나면 프로세스의 위치는 예측이 불가능해진다. 메모리 참조 과정에서 다른 프로세스의 메모리를 참조할 가능성이 높아진다. 재배치(relocation)가 구현된 환경에서는 컴파일 과정에서 확실한 주소를 정할 수가 없다. 실행시간에 동적으로 주소를 계산해서 메모리를 참조해야한다.

 

운영체제는 프로그램이 만드는 모든 메모리 참조를 예측할 수 없으므로 메모리 보호는 운영체제가 아닌 프로세서에서 일어나야 한다. 메모리 참조 허용여부는 메모리 참조 명령어 실행시간에만 가능하므로 프로세서가 메모리 참조를 위한 하드웨어적인 검사 과정을 거쳐야 한다. 

 

3) 공유(Sharing)

 

모든 메모리가 보호된다면 그것도 비효율이다. 여러 프로세스가 하나의 프로그램을 수행하고 있다면 프로그램 데이터의 사본을 하나 만들어 여러 프로세스가 공유할 수 있도록 지원해야한다. 필수적인 보호 기능을 침해하지 않는 범위 안에서 메모리의 일부분을 공유할 수 있어야 한다. 

 

4) 논리적인 구성 

 

주기억장치와 보조기억장치는 1차원 주소공간으로 구성되어 있다. 그러나 이곳에 저장되는 프로그램은 1차원 주소공간 처럼 선형적으로 구성되어 있지 않다. 대부분의 프로그램은 모듈단위로 구성되어있다. 모듈은 논리적 단위로 물리적 장치인 하드웨어가 얼마나 효과적으로 처리 할 수 있느냐에 따라 많은 이점을 얻을 수 있다. ( ex. 세그멘테이션 )

 

5) 물리적인 구성 

 

주기억장치와 보조기억 장치 사이의 정보의 흐름을 어떻게 구성하느냐가 주요 관심사이다. 정보의 흐름의 구성은 보통 운영체제가 담당한다. 프로그래머가 아닌 운영체제가 담당하는 이유는 아래와 같다. 

 

1. 프로그래머는 오버레이 기법을 사용해야한다.

 

프로그램 크기가 커서 주기억장치가 부족하면 작은 모듈 단위로 컴파일해서 필요한 모듈을 주기억장치로 불러들이는 기법이 오버레이 기법이다. 오버레이 기법은 프로그래머에게 시간 낭비를 만든다. 

 

2. 멀티 프로그래밍 환경에서 프로그래머는 사용가능한 공간의 양과 주소를 알 수 없다. 

 

그러므로 주기억장치와 보조기억장치 사이의 정보의 흐름은 운영체제(시스템)이 담당해야한다. 레지스터 ↔ 캐시 ↔ 주기억장치 사이의 정보의 흐름은 CPU가 담당한다.

 

 


 

참고자료

 

운영체제

컴퓨터 공학 전공자들을 위한 운영체제 내부구조 및 설계원리를 소개하는 책이다.

book.naver.com

 

반응형