[CS] 컴퓨터 OS 기본

Jeini·2025년 8월 28일
0

📌 CS

목록 보기
4/6

💡 목차

❗️기본적인 OS 기능과 프로세스, 스레드를 이해하고 컴퓨터 동작을 이해할 수 있다.

  1. OS 기본 개념과 역할
  2. 프로세스와 스레드 기본
  3. 내 컴퓨터 OS 동작 알아보기

🖥️ 운영체제(OS)란?

컴퓨터 하드웨어와 사용자를 이어주는 ‘중간 관리자’ 같은 소프트웨어

  • 우리가 직접 하드웨어(CPU, 메모리, 하드디스크)를 다루긴 너무 복잡하다.
  • 그래서 운영체제가 그 사이에서 통역해주고 관리해준다.

⁉️ 운영체제가 하는 일

운영체제의 주요 역할은 크게 4가지:

  • 자원 관리(Resource Management)
    CPU(연산), 메모리(RAM), 저장장치(HDD/SSD), 입출력장치(키보드, 마우스, 프린터) 등 하드웨어 관리.
    누가 CPU 쓸지, 메모리 얼마나 줄지 정리하는 "관리자" 역할 🧑‍💼

  • 프로세스 관리(Process Management)
    동시에 여러 프로그램이 실행될 때, 충돌 없이 잘 돌아가게 함.
    예: 음악 들으면서 웹서핑 + 파일 다운로드 → 운영체제가 CPU 시간을 나눠줌

  • 파일 시스템 관리(File System)
    응용 프로그램 실행, 권한 관리
    데이터 저장/읽기 쉽게 폴더 구조 제공.
    우리가 "C드라이브", "내 문서" 보는 게 사실 OS 덕분임 📂

  • 사용자 인터페이스(User Interface)
    사용자가 컴퓨터와 쉽게 소통하도록 화면(그래픽 UI)이나 명령어(CLI) 제공.
    윈도우 → 바탕화면, 아이콘
    리눅스 → 터미널 명령어

✨ 정리

  • 운영체제 = 하드웨어와 사용자 사이의 관리자
  • 주요 역할 = 자원 관리, 프로세스 관리, 파일 관리, 사용자 인터페이스 제공
  • 없으면? → 우리는 CPU, 메모리를 직접 제어해야 해서 컴퓨터 쓰기 거의 불가능 😅

⁉️ 만약 운영체제가 없다면


⚙️ 프로그램(Program)

프로그램(Program): 컴퓨터가 해야 할 일을 적어둔 ‘명령어들의 집합’

  • 사람이 원하는 작업(계산, 게임, 문서 작성 등)을 하기 위해 순서대로 정리된 명령어 세트라고 보면 된다.
    예: "더하기 프로그램"이라면 → 두 수 입력받기 → 더하기 → 결과 출력하기 이런 식의 단계들이 모여 있는 것.

📃 프로세스(Process)

프로세스(Process): 실행 중인 프로그램

  • 하드디스크에 있는 프로그램 파일을 운영체제가 메모리에 불러와서 CPU가 실행하는 상태
  • 즉, 프로그램이 "살아 움직이는 중"이라고 보면 된다.

⚙️ 프로세스의 구성

프로세스는 단순히 “돌아간다”가 아니라, 운영체제가 관리할 여러 요소를 가지고 있다:

  • 코드 영역(Code) → 실행할 명령어들
  • 데이터 영역(Data) → 전역 변수, 상수 등
  • 스택(Stack) → 함수 호출, 지역 변수, 실행 흐름 저장
  • 힙(Heap) → 동적으로 할당되는 메모리 (new, malloc 같은 것들)

💡 운영체제는 각 프로세스가 독립적으로 실행되도록 메모리 공간을 따로 분리해준다.

⚙️ 프로세스의 특징

  • 독립성: 다른 프로세스랑 메모리 직접 공유 불가 (안전성 확보)
  • 동시성: 여러 프로세스가 동시에 실행되는 것처럼 보임 (멀티태스킹)
  • 생명주기: 프로세스는 “생성 → 준비 → 실행 → 대기 → 종료” 같은 상태 전환을 가짐

⁉️ 프로그램과 프로세스 차이

  • 프로그램 = 그냥 "설계도", "레시피" 같은 것 📖 (하드디스크에 저장되어 있음)
  • 프로세스 = 그 프로그램이 실제로 실행 중인 상태 🍳 (CPU와 메모리를 쓰면서 돌아감)
  • 예를 들어:
    MS Word.exe 파일 자체 → 프로그램
    내가 지금 Word 켜서 글 쓰는 중 → 프로세스
구분프로그램프로세스
정의명령어들의 집합(정적인 설계도)실행 중인 프로그램(동적인 존재)
저장 위치보통 하드디스크(SSD/HDD)메모리(RAM)에 올라와 실행
비유요리 레시피 📖실제 요리 중인 요리사 👩‍🍳

