운영체제/커널과 사용자 모드

[운영체제] 컨텍스트 스위칭(Context Switching) 완벽 이해: 정의, 동작 원리와 비용

CodeCaine Explorer 2024. 12. 18. 11:33
728x90
반응형
SMALL

1. 컨텍스트 스위칭이란?

컨텍스트 스위칭은 컴퓨터의 운영체제가 하나의 프로그램(혹은 프로세스)을 실행하다가 다른 프로그램을 실행할 때, 현재 상태를 저장하고, 새로운 프로그램을 실행할 수 있도록 상태를 복원하는 과정이에요.

이 과정에서 운영체제는 CPU가 다른 일을 할 수 있도록 자원을 교체하는데, 이때의 작업 전환컨텍스트 스위칭이라고 합니다.

📌 비유: 컨텍스트 스위칭은 우리가 여러 가지 일을 동시에 하는 것과 비슷해요!
예를 들어, 여러 사람과 동시에 대화하려면 각 대화 내용머릿속에 기억하고 순서를 맞춰서 말해야 하죠. 컴퓨터도 비슷해요! 여러 작업을 할 때 상태를 기억하고, 다음 작업으로 넘어가요!


2. 컨텍스트 스위칭의 동작

  • 프로그램을 실행할 때, CPU는 주로 하나의 작업을 처리하고 있습니다.
  • 하지만, 동시에 여러 작업을 처리하려면, CPU가 빠르게 현재 작업의 상태를 저장하고, 다음 작업의 상태를 불러오는 과정이 필요합니다. 이게 바로 컨텍스트 스위칭이에요!

3. 컨텍스트 스위칭의 비용

  • 컨텍스트 스위칭은 시간자원을 사용합니다. 즉, CPU가 작업을 전환할 때마다 시간과 메모리가 소모되죠.
  • 이 과정에서 상태 저장(현재 작업 정보)을 위해 메모리나 레지스터를 사용하고, 새로운 작업의 상태를 불러오기 위해 다시 작업을 시작해야 하므로 비용이 발생합니다.

💡 비유: 여러 사람이 이야기를 바꿀 때마다 이전 대화의 내용을 다시 확인하고, 새로운 대화를 시작하는 것처럼, 컴퓨터도 상태를 저장하고 복원하는 데 시간이 걸려요! ⏳


4. 간단한 예시 코드 (Python으로 컨텍스트 스위칭 이해)

여기서는 Python 코드로 작업을 전환하는 예시를 보여드릴게요. 각 작업은 함수로 표현되고, 상태를 저장하고 복원하는 과정이 컨텍스트 스위칭을 설명하는 방식입니다!

📌 작업을 전환하는 코드

import time

# 작업 1: 숫자 세기
def task1():
    print("Task 1 시작!")
    for i in range(5):
        print(f"Task 1: {i}")
        time.sleep(1)  # 1초씩 기다리기
    print("Task 1 끝!")

# 작업 2: 알파벳 출력
def task2():
    print("Task 2 시작!")
    for letter in ['A', 'B', 'C', 'D', 'E']:
        print(f"Task 2: {letter}")
        time.sleep(1)  # 1초씩 기다리기
    print("Task 2 끝!")

# 컨텍스트 스위칭처럼, 각 작업을 번갈아가며 실행하는 예시
def context_switching_simulation():
    print("컨텍스트 스위칭 시작! 여러 작업을 번갈아 실행해요.")

    # task1과 task2를 번갈아 실행
    task1()  # 작업 1 시작
    task2()  # 작업 2 시작
    task1()  # 작업 1 다시 실행
    task2()  # 작업 2 다시 실행

    print("컨텍스트 스위칭 끝!")

# 실행
context_switching_simulation()

📌 동작 설명

  1. 작업 1 (task1)은 숫자 0부터 4까지 출력하며 1초씩 기다립니다.
  2. 작업 2 (task2)는 알파벳 A부터 E까지 출력하며 1초씩 기다립니다.
  3. 컨텍스트 스위칭 시뮬레이션(context_switching_simulation)에서는 작업을 번갈아 실행하는 것처럼 두 작업을 번갈아 가며 실행합니다.

📌 이 코드의 비유:

  • 작업 1과 작업 2는 각각 독립적으로 실행되는 프로그램처럼 생각할 수 있습니다.
  • 그러나 CPU는 작업 1을 하고 있다가 잠깐 작업 2로 넘어가서 실행하고, 다시 작업 1으로 돌아오는 것처럼 컨텍스트 스위칭이 일어납니다.

5. 컨텍스트 스위칭의 비용

  • 시간: 각 작업을 전환하는 데 시간이 소요됩니다. 즉, 한 작업을 마친 후 다른 작업을 시작할 때마다 상태를 저장하고 복원해야 하기 때문에 시간이 낭비됩니다.
  • 자원: 메모리CPU 레지스터 같은 자원이 필요합니다. 상태를 저장하고 불러오는 과정에서 메모리나 CPU 레지스터를 사용하죠.

💡 비유: 여러 사람이 대화할 때 대화 주제를 바꿀 때마다 새로운 주제를 떠올리기 위한 시간이 필요하듯, 컴퓨터도 작업을 전환할 때마다 자원을 사용하고 시간이 낭비됩니다! ⏳


6. 쉽게 외우는 요점

  • 컨텍스트 스위칭작업을 전환할 때, 현재 작업의 상태를 저장하고 새로운 작업의 상태를 복원하는 과정이에요.
  • 이 과정에서 시간과 자원을 사용하며, 많은 작업이 자주 전환되면 비용이 많이 들 수 있습니다.
728x90
반응형
SMALL