컴퓨터 과학의 기본 원리를 이해하는 것은 단순히 지식을 쌓는 것을 넘어, 문제를 해결하는 사고력을 키워줍니다. 마치 건축가가 건물의 구조를 알아야 튼튼한 집을 짓는 것처럼, 개발자도 컴퓨터의 기본 동작 원리를 알아야 더 효율적이고 안정적인 코드를 작성할 수 있습니다. 이는 기술 변화에 관계없이 지속적으로 성장할 수 있는 단단한 기반이 됩니다.
컴퓨터는 CPU, 메모리, 보조기억장치, 입출력장치 네 가지 핵심 부품으로 구성됩니다. 이 부품들은 메인보드를 통해 서로 연결되어 데이터를 주고받으며 컴퓨터를 작동시킵니다.

CPU는 프로그램의 명령어를 해석하고 실행하는 컴퓨터의 두뇌 역할을 합니다.
CPU는 크게 제어장치, 연산장치(ALU), 레지스터로 구성되어 아래의 세 가지 핵심 기능을 수행합니다.
위의 세 가지 기능을 유기적으로 활용하여 명령어 사이클이라는 과정을 반복하며 명령어를 처리합니다.
메모리(주기억장치)는 컴퓨터가 현재 작업 중인 데이터와 프로그램을 일시적으로 저장하는 공간입니다.
주기억장치는 용도와 특성에 따라 크게 RAM과 ROM으로 나뉩니다.
| RAM (Random Access Memory) | ROM (Read-Only Memory) | |
|---|---|---|
| 읽기/쓰기 | 읽고 쓰는 것이 자유로움 | 읽기만 가능 |
| 데이터 보존성 | 휘발성 (전원이 꺼지면 데이터 소실) | 비휘발성 (전원이 꺼져도 내용 보존) |
| 주요 역할 | 현재 실행 중인 프로그램 및 데이터 저장 | 컴퓨터 시동에 필요한 기본 정보 저장 (예: BIOS) |
| 특징 | 용량이 클수록 여러 작업을 동시에 처리 가능 | 내용이 거의 변경되지 않음 |
보조기억장치는 컴퓨터의 메인 저장소 역할을 합니다. 전원이 꺼져도 데이터가 사라지지 않는 비휘발성이 가장 큰 특징입니다. CPU가 직접 접근하는 주기억장치(메모리)와 달리, 보조기억장치에 있는 데이터를 사용하려면 반드시 메모리로 옮겨와야 합니다.
| HDD (하드디스크 드라이브) | SSD (솔리드 스테이트 드라이브) | USB/외장하드 | |
|---|---|---|---|
| 저장 방식 | 자성을 띤 원판(플래터) 회전 | 반도체(플래시 메모리) | 플래시 메모리 또는 HDD/SSD |
| 속도 | 느림 | 매우 빠름 | 제품에 따라 다름 |
| 물리적 특성 | 물리적 부품이 많아 충격에 약함 소음 발생 | 물리적 부품이 없어 충격에 강함 소음 없음 | 휴대성이 높고 이동에 용이 |
| 가격 | 저렴함 | 비쌈 | 용량 및 방식에 따라 다양 |
| 주요 용도 | 대용량 데이터 저장 | 빠른 속도가 필요한 시스템 (운영체제, 게임 등) | 데이터 이동 및 백업 |
입출력 장치는 컴퓨터와 외부 세계를 연결하는 통로 역할을 합니다. 사용자가 컴퓨터에 정보를 입력(입력 장치)하거나, 컴퓨터가 처리한 결과를 사용자에게 보여주거나 전달(출력 장치)하는 데 사용됩니다.
컴퓨터가 외부로부터 데이터를 받아들이는 장치로 키보드, 마우스, 마이크, 스캐너 등이 있습니다.
컴퓨터가 처리한 결과를 외부로 보내는 장치로 모니터, 프린터, 스피커, 프로젝터 등이 있습니다.
컴퓨터의 하드웨어와 사용자(또는 프로그램)를 연결해주는 핵심 소프트웨어입니다. 컴퓨터의 모든 자원(CPU, 메모리, 저장장치 등)을 관리하며, 사용자가 컴퓨터를 편리하고 효율적으로 사용할 수 있는 환경을 제공합니다.
운영체제가 없다면 컴퓨터를 사용하기가 매우 어렵습니다.
컴퓨터에서 실행 중인 프로그램입니다. 우리가 어떤 프로그램을 더블클릭해서 실행하면, 운영체제는 이 프로그램을 메모리에 올리고 실행에 필요한 자원들을 할당해 주는데, 이 상태를 바로 프로세스라고 부릅니다. 같은 프로그램이라도 여러 번 실행하면 각각 다른 프로세스가 됩니다.
프로세스는 생성되어 종료될 때까지 여러 상태를 거치게 됩니다. 이 상태의 변화를 프로세스 상태 전이라고 합니다.

