CS 박사되깅 2주차 프로세스 관리

윤현승·2025년 9월 14일
5

CS 스터디

목록 보기
2/8

프로세스와 스레드의 차이

이 주제는 기술면접으로 자주 나오기도 하고 운영체제의 기본이기 때문에 공부할 필요가 있다.

우선 프로세스와 스레드의 차이를 알아보기 전에 프로세스와 스레드가 무엇인지 알아야한다.

프로세스: 운영체제로부터 자원을 할당받은 작업의 단위

스레드: 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위

이를 더 쉽게 이해하려면 프로그램까지 함께 이해하면 좋다.


프로그램과 프로세스

프로그램 → 프로세스 → 스레드

프로그램은 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가지 않은 정적인 상태이다.
이는 쉽게 말해 실행되지 않은 한 덩어리의 코드 상태라는 것이다.

이 프로그램을 실행시킨다는 것은 해당 파일이 컴퓨터 메모리에 올라간다는 것이고 이를 동적인 상태 라고 한다. 이를 뒷받침하듯 위키피디아에서는 프로세스의 정의를 “실행되고 있는 컴퓨터 프로그램” 라고 내리고 있다.


스레드란?

그렇다면 스레드는 무엇일까?
과거에는 프로그램을 실행할 때, 한 개의 프로세스로 해결했다고 한다. 하지만 시간이 흐름에 따라 더 복잡하고 정교한 작업이 필요했고, 운영체제의 특성상 프로세스를 늘릴 수 없었던 터라, 프로세스와는 다른 더 작은 실행 단위인 스레드가 탄생하게 되었다.

스레드는 프로세스의 한계를 해결하기 위해 만들어진 개념이기 때문에 프로세스와 다르게 스레드 간 메모리를 공유하며 작동한다. 스레드끼리 해당 프로세스의 자원을 공유하면서 프로세스 흐름의 일부가 되는 것이다. 스레드를 코드로 비유하면 코드 안의 함수들이라고 볼 수 있겠다.

프로세스들이 운영체제로부터 별도의 메모리 영역을 할당받은 모습
출처: Heee's Development Blog

스레드끼리 프로세스의 Code/Data/Heap 메모리 영역을 공유하는 모습
출처: Heee's Development Blog

Context Switching

1. Context란 무엇인가?

  • 운영체제에서 Context는 CPU가 프로세스나 스레드를 실행하는 데 필요한 모든 상태 정보를 의미한다.
  • 여기에는 CPU 레지스터 상태, 프로그램 카운터, 프로세스의 메모리 정보(스택, 힙, 데이터 영역 등), 프로세스 제어 블록(PCB) 정보 등이 포함된다.
  • 간단히 말해, 프로세스 또는 스레드가 CPU에서 작업을 계속할 수 있도록 하는 현재 ‘상황’ 또는 ‘문맥’ 정보라고 할 수 있다.

2. Context Switching이란?

  • Context Switching은 CPU가 현재 실행 중인 프로세스 또는 스레드의 Context(상태 정보)를 저장하고, 다른 프로세스 또는 스레드의 저장된 Context를 복원하여 실행을 전환하는 과정을 말한다.
  • 즉, CPU가 한 작업에서 다른 작업으로 넘어갈 때 이전 작업의 상태를 적절히 저장해 두고, 다음 작업의 상태를 불러와 작업을 계속 수행할 수 있도록 하는 일련의 작업이다.
  • 멀티태스킹 환경에서 아주 빈번히 발생하며, 여러 프로세스가 마치 동시에 실행되는 것처럼 보이게 하는 핵심 기술이다.
  • 이 과정은 운영체제의 커널 모드에서 이루어지며 CPU 자원을 효율적으로 공유하는 데 필수적이다.

3. Context Switching 인터럽트 요청의 종류

Context Switching이 발생하는 주요한 인터럽트 요청들은 다음과 같다

  1. Timer Interrupt (타임 슬라이스 만료)

    일정 시간 동안 CPU를 사용한 후, 운영체제는 CPU를 다른 프로세스에 할당하기 위해 인터럽트를 발생시키고 Context Switching을 수행한다.

  2. I/O Interrupt (입출력 요청 완료 또는 대기)

    프로세스가 I/O 작업(디스크, 네트워크 등)을 요청하거나 완료하면 CPU가 다른 프로세스로 넘어가야 하므로 Context Switching이 발생한다.

  3. System Call (시스템 호출)

    사용자 프로그램이 커널 서비스를 요청하면 Context Switching이 될 수 있다. 예를 들어, 파일 요청, 프로세스 생성 등이 있다.

  4. 프로세스 생성 및 종료 (Fork, Exit)

    새 프로세스가 생성되거나 기존 프로세스가 종료되는 경우에도 Context Switching이 필요하다.

  5. 외부 이벤트 발생

    하드웨어 인터럽트, 긴급 상황 발생 등으로 CPU가 즉시 처리할 작업이 바뀔 때 발생한다.

