본문 바로가기

운영체제 기초 이해 | 메모리 관리

by ㅇㅍㅍ 2023. 4. 15.
운영체제 기초 이해 | 메모리 관리
728x90

이번 글은 'ChatGPT로 배우는 프롬프트 엔지니어링'이라는 연재글 일부입니다. 해당 글은 인공지능 언어 모델인 ChatGPT가 작성한 것입니다.

 

운영체제 기초 이해

 

 파일 시스템, 프로세스, 스케줄링, 메모리 관리 등에 대한 이해

 

메모리 관리(Memory Management)

메모리 관리는 프로세스가 사용하는 메모리를 효율적으로 관리하는 작업입니다. 메모리는 운영체제와 사용자 프로그램에 의해 공유되며, 운영체제는 메모리 할당, 메모리 해제, 가상 메모리 등의 기능을 제공합니다. 가상 메모리는 물리적으로 존재하지 않는 메모리 공간을 사용자 프로그램에게 제공하여 메모리 부족 상황을 방지하는 기능입니다.

이외에도 운영체제는 파일 관리, 보안 관리, 네트워크 관리 등 다양한 기능을 제공합니다. 운영체제는 컴퓨터 시스템에서 핵심적인 역할을 담당하는 만큼, 운영체제의 기능과 역할에 대한 이해는 컴퓨터 시스템에 대한 이해를 넓히는 데 있어서 매우 중요합니다.

 

<가상 메모리>

가상 메모리(Virtual Memory)는 운영 체제에서 프로세스가 사용하는 메모리 공간을 실제 물리적인 메모리보다 큰 것처럼 보이게 하는 기술입니다. 이를 통해 운영 체제는 물리적 메모리가 부족한 경우에도 프로세스가 필요로 하는 메모리를 제공할 수 있습니다.

가상 메모리는 물리적 메모리와 디스크의 조합으로 이루어져 있습니다. 가상 메모리는 디스크를 사용하지만, 각각의 가상 주소와 실제 물리 주소 사이의 매핑 정보를 물리적 메모리에 보관하고 있습니다. 이 매핑 정보를 통해 가상 주소를 물리 주소로 변환하며, 해당 주소에 접근하여 데이터를 읽거나 쓰게 됩니다. 이러한 가상 주소와 물리 주소 간의 매핑 정보를 페이지 테이블이라고 합니다. 페이지 테이블은 각 프로세스마다 독립적으로 유지되며, 프로세스의 가상 주소 공간을 나누어 페이지 단위로 관리합니다.

 

운영 체제는 프로세스가 실행되면 필요한 부분만 물리적 메모리에 적재하고, 나머지 부분은 디스크에 저장합니다. 그리고 프로세스가 실행되면서 필요한 부분을 동적으로 물리적 메모리와 디스크 사이에서 전환하면서 사용합니다.

가상 메모리를 사용하면 물리적 메모리가 부족한 경우에도 프로세스를 실행할 수 있기 때문에 시스템의 성능을 높일 수 있습니다. 또한, 가상 메모리를 사용하면 프로세스가 필요로 하는 메모리 공간이 물리적 메모리의 크기보다 큰 경우에도 실행할 수 있습니다. 그러나, 가상 메모리를 사용하면서 발생하는 페이지 교체 등의 오버헤드로 인해 성능이 저하될 수도 있습니다. 따라서, 적절한 페이지 교체 알고리즘을 선택하는 것이 중요합니다.

 

728x90

 

<페이지 폴트>

페이지 폴트(page fault)란 프로그램이 실행되는 동안, 요청한 페이지가 물리적인 메모리에 없는 경우를 말합니다. 예를 들어, 프로세스가 실행 중인데 요청한 페이지가 물리적 메모리에 없으면 이를 페이지 폴트라고 합니다.

이 경우, 운영 체제는 해당 페이지를 물리적 메모리에 적재(load)하고, 페이지 테이블을 업데이트하여 해당 페이지의 물리 주소를 매핑해줍니다. 그리고 다시 해당 프로세스를 실행합니다. 페이지 폴트는 디스크에서 페이지를 읽어오는 시간이 필요하므로, 페이지 폴트가 발생하면 프로세스의 실행이 잠시 멈출 수 있습니다.

페이지 폴트는 가상 메모리 시스템에서 중요한 역할을 합니다. 가상 메모리 시스템에서는 물리적인 메모리보다 큰 주소 공간을 제공하고, 실제 필요한 페이지만 물리적 메모리에 적재하여 사용하게 됩니다. 이 때, 페이지 폴트가 발생하면 물리적 메모리에서 해당 페이지를 찾을 수 없기 때문에 디스크에서 해당 페이지를 읽어와야 합니다.