프로세스 내에서 실행되는 작업의 가장 작은 단위입니다. 하나의 프로세스는 여러 개의 스레드를 가질 수 있으며, 이 스레드들은 프로세스의 자원(메모리, 파일 등)을 공유하면서 각자 다른 작업을 동시에 수행할 수 있습니다. 예를 들어, 웹 브라우저 프로그램(하나의 프로세스)에서 동영상을 보면서 동시에 스크롤을 내릴 수 있는 것은 여러 스레드가 동시에 작동하기 때문입니다.
프로세스와 스레드는 멀티태스킹을 가능하게 하는 중요한 개념이지만, 자원을 공유하는 방식에서 큰 차이가 있습니다.
| 프로세스(Process) | 스레드(Thread) | |
|---|---|---|
| 자원 공유 | 독립된 자원 소유 (별도의 메모리 공간, 파일 핸들 등) | 프로세스의 자원 공유 (프로세스 내 메모리, 파일 등) |
| 메모리 공간 | 운영체제로부터 독립적인 메모리 공간을 할당받음 | 프로세스의 메모리 공간을 공유하며 사용 |
| 생성/종료 | 생성 및 종료에 많은 시간이 소요됨 (오버헤드가 큼) | 생성 및 종료가 빠름 (오버헤드가 작음) |
| 역할 | 운영체제로부터 자원을 할당받는 작업의 단위 | CPU가 실제로 실행하는 실행의 단위 |
| 통신 방식 | IPC(Inter-Process Communication) 방식을 통해 통신 | 프로세스 자원을 공유하므로 별도의 통신 방법 없이 통신 가능 |
멀티태스킹의 원리: 프로세스 기반의 멀티태스킹은 여러 프로세스가 독립적으로 실행되므로, 한 프로세스에 문제가 생겨도 다른 프로세스에 영향을 주지 않아 안정적입니다. 반면, 스레드 기반의 멀티태스킹은 같은 프로세스 내에서 자원을 공유하므로, 하나의 스레드에 문제가 생기면 전체 프로세스가 영향을 받을 수 있지만, 자원 공유로 인해 프로세스 간 전환보다 훨씬 빠르고 효율적입니다.
운영체제의 가장 핵심적인 부분으로, 하드웨어와 응용 프로그램 사이를 중재하는 역할을 합니다. 운영체제의 가장 낮은 레벨에 위치하며, 컴퓨터의 모든 중요한 자원(CPU, 메모리, 장치 등)을 관리하고 제어하는 '심장' 또는 '핵심'이라고 할 수 있습니다.
커널은 항상 메모리에 상주하며 실행됩니다. 사용자가 직접 접근할 수 없는 보호된 영역인 커널 모드(Kernel Mode)에서 작동하기 때문에 시스템의 안정성과 보안을 유지할 수 있습니다.
사용자 프로그램이 운영체제의 커널에게 특정 기능을 수행해달라고 요청하는 유일한 방법입니다. 사용자 프로그램은 시스템의 핵심 자원(하드웨어, 파일 등)에 직접 접근할 수 없기 때문에, 반드시 커널을 거쳐야만 합니다. 이러한 접근을 가능하게 해주는 것이 바로 시스템 호출입니다.
open(), read(), write(), close(): 파일을 열고, 읽고, 쓰고, 닫는 작업을 수행합니다.ioctl(): 입출력 장치를 제어합니다.fork(): 새로운 프로세스를 생성합니다.exit(): 프로세스를 종료합니다.socket(): 네트워크 통신을 위한 소켓을 생성합니다.connect(), send(), recv(): 네트워크 연결 및 데이터 송수신을 처리합니다.
잘 정리 되어 있어서 이해가 잘 돼요!