🪱 스레드(Thread)

스레드(Thread): 프로세스 안에서 실제로 일을 수행하는 실행 단위

  • 프로세스가 “큰 집”이라면, 그 안에 여러 “작업자(스레드)”가 있는 것.
  • 즉, 하나의 프로그램(=프로세스) 안에 여러 스레드가 동시에 일을 나눠서 할 수 있다.

✅ 스레드의 장점

  • 자원 공유 가능: 같은 프로세스 안에서 데이터 공유 쉬움
  • 효율적 멀티태스킹: 웹브라우저에서
    스레드1 → 화면 그리기
    스레드2 → 파일 다운로드
    스레드3 → 사용자 입력 처리
    동시에 돌아갈 수 있음

❌스레드의 단점

  • 안정성 문제:
    같은 메모리를 공유하니까, 하나가 잘못 건드리면 다른 스레드도 영향 받아서 오류 가능

  • 동기화 문제:
    여러 스레드가 동시에 같은 자원(데이터)에 접근하면 꼬일 수 있음 → “동기화(lock)” 필요

⁉️ 프로세스와 스레드 차이

  • 프로세스 = 식당 🍽️ (하나의 가게, 독립된 공간)
  • 스레드 = 직원 👩‍🍳👨‍🍳 (식당 안에서 동시에 다른 역할: 주문 받기, 요리하기, 서빙하기)
  • 식당(프로세스) 자체는 독립되어 있지만, 직원들(스레드)은 같은 주방/재료를 공유하면서 일을 분담함.
구분프로세스스레드
정의실행 중인 프로그램프로세스 내부에서 실행되는 작은 실행 흐름
메모리프로세스끼리는 메모리 공간 분리같은 프로세스의 스레드끼리는 메모리 공유
독립성서로 완전히 독립 (한 프로세스 죽으면 영향 없음)같은 프로세스 안에서 서로 영향 줌
생성 비용무거움 (메모리, 자원 다 따로 배정)가벼움 (코드/데이터 공유)

🚀 싱글스레드 vs 멀티스레드

1️⃣ 싱글스레드 (Single Thread)

👉 하나의 프로세스 안에 스레드가 1개만 있는 구조

  • 한 번에 하나의 작업만 처리 가능
  • 작업을 순서대로 진행 → 앞의 작업이 끝나야 다음 작업 시작
  • 구현이 간단하고, 동기화 문제가 없음

💡 예시

  • 옛날 도스(DOS) 프로그램
  • “계산기 앱” → 입력 → 계산 → 출력 (동시에 여러 작업 못 함)

2️⃣ 멀티스레드 (Multi Thread)

👉 하나의 프로세스 안에 여러 개의 스레드가 동시에 실행

  • 여러 작업을 병렬처럼 동시에 처리 가능 (CPU 코어 수에 따라 실제 병렬/동시성 차이 있음)
  • 자원을 공유하므로 메모리 효율적
  • 하지만 동기화 문제(lock, race condition 등) 생길 수 있음

💡 예시 (웹 브라우저)

  • 스레드1 → 화면 렌더링
  • 스레드2 → 파일 다운로드
  • 스레드3 → 사용자 입력 처리

➡️ 동시에 돌아가니까 사용자가 끊김 없는 경험을 함

3️⃣ 비교 정리

구분싱글스레드멀티스레드
구조스레드 1개스레드 여러 개
처리 방식순차 처리동시/병렬 처리
속도느릴 수 있음 (작업이 몰리면)빠름 (여러 작업 분배)
안정성안정적 (동기화 문제 없음)동기화 필요, 오류 가능
구현 난이도쉽다어렵다 (락, 교착상태 등 처리 필요)

4️⃣ 쉽게 비유하면

  • 싱글스레드 = 직원 1명 있는 가게 👨‍🍳
    주문 받고 → 요리하고 → 서빙하고 → 계산까지 혼자 다 함 → 손님 많으면 느려짐

  • 멀티스레드 = 직원 여러 명 있는 가게 👩‍🍳👨‍🍳
    한 명은 주문, 한 명은 요리, 한 명은 서빙 → 동시에 처리 → 빠름
    단, 직원들이 서로 같은 재료(자원)를 동시에 쓰려 하면 충돌할 수 있어서 규칙 필요


🖥️ 내 컴퓨터 OS 확인하기

🍎 Mac

  1. About this Mac으로 1차 확인하기
  2. Activity Monitor로 Process, Threads 확인 ( PID = Process Id)

🪟 Window

  1. Ctrl + Shift + ESC 단축키로 확인 가능.
  2. Thread가 표시 되지 않을 경우, 세부 -> PID, thread 찍어서 표시
profile
Fill in my own colorful colors🎨

0개의 댓글