본문 바로가기

프로그램은 어디에 올라가는가 | 정보처리의 흐름 FLOW 05 | K-BOOKS

FLOW 05 · INFORMATION PROCESSING
DIRECTION 05 · 정보를 보호하는 방향 · 운영체제 · 프로세스 · 네트워크

프로그램은 어디에 올라가는가

운영체제 · 프로세스 · 네트워크

QUESTION · 질문에서 시작합니다

프로그램이 실행되려면 필요한 코드와 데이터가 메모리에 올라와야 한다.

“여러 프로그램이 동시에 메모리를 쓰면 어떻게 나눌까?”

운영체제는 각 프로세스가 사용할 메모리 영역을 관리하고 서로 침범하지 못하도록 보호한다.

메모리를 연속된 공간으로 나눌 수도 있다

프로세스마다 일정한 크기의 공간을 나누어 줄 수 있다.

하지만 프로세스 크기가 제각각이면 쓰지 못하고 남는 작은 공간들이 생길 수 있다.

빈 공간이 프로세스 내부에 남는지, 프로세스 사이에 흩어지는지에 따라 내부 단편화와 외부 단편화로 나눌 수 있다.

메모리를 같은 크기의 조각으로 나눈다

메모리를 일정한 크기의 프레임으로 나누고, 프로세스도 같은 크기의 페이지로 나누면 꼭 연속된 공간에 저장할 필요가 없다.

페이징(Paging) 프로세스를 일정한 크기의 페이지로 나누고, 물리 메모리를 같은 크기의 프레임으로 나누어 배치하는 방식이다.
ILLUST A | ILL-14 | 페이지와 프레임 매핑 | 가상메모리 핵심

페이지가 실제 메모리의 어느 프레임에 있는지는 페이지 테이블을 통해 관리한다.

프로그램 전체가 메모리에 있을 필요는 없다

실제로 지금 사용하는 부분만 메모리에 올리고, 나머지는 저장장치에 둘 수 있다.

가상기억장치(Virtual Memory) 보조기억장치를 활용해 실제 물리 메모리보다 더 큰 기억공간을 사용하는 것처럼 프로그램에게 보여 주는 기술이다.

필요한 페이지가 메모리에 없으면 저장장치에서 불러와야 한다.

페이지 폴트(Page Fault) 참조하려는 페이지가 현재 메모리에 없을 때 발생한다.

메모리가 가득 찼다면 무엇을 내보낼까

새로운 페이지를 가져와야 하는데 빈 프레임이 없다면 기존 페이지 가운데 하나를 선택해 내보내야 한다.

FIFO가장 먼저 들어온 페이지를 교체한다.
LRU가장 오랫동안 사용하지 않은 페이지를 교체한다.
OPT앞으로 가장 오랫동안 사용되지 않을 페이지를 선택한다.

페이지를 너무 자주 바꾸면 오히려 느려진다

메모리가 부족해 페이지를 계속 저장장치와 교환한다면 CPU는 실제 프로그램보다 페이지 교체에 시간을 더 많이 쓸 수 있다.

Thrashing 지나치게 많은 페이지 교체로 인해 시스템 성능이 급격히 떨어지는 현상이다.

스래싱이 발생하면 페이지 부재가 계속 늘고 저장장치 접근이 많아져 CPU 사용률까지 떨어질 수 있다. 단순히 메모리를 많이 쓰는 것과는 다르며, 현재 실행에 필요한 작업 집합을 메모리에 유지할 수 없는 상황이 핵심이다.

스래싱을 줄이려면 프로세스가 실제로 자주 사용하는 페이지가 메모리에 머물 수 있도록 해야 한다. 무조건 많은 프로세스를 동시에 올리는 것보다 메모리 상황에 맞춰 실행 정도를 조절하는 것이 중요하다.

다음 비밀 메모리는 실행 중인 데이터를 기억한다. 그렇다면 프로그램이 종료된 뒤에도 남아야 하는 데이터는 어디에 둘까?
더 찾아보고 싶다면846면 학습 아카이브에서 검색하세요.
K-BOOKS Q&A이 내용이 헷갈리나요?

공부하던 페이지를 자동으로 연결해 질문할 수 있습니다.

RELATED STUDY MATERIALS

이 개념과 이어서 볼 정보처리 자료

학습자료실 65개 →

CONTINUE · INFORMATION PROCESSING ENGINEER 2027운영체제에서 시험 학습으로 이어가기
이야기형 개념 설명은 그대로 두고, 필요한 시험 요약·문제·실습으로 연결합니다.