Context Switching은 여러 프로세스가 마치 동시에 일어나는 듯이 보이게 해주며, CPU 자원을 효율적으로 공유하는 데 필수적이지만, 남용하면 CPU 성능이 저하될 수도 있다.
→ 정확한 기준은 시스템 환경, OS, 하드웨어에 따라 다르나 초당 수백 ~ 천여 회 이상의 빈도가 위험 신호이다.

CPU 스케줄링 알고리즘이란?

CPU 스케줄링 알고리즘은 CPU core의 개수가 한정적일 때 운영체제가 여러 프로세스 중 어떤 프로세스에 CPU를 언제 할당할지 결정하는 규칙을 말한다.

효율적인 CPU 사용과 공정한 작업 분배, 응답 속도 향상 등을 목표로 한다.


비선점형 스케줄링 (Non-Preemptive Scheduling)

  • 프로세스가 CPU를 점유하면 자발적으로 종료하거나 I/O 대기 상태가 될 때까지 CPU를 빼앗기지 않는다.
  • 중간에 다른 프로세스로 CPU가 넘어가지 않기 때문에 단순하고 Context Switching 오버헤드가 발생할 경우가 적다.

대표 알고리즘

  • FCFS (First Come First Served, 선입선출) 먼저 도착한 순서대로 CPU 할당
    • 장점: 구현이 간단, 기아 문제 없음
    • 단점: 오래 걸리는 프로세스가 앞에 있으면 뒤 프로세스 대기 길어짐 (Convoy Effect)
    • Convoy 효과란 시간이 오래 걸리는 몇 개의 프로세스로 인해 전체 OS가 느려지는 현상
  • SJF (Shortest Job First, 최단 작업 우선) 실행 시간이 가장 짧은 프로세스부터 실행
    • 장점: 평균 대기 시간 최소화
    • 단점: 긴 작업은 계속 대기(기아 현상 발생 가능), 실행 시간 예측 필요.

선점형 스케줄링 (Preemptive Scheduling)

  • CPU를 점유 중인 프로세스가 강제로 중단되고, 더 높은 우선순위 프로세스나 타임퀀텀 초과 시 다른 프로세스에 CPU를 양도할 수 있다.
  • 멀티태스킹과 시간 분할 시스템에 적합하며, 반응성을 높여준다.

대표 알고리즘

  • Priority Scheduling (우선순위 기반) 우선순위가 높은 프로세스부터 CPU 할당
    • 장점: 중요한 작업 우선 처리 가능
    • 단점: 낮은 우선순위 프로세스가 무한 대기할 수 있는 기아 현상 발생 가능 → 에이징 기법으로 완화
    • 에이징 기법: 오래 기다린 만큼 우선순위를 상향시켜줌.
  • RR (Round Robin, 라운드 로빈) 각 프로세스에 동일한 시간(tq)이 할당되고, 순환하며 CPU를 분배
    • 장점: 공평한 CPU 분배, 반응성 좋음
    • 단점: 너무 짧은 타임퀀텀일 경우 문맥 교환 비용 증가, 너무 긴 경우 반응성 저하.

오늘의 결론

운영체제는프로세스와 스레드를 효율적으로 관리하며, CPU가 여러 작업을 돌아가며 처리할 수 있도록 Context Switching을 수행한다.

스케줄링 알고리즘을 통해 실행 순서와 시간을 정하고, 시스템 효율성과 반응성을 높인다.

→ 이 세 가지 개념은 현대 컴퓨팅의 멀티태스킹과 자원 관리를 이해하는 데 기본이 된다!!

profile
윤현승입니다!

5개의 댓글

comment-user-thumbnail
2025년 9월 14일

깔끔한 정리 좋아요!

답글 달기
comment-user-thumbnail
2025년 9월 14일

깔끔하게 정리되어 있어서 보기 좋았고 마지막에 짧게 중요한 부분이 요약되어 있어서 좋았어요

답글 달기
comment-user-thumbnail
2025년 9월 15일

이해하기 쉽게 잘 정리 되어 있어서 좋았어요!

답글 달기
comment-user-thumbnail
2025년 9월 15일

2주에도 CS박사되깅 써주세요~
프로세스와 스레드 차이도 있음 좋을 것 같아요

답글 달기
comment-user-thumbnail
2025년 9월 15일

컨텍스트 스위칭 인터럽트 요청 종류를 다양하게 설명해주셨네요!! 이해하기 쉬웠어요~

답글 달기