프로세스가 실행되기 위해서는 Main Memory 에 로드되어야 한다.

그런데, 메모리 공간은 (속도는 더 빠르지만) 굉장히 한정적이다.

이번 글에 함께 등장할 Backing Store는 Main Memory 보다는 느리지만, 훨씬 큰 공간을 갖는 특징이 있다.

#Memory Hierarchy

 

따라서 필요에 따라 운영체제는 프로세스를 Main MemoryBacking Store (Storage Disk라고 보면 된다) 두 위치에서 'Swapping'을 통해 이동시킨다. 그 목적은 Main Memory 공간을 더 효율적으로 사용하기 위해서라고 이해하면 될 것 같다.

 

보통 스케줄링 알고리즘에 따라서 발생한다.

#Process Scheduling

 

Priority(우선순위) 스케줄링 알고리즘에 의한 swapping 의 경우, Roll out, Roll in 이라는 표현을 사용한다. 

(우선순위가 낮은 프로세스는 메모리에서 Roll out 하고, 우선순위가 높은 프로세스는 Roll in 하는 것)

 

PINTOS 운영체제의 프로세스 스케줄링 구현 프로젝트 진행 당시 그려본 마인드맵

예시로 가져온, PINTOS 운영체제 안에서 프로세스의 생성부터 소멸까지를 나타낸 마인드맵이다.

위 그림에서 [1]로 표시되어있는 ready_list의 존재를 확인할 수 있다.

다른게 아니라, 운영체제는 항상 실행 준비가 된 프로세스를 모아 'Ready Queue'에 정렬해둔다는 것, 그리고 Ready Queue에서 실행 준비가 완료된 프로세스들이 이미 실행중인 프로세스들과 Main Memory 공간을 공유하기 때문에 Swapping이 발생함을 보여주기 위한 단편적인 예시이다.

 

Swapping은 전송시간이 정말 많이 소요되는 작업이다.

Backing Store의 data transfer rate, 그리고 Process의 크기가 Swapping의 cost, 즉, Swapping에 걸리는 시간에 직접적인 영향을 미치는 요소들이라고 볼 수 있다.

 

Data transfer rate가 혁신적으로 빠른 Backing Store가 나온다면 전반적인 시스템의 속도가 훨씬 빨라진다는 것을 직관적으로 알 수 있다.

우리가 주로 사용하는 스토리지 하드웨어가 HDD에서 SSD로 넘어 올 때 그랬을 것이다.

직관적으로 그림을 그려보면 이렇다

*오개념 지적 대환영*

#키워드 : (게시글이 있는 경우) 링크를 참고하시거나, 검색하면서 읽어주세요.이해에 꼭 필요한 개념입니다.

 

해당 게시글은 Operating Systems: Three Easy Pieces(#혜성책), Operating System Concepts (#공룡책), 그리고 이 도서를 기반으로 한 학부 수업 자료를 참고하여 작성하였습니다.