솜은 코튼

[OS] 메모리 할당 (단일 프로그래밍 환경) 본문

OS

[OS] 메모리 할당 (단일 프로그래밍 환경)

솜.코 2023. 5. 21. 11:54

메모리를 어떻게 할당할 것인가?

.

.

.

 

프로그램을 사용하기 위해 메모리로 가져온다고 앞에서 설명했다.

 

 

만약 프로그램이 메모리보다 크다면?

 

 

적당한 크기로 잘라서 가져와야 할 것이다.

이러한 기법을 '메모리 오버레이'라고 한다.

 

 

아래는 메모리 오버레이의 작동 방식이다.

 

 

 

그림판이 필요하면 그림판을 메모리에 올려놓고,

맞춤법 검사가 필요하면 그림판을 내쫓고 맞춤법 검사기를 메모리에 올려놓는다.

 

 

이렇게 어떤 모듈을 가져오거나 내보낼지를 '프로그램 카운터(PC)' 레지스터가 결정한다.

 

 

메모리 오버레이를 이용하면 메모리보다 큰 프로그램을 실행할 수 있다는 것을 알게 됐다.

 

그렇다면 다른 프로그램을 가져올 때 기존에 있던 프로그램은???

 

 

별도의 공간에 임시로 저장한다!

이 임시 공간 영역을 '스왑 영역'이라고 부른다.

 

여기서 의문이 들 것이다. 원래 위치로 가져다 놓으면 되지 않나?

다시 사용할 수도 있고 작업이 끝나지 않았을 수도 있다.

 

 

스왑 영역에서 메모리로 데이터를 가져오는 작업을 '스왑인(swap in)'

메모리에서 스왑 영역으로 데이터를 내보내는 작업을 '스왑아웃(swap out)'

이라고 한다.

 

 

마찬가지로 스왑 영역도 메모리 관리자가 관리한다.

 

그럼 스왑 영역도 내가 사용할 수 있는 메모리 영역 아닌가?

맞다맞다.

실제 메모리의 크기와 스왑 영역의 크기를 합쳐서

전체 메모리로 인식할 수 있다.

 

 

 

 

이렇게 스왑을 사용하면 실제 메모리의 모자란 부분을 보충할 수 있다.

 

그럼 차이점은?

 

메모리는 날라간다.

But 스왑 영역은 하드디스크의 영역이기에 날라가지 않는다!

 

 

 

 

 

 

 

 

* 해당 글은 '쉽게 배우는 운영체제' 책을 참고하여 작성하였습니다. 출처: 쉽게 배우는 운영체제 (조성호 지음)

'OS' 카테고리의 다른 글

[OS] 가상 메모리 (매핑 테이블)  (0) 2023.05.21
[OS] 가변 분할 방식과 고정 분할 방식  (0) 2023.05.21
[OS] 메모리 할당 (다중 프로그래밍 환경)  (0) 2023.05.21
[OS] 메모리 주소  (0) 2023.05.21
[OS] 메모리 관리  (0) 2023.05.21