❗️기본적인 OS 기능과 프로세스, 스레드를 이해하고 컴퓨터 동작을 이해할 수 있다.
컴퓨터 하드웨어와 사용자를 이어주는 ‘중간 관리자’ 같은 소프트웨어
운영체제의 주요 역할은 크게 4가지:
자원 관리(Resource Management)
CPU(연산), 메모리(RAM), 저장장치(HDD/SSD), 입출력장치(키보드, 마우스, 프린터) 등 하드웨어 관리.
누가 CPU 쓸지, 메모리 얼마나 줄지 정리하는 "관리자" 역할 🧑💼
프로세스 관리(Process Management)
동시에 여러 프로그램이 실행될 때, 충돌 없이 잘 돌아가게 함.
예: 음악 들으면서 웹서핑 + 파일 다운로드 → 운영체제가 CPU 시간을 나눠줌
파일 시스템 관리(File System)
응용 프로그램 실행, 권한 관리
데이터 저장/읽기 쉽게 폴더 구조 제공.
우리가 "C드라이브", "내 문서" 보는 게 사실 OS 덕분임 📂
사용자 인터페이스(User Interface)
사용자가 컴퓨터와 쉽게 소통하도록 화면(그래픽 UI)이나 명령어(CLI) 제공.
윈도우 → 바탕화면, 아이콘
리눅스 → 터미널 명령어
프로그램(Program): 컴퓨터가 해야 할 일을 적어둔 ‘명령어들의 집합’
예: "더하기 프로그램"이라면 → 두 수 입력받기 → 더하기 → 결과 출력하기 이런 식의 단계들이 모여 있는 것.
프로세스(Process): 실행 중인 프로그램
프로세스는 단순히 “돌아간다”가 아니라, 운영체제가 관리할 여러 요소를 가지고 있다:
💡 운영체제는 각 프로세스가 독립적으로 실행되도록 메모리 공간을 따로 분리해준다.
⁉️ 프로그램과 프로세스 차이
- 프로그램 = 그냥 "설계도", "레시피" 같은 것 📖 (하드디스크에 저장되어 있음)
- 프로세스 = 그 프로그램이 실제로 실행 중인 상태 🍳 (CPU와 메모리를 쓰면서 돌아감)
- 예를 들어:
MS Word.exe 파일 자체 → 프로그램
내가 지금 Word 켜서 글 쓰는 중 → 프로세스
구분 | 프로그램 | 프로세스 |
---|---|---|
정의 | 명령어들의 집합(정적인 설계도) | 실행 중인 프로그램(동적인 존재) |
저장 위치 | 보통 하드디스크(SSD/HDD) | 메모리(RAM)에 올라와 실행 |
비유 | 요리 레시피 📖 | 실제 요리 중인 요리사 👩🍳 |
스레드(Thread): 프로세스 안에서 실제로 일을 수행하는 실행 단위
안정성 문제:
같은 메모리를 공유하니까, 하나가 잘못 건드리면 다른 스레드도 영향 받아서 오류 가능
동기화 문제:
여러 스레드가 동시에 같은 자원(데이터)에 접근하면 꼬일 수 있음 → “동기화(lock)” 필요
⁉️ 프로세스와 스레드 차이
- 프로세스 = 식당 🍽️ (하나의 가게, 독립된 공간)
- 스레드 = 직원 👩🍳👨🍳 (식당 안에서 동시에 다른 역할: 주문 받기, 요리하기, 서빙하기)
- 식당(프로세스) 자체는 독립되어 있지만, 직원들(스레드)은 같은 주방/재료를 공유하면서 일을 분담함.
구분 | 프로세스 | 스레드 |
---|---|---|
정의 | 실행 중인 프로그램 | 프로세스 내부에서 실행되는 작은 실행 흐름 |
메모리 | 프로세스끼리는 메모리 공간 분리 | 같은 프로세스의 스레드끼리는 메모리 공유 |
독립성 | 서로 완전히 독립 (한 프로세스 죽으면 영향 없음) | 같은 프로세스 안에서 서로 영향 줌 |
생성 비용 | 무거움 (메모리, 자원 다 따로 배정) | 가벼움 (코드/데이터 공유) |
👉 하나의 프로세스 안에 스레드가 1개만 있는 구조
💡 예시
👉 하나의 프로세스 안에 여러 개의 스레드가 동시에 실행
💡 예시 (웹 브라우저)
➡️ 동시에 돌아가니까 사용자가 끊김 없는 경험을 함
구분 | 싱글스레드 | 멀티스레드 |
---|---|---|
구조 | 스레드 1개 | 스레드 여러 개 |
처리 방식 | 순차 처리 | 동시/병렬 처리 |
속도 | 느릴 수 있음 (작업이 몰리면) | 빠름 (여러 작업 분배) |
안정성 | 안정적 (동기화 문제 없음) | 동기화 필요, 오류 가능 |
구현 난이도 | 쉽다 | 어렵다 (락, 교착상태 등 처리 필요) |
싱글스레드 = 직원 1명 있는 가게 👨🍳
주문 받고 → 요리하고 → 서빙하고 → 계산까지 혼자 다 함 → 손님 많으면 느려짐
멀티스레드 = 직원 여러 명 있는 가게 👩🍳👨🍳
한 명은 주문, 한 명은 요리, 한 명은 서빙 → 동시에 처리 → 빠름
단, 직원들이 서로 같은 재료(자원)를 동시에 쓰려 하면 충돌할 수 있어서 규칙 필요