[이어드림스쿨 1주차] 컴퓨터 개론 (2)

운영체제(OS, Operating System)는 하드웨어와 소프트웨어를 관리하고 제어하는 필수 소프트웨어다.
개발자로서 운영체제를 잘 이해하면 프로그램이 어떻게 실행되는지, 메모리는 어떻게 관리되는지, 프로세스는 어떻게 동작하는지를 알 수 있다.
이번 글에서는 운영체제의 핵심 개념을 한눈에 정리해본다. 🚀
🔹 하드웨어와 소프트웨어
컴퓨터 시스템은 하드웨어(Hardware)와 소프트웨어(Software) 로 구성된다.
📌 하드웨어: 컴퓨터에 물리적으로 존재하는 모든 부품 (CPU, 메모리, 저장장치 등)
📌 소프트웨어: 사용자의 요구에 따라 컴퓨터 시스템에서 작동하는 프로그램
소프트웨어는 응용 소프트웨어(Application Software)와 시스템 소프트웨어(System Software) 로 나뉜다.
✔ 응용 소프트웨어 (Application Software)
특정 작업을 수행하기 위해 설치하는 프로그램
예시: 웹 브라우저, 워드 프로세서, 스프레드시트, 게임
✔ 시스템 소프트웨어 (System Software)
하드웨어와 상호작용하며 컴퓨터 시스템을 관리하는 소프트웨어
예시: 운영체제(OS), 컴파일러, 인터프리터
운영체제는 시스템 소프트웨어의 핵심으로, 컴퓨터의 자원을 효율적으로 관리하는 역할을 한다.
🔹 운영체제란? (OS, Operating System)
운영체제는 하드웨어와 소프트웨어를 관리하고, 프로그램 실행을 돕는 소프트웨어다.
📌 운영체제의 또 다른 정의:
운영체제는 컴퓨터의 자원(Resource)을 효율적으로 관리하는 프로그램이다.
✔ 컴퓨터 자원이란?
컴퓨터가 동작하기 위해 필요한 모든 것.
✅ CPU (중앙처리장치)
✅ 메모리 (RAM, 가상 메모리)
✅ 저장장치 (SSD, HDD)
✅ 네트워크, 입출력 장치
운영체제는 이 자원들을 효율적으로 할당하고, 충돌을 방지하며, 멀티태스킹을 가능하게 한다.
📌 대표적인 운영체제 종류
Windows
macOS
Linux (Ubuntu, CentOS, Fedora 등)
🔹 프로세스와 스레드
✔ 프로그램 vs 프로세스 vs 스레드
구분 | 설명 |
프로그램 | 실행되지 않은 코드, 명령어의 집합 |
프로세스 | 실행 중인 프로그램, OS로부터 자원을 할당받아 실행됨 |
스레드 | 프로세스 내부에서 실행되는 작업의 단위 |
📌 프로세스와 스레드의 차이점
✅ 프로세스: 독립적인 실행 단위 (싱글 프로세스, 멀티 프로세스)
✅ 스레드: 프로세스 내에서 실행되는 작은 작업 흐름 (싱글 스레드, 멀티 스레드)
💡 멀티 프로세스는 여러 개의 독립적인 프로세스를 실행하는 것이고, 멀티 스레드는 하나의 프로세스에서 여러 개의 스레드를 실행하는 것!
🔹 운영체제의 핵심 역할
운영체제는 컴퓨터 시스템을 원활하게 작동하도록 다양한 기능을 수행한다.
✔ 1️⃣ 메모리 관리
실행 중인 프로그램이 메모리를 사용할 수 있도록 주소를 할당
사용하지 않는 메모리는 OS가 해제
✔ 2️⃣ 가상 메모리 (Virtual Memory)
실제 RAM보다 더 큰 메모리처럼 사용할 수 있도록 함
하드디스크(스토리지)의 일부를 가상 메모리(Swap)로 활용
페이징(Paging) 기법을 사용하여 프로그램이 실제 필요한 부분만 메모리에 로드
📌 장점: RAM이 부족해도 큰 프로그램 실행 가능
📌 단점: 가상 메모리는 HDD/SSD를 사용하므로 속도가 느림
✔ 3️⃣ 프로세스 관리 (Process Scheduling)
여러 프로그램이 동시에 실행될 때, CPU가 어떤 프로세스를 먼저 실행할지 결정
프로세스 스케줄링을 통해 CPU 시간을 효율적으로 분배
✔ 4️⃣ 멀티태스킹 (Multi-tasking)
여러 개의 프로그램을 동시에 실행하는 기능
빠르게 프로세스를 전환(Switching)하여 사용자가 여러 작업을 동시에 수행하는 것처럼 보이게 함
✔ 5️⃣ 파일 시스템 관리
파일 생성, 복사, 삭제, 이동 등을 관리
폴더(디렉터리) 구조를 통해 파일을 정리
NTFS(Windows), ext4(Linux) 등 다양한 파일 시스템 존재
✔ 6️⃣ 네트워크 관리
인터넷 연결 및 네트워크 자원 관리
IP 주소 할당, 패킷 전송, 방화벽 설정 등을 수행
✔ 7️⃣ 보안 및 사용자 인증
사용자 계정 관리 (로그인, 암호화)
방화벽(Firewall), 바이러스 검사 등을 통해 보안 유지
🔹 커널과 셸 – 운영체제의 핵심 구조
운영체제는 크게 커널(Kernel)과 셸(Shell) 로 나뉜다.
📌 운영체제의 구성
Application > Shell > Kernel > Hardware
✔ 1️⃣ 커널 (Kernel)
운영체제의 핵심 부분으로, 하드웨어와 소프트웨어의 인터페이스 역할을 수행한다.
✅ 프로세스 스케줄링
✅ 메모리 관리
✅ 입출력 제어
💡 운영체제의 가장 중요한 기능을 담당하는 부분!
✔ 2️⃣ 셸 (Shell)
사용자가 입력한 명령어를 커널에 전달하고 실행 결과를 출력하는 역할.
✅ 명령어 해석기(Command Interpreter)
✅ 터미널 인터페이스 제공
📌 셸의 종류
CLI (Command Line Interface): 명령어 기반 (Bash, Zsh, PowerShell)
GUI (Graphical User Interface): 그래픽 기반 (Windows, macOS Finder)
🔹 동기화 문제 – 여러 프로세스가 같은 자원을 사용할 때 발생
예제:
프로세스 A는 파일을 저장하려고 하고
프로세스 B는 같은 파일을 삭제하려고 한다
이런 경우, 동기화(Synchronization) 문제가 발생할 수 있다.
운영체제는 뮤텍스(Mutex), 세마포어(Semaphore) 같은 기법을 사용하여 동기화 문제를 해결한다.
✔ 뮤텍스(Mutex, Mutual Exclusion) – "🔒 하나만 접근 가능"
한 번에 오직 하나의 스레드만 자원에 접근할 수 있도록 하는 잠금(Lock) 기법
만약 다른 스레드가 접근하려 하면, 기존 스레드가 잠금을 해제할 때까지 대기해야 한다.
📌 예제: 화장실 키 시스템
화장실이 하나 있고, 열쇠(뮤텍스)가 있다.
누군가 화장실을 사용하려면 열쇠를 가져가야 한다 (Lock).
화장실을 다 사용하면 열쇠를 돌려준다 (Unlock).
다른 사람이 사용하려면 열쇠를 받을 때까지 기다려야 한다.
📌 특징
✅ 한 번에 하나의 스레드만 접근 가능
✅ 자원을 사용한 후 반드시 잠금 해제해야 함
✅ 프로세스/스레드 간 충돌 방지
✔ 세마포어(Semaphore) – "🛑 여러 개 허용 가능"
여러 개의 스레드가 동시에 자원에 접근 가능하지만, 허용된 개수까지만 가능
공유 자원 개수를 조절하는 역할을 함
📌 예제: 주차장 시스템
주차장이 5개 공간(세마포어 값 = 5)을 가지고 있다.
차가 들어올 때마다 남은 공간을 하나씩 줄임 (P 연산, Wait)
차가 나가면 공간을 하나씩 증가 (V 연산, Signal)
주차장이 꽉 차면 새로운 차는 빈자리가 생길 때까지 대기
📌 특징
✅ 0 이상이면 여러 개의 스레드가 접근 가능
✅ 세마포어 값이 1이면 뮤텍스처럼 동작
✅ 자원 개수를 제한하여 동기화 문제를 해결
🚀 정리
✔ 운영체제(OS)는 하드웨어와 소프트웨어를 관리하는 필수 소프트웨어
✔ 프로세스는 실행 중인 프로그램, 스레드는 프로세스 내의 실행 흐름
✔ 운영체제의 핵심 역할: 메모리 관리, 프로세스 관리, 멀티태스킹, 파일 시스템 관리, 보안
✔ 커널(Kernel)은 운영체제의 핵심, 셸(Shell)은 사용자가 명령을 입력하는 인터페이스
✔ 멀티 프로세스와 멀티 스레드의 차이를 이해하면, 병렬 프로그래밍을 쉽게 배울 수 있다
Subscribe to my newsletter
Read articles from KiwiChip directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

KiwiChip
KiwiChip
I'm currently learning Python and studying RAG (Retrieval-Augmented Generation).