LINUX 6

리눅스 메모리 관리: Swap과 OOM Killer

프로세스가 실행되기 위해선 메모리에 올라가야합니다. (프로세스의 실행 과정에 대한 포스팅이 있으니 참고해주세요.)이처럼 운영체제 환경에서 메모리는 모든 프로세스가 실행되기 위한 핵심 자원이며, 시스템 성능과 안정성에 직접적인 영향을 미칩니다. 하지만 메모리가 부족해진다면 서버는 느려지는 것에서 끝나지 않고 실행 중이던 프로세스가 강제로 종료되는 상황이 발생할 수 있습니다. 리눅스는 이러한 문제를 해결하기 위해 Swap과 같은 보조 메모리 영역을 활용하고, OOM Killer를 통해 시스템을 보호하는 메모리 관리 구조를 제공합니다. 이번 포스팅에서는 리눅스가 메모리를 어떻게 관리하고, 부족한 상황에서 어떤 방식으로 대응하는지 알아보겠습니다. 리눅스 명령어 freefree 명령어를 통해 리눅스에서 전체 ..

LINUX 2026.04.20

프로세스는 어떻게 실행되는가(3/3): CPU 스케줄링과 컨텍스트 스위칭

지난 포스팅에서 프로그램이 프로세스로 탄생하고 관리되는 전반적인 생명주기를 다뤘다면, 이번 글에서는 그 프로세스들이 한정된 자원을 어떻게 나누어 쓰는지 알아보겠습니다. 우리가 컴퓨터로 음악을 들으면서 웹서핑을 하고, 동시에 수십 개의 브라우저 탭을 띄워둘 수 있는 이유는 사실 운영체제가 보이지 않는 곳에서 미친 듯이 바쁘게 움직이고 있기 때문입니다. 이번 포스팅에서는 한정된 CPU 자원, 실행하려는 프로세스는 넘쳐나는 상황에서 순서를 정하는 CPU 스케줄링과 작업을 교체하는 순간에 발생하는 컨텍스트 스위칭의 동작 원리를 자세히 살펴보겠습니다. CPU 스케줄링CPU는 단일 코어 기준으로 하나의 프로세스만 처리할 수 있습니다. 우리가 수백 개의 프로그램을 동시에 실행하는 것처럼 느끼는 것은 스케줄러가 ..

LINUX 2026.04.15

프로세스는 어떻게 실행되는가(2/3): 메모리, PCB, 스레드 이해하기

프로그램을 실행하는 것은 단순히 작성된 코드를 한 번 읽고 끝나는 과정이 아닙니다.실행되는 순간, 운영체제는 해당 프로그램은 하나의 프로세스를 만들고 이를 메모리 위에 올려 체계적으로 관리합니다. 이 과정에서 프로세스는 구조화된 메모리, 실행 흐름을 포함한 하나의 독립적인 실행 환경으로 동작합니다. 또한 효율적인 처리를 위해 하나의 프로세스 내에서도 여러 작업이 동시에 이루어지며, 이때 각 실행 흐름은 자원을 공유합니다. 따라서 이번 포스팅에서는 프로세스의 단순한 메모리 구조를 넘어 운영체제가 이를 어떻게 관리하는지 그리고 실행 흐름이 어떻게 구성되는지 살펴보겠습니다. 프로세스 메모리 구조프로그램이 동작하는 동안에는 코드 실행, 함수 호출, 객체 생성 등 여러 작업들이 동시에 이루어집니다.이들을 하..

LINUX 2026.04.15

프로세스는 어떻게 실행되는가(1/3): 프로세스 생성 과정

우리가 터미널에서 프로그램을 실행하거나 버튼을 클릭해 애플리케이션을 실행할 때, 단순히 “프로그램이 켜졌다”라고 생각하기 쉽습니다.하지만 그 이면에서는 운영체제가 프로그램을 메모리에 올리고, 실행 단위를 생성하며, CPU가 작업을 처리할 수 있도록 여러 과정을 거치게 됩니다. 이때 중요한 개념이 바로 프로세스입니다.리눅스에서는 이 프로세스가 fork와 exec이라는 과정을 통해 생성되고 실행됩니다. 이번 글에서는 프로그램이 실행될 때 내부에서 어떤 일이 일어나는지 흐름 중심으로 살펴보겠습니다. 프로그램프로그램은 프로세스를 실행하는 데 사용하는 설계도라고 생각하면 됩니다.기본적으로 프로그래밍 언어로 작성된 명령어의 집합이며, 이 명령어는 CPU가 실행할 수 있도록 기계어로 변환됩니다. 하지만 프로그..

LINUX 2026.04.13

리눅스 커널에 대하여

운영체제는 컴퓨터의 하드웨어 자원을 운영 관리하고 프로그램을 실행할 수 있는 환경을 제공하는 소프트웨어 입니다.이 글에선 이러한 운영체제의 핵심 구성 요소인 커널이 어떤 역할을 수행하는지에 대해 정리해보겠습니다. 커널이란 무엇인가?컴퓨터가 동작하기 위해서는 소프트웨어와 하드웨어가 모두 필요합니다.하지만 웹 브라우저 같은 소프트웨어가 하드웨어와 직접 통신하는 것은 매우 복잡하고 비효율적입니다.이들이 쉽게 상호작용할 수 있도록, 그 사이에는 ‘추상화 계층’ 역할을 하는 소프트웨어가 필요합니다. 이를 커널(Kernel)이라고 합니다. 예를 들어 스피커의 음량을 키워야한다면 응용 프로그램이 사운드 카드에 직접 신호를 보내는 대신 커널을 통해 요청을 전달합니다.커널은 이러한 요청을 받아 하드웨어를 제어하고, ..

LINUX 2026.03.27

리눅스 부팅 과정: 전원 버튼을 누르면 일어나는 일

리눅스 시스템을 사용하다 보면 서버가 정상적으로 부팅되지 않거나, 특정 서비스가 실행되지 않는 문제를 마주하는 경우가 있습니다. 이러한 문제를 정확하게 파악하기 위해서는 단순히 명령어를 사용하는 것뿐만 아니라, 시스템이 어떤 과정을 거쳐 부팅되는지를 이해하는 것이 중요합니다. 리눅스의 부팅 과정은 전원이 켜진 이후 커널이 로드되고, 사용자 환경이 구성되기까지 여러 단계를 거치며 진행됩니다. 각 단계는 서로 다른 역할을 수행하기 때문에, 어느 단계에서 문제가 발생했는지를 구분할 수 있다면 보다 빠르고 정확한 문제 해결이 가능합니다. 이번 글에서는 리눅스의 부팅 과정을 단계별로 정리해보겠습니다. BIOS와 UEFI리눅스의 전원 버튼을 누르는 순간, 가장 먼저 BIOS 또는 UEFI 라는 프로그램이 실행됩니..

LINUX 2026.03.26