따라서, 페이지 폴트가 발생하는 횟수를 최소화하면 시스템의 성능을 향상시킬 수 있습니다. 페이지 폴트를 최소화하기 위해 운영 체제는 페이지 교체 알고리즘을 사용하여 적절한 페이지를 선택하여 물리적 메모리에서 제거하고, 새로운 페이지를 적재하는 등의 작업을 수행합니다.

 

<페이지 교체 알고리즘>

페이지 교체 알고리즘은 가상 메모리에서 페이지 폴트(page fault)가 발생했을 때 어떤 페이지를 디스크에서 메모리로 가져올지 결정하는 알고리즘입니다. 페이지 폴트(page fault)란 프로세스가 실행될 때 필요한 페이지가 물리적 메모리에 없는 상태로 요청되는 현상을 말합니다.

여러 가지 페이지 교체 알고리즘이 있지만, 대표적인 알고리즘으로는 FIFO(First In First Out), LRU(Least Recently Used), OPT(Optimal), CLOCK 등이 있습니다.

FIFO: 가장 먼저 들어온 페이지를 먼저 교체하는 알고리즘입니다. 페이지를 교체할 때 시간 순서대로 처리하기 때문에 구현이 간단하고 오버헤드가 적지만, 최적의 페이지 교체를 보장하지는 않습니다.
LRU: 가장 최근에 사용되지 않은 페이지를 교체하는 알고리즘입니다. 페이지가 사용된 시간을 기록해두고, 가장 오래 사용되지 않은 페이지를 교체합니다. 최적의 페이지 교체 알고리즘이지만, 구현하기 어렵고 오버헤드가 큽니다.
OPT: 앞으로 가장 오랫동안 사용되지 않을 페이지를 교체하는 알고리즘입니다. 이 알고리즘은 미래를 예측해야 하기 때문에 실제로는 사용하기 어렵습니다. 최적의 페이지 교체를 보장하지만, 구현하기 어렵고 오버헤드가 큽니다.
CLOCK: FIFO 알고리즘의 단점을 보완한 알고리즘으로, 페이지의 참조 비트(Reference Bit)를 이용하여 페이지를 교체합니다. 참조 비트는 페이지가 사용될 때마다 1로 설정되고, 교체할 때 참조 비트가 0인 페이지를 찾아 교체합니다.
각 페이지 교체 알고리즘마다 장단점이 있으며, 어떤 알고리즘이 최적인지는 사용되는 시스템의 특성에 따라 달라집니다.

 

각 운영체제는 자신의 목적과 상황에 맞는 페이지 교체 알고리즘을 선택합니다. 페이지 교체 알고리즘은 다양한 요소에 따라 다른 성능을 보입니다. 따라서, 운영체제는 시스템의 특성과 성능 목표에 따라 적절한 페이지 교체 알고리즘을 선택하고 구현합니다. 예를 들어, 리눅스에서는 대표적으로 LRU (Least Recently Used) 알고리즘이 사용됩니다. Windows 운영체제에서는 페이지 교체 알고리즘으로 FIFO, LRU, Clock 등 여러 가지 알고리즘이 사용됩니다. 예를 들어, Windows XP 이전 버전에서는 FIFO 알고리즘이 사용되었고, Windows Vista 이후 버전에서는 LRU 알고리즘이 사용됩니다. Windows 10에서는 또한 LRU와 Clock 알고리즘을 모두 사용하고 있습니다. 이렇게 운영체제마다 사용하는 페이지 교체 알고리즘은 다를 수 있으며, 알고리즘의 선택은 운영체제 개발자나 시스템 설계자가 수행하게 됩니다.

 

<세그먼트>

세그먼트(segment)는 가상 메모리와 물리 메모리 간의 매핑을 위한 방법 중 하나입니다. 프로그램의 주소 공간이 하나의 연속된 블록이 아니라 여러 개의 논리적인 단위로 나뉘어 있을 때 세그먼트 기법을 사용합니다. 세그먼트는 프로그램을 논리적인 블록으로 분할하고, 각각의 블록에 대해 메모리를 할당합니다.

각 세그먼트는 이름과 길이, 기준(base) 주소 등의 정보를 가지고 있습니다. 이 정보를 사용하여 운영체제는 가상 메모리의 논리적 주소를 물리적인 주소로 변환합니다. 이렇게 세그먼트를 사용하면 각 프로그램이 독립적으로 메모리를 사용할 수 있고, 프로그램이 크거나 여러 개의 프로그램이 실행될 때 메모리를 효율적으로 사용할 수 있습니다.

세그먼트의 단점은 메모리 단편화 문제입니다. 메모리 할당과 해제가 반복되면서 작은 공간이 여러 개 생기는데, 이것을 합치지 않으면 더 이상 큰 메모리 블록을 할당할 수 없게 됩니다. 이 문제를 해결하기 위해 세그먼트를 조각내어 조각된 작은 블록을 하나로 합치는 과정을 진행하는데, 이를 세그먼트 단편화 해결(fragmentation resolution) 합니다.

 

 

목차
 

 

반응형

댓글