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 (
task1
)은 숫자 0부터 4까지 출력하며 1초씩 기다립니다. - 작업 2 (
task2
)는 알파벳 A부터 E까지 출력하며 1초씩 기다립니다. - 컨텍스트 스위칭 시뮬레이션(
context_switching_simulation
)에서는 작업을 번갈아 실행하는 것처럼 두 작업을 번갈아 가며 실행합니다.
📌 이 코드의 비유:
- 작업 1과 작업 2는 각각 독립적으로 실행되는 프로그램처럼 생각할 수 있습니다.
- 그러나 CPU는 작업 1을 하고 있다가 잠깐 작업 2로 넘어가서 실행하고, 다시 작업 1으로 돌아오는 것처럼 컨텍스트 스위칭이 일어납니다.
5. 컨텍스트 스위칭의 비용
- 시간: 각 작업을 전환하는 데 시간이 소요됩니다. 즉, 한 작업을 마친 후 다른 작업을 시작할 때마다 상태를 저장하고 복원해야 하기 때문에 시간이 낭비됩니다.
- 자원: 메모리와 CPU 레지스터 같은 자원이 필요합니다. 상태를 저장하고 불러오는 과정에서 메모리나 CPU 레지스터를 사용하죠.
💡 비유: 여러 사람이 대화할 때 대화 주제를 바꿀 때마다 새로운 주제를 떠올리기 위한 시간이 필요하듯, 컴퓨터도 작업을 전환할 때마다 자원을 사용하고 시간이 낭비됩니다! ⏳
6. 쉽게 외우는 요점
- 컨텍스트 스위칭은 작업을 전환할 때, 현재 작업의 상태를 저장하고 새로운 작업의 상태를 복원하는 과정이에요.
- 이 과정에서 시간과 자원을 사용하며, 많은 작업이 자주 전환되면 비용이 많이 들 수 있습니다.
728x90
반응형
SMALL
'운영체제 > 커널과 사용자 모드' 카테고리의 다른 글
시스템 안전의 비밀! 커널 모드와 사용자 모드가 다르게 작동하는 이유 - 코드카인 티스토리 (0) | 2024.12.26 |
---|---|
컴퓨터의 긴급 처리 기술, 인터럽트를 쉽게 배우는 가이드 - 코드카인 티스토리 (0) | 2024.12.25 |
파일 열기부터 앱 실행까지! 초보자를 위한 시스템 콜 입문 가이드 - 코드카인 티스토리 (0) | 2024.12.24 |