Search

[3장 프로세스 스케줄러]10.컨텍스트 스위치와 처리 성능

Publish Date
Category
Status
Done
1 more property
컨텍스트 스위치와 처리 성능
컨텍스트 스위치는 멀티태스킹 환경에서 필수적인 기술로, CPU 자원 활용을 극대화하고 사용자 경험을 향상시킨다. 하지만 빈번한 전환은 성능 저하로 이어질 수 있으므로, 효율적인 스케줄링과 적절한 문맥 전환 관리가 중요하다.

컨텍스트 스위치

컨텍스트 스위치(Context Switch)는 CPU가 실행 중인 프로세스를 다른 프로세스로 전환할 때 발생하는 작업이다. 따라서 현재 실행 중인 프로세스를 중단하고, 다른 프로세스를 실행하기 위해서는 2가지 동작이 필요하다.
현재 프로세스의 상태를 저장(State Save)한다.
다른 프로세스의 상태를 복원(State Restore)한다.
그렇다면 프로세스가 복원에 필요한/실행에 필요한 상태 정보는 무엇이 있는가? 이를 프로세스의 문맥(Context)라고 한다.
항목
설명
프로그램 카운터
다음 실행할 명령어의 주소 저장
CPU 레지스터 값
CPU 레지스터의 상태(데이터, 플래그, 스택 포인터 등)
프로세스 상태
실행 중, 준비 상태, 대기 상태 등 현재 프로세스의 상태
메모리 관리 정보
페이지 테이블, 세그먼트 테이블 등 메모리 주소 매핑 정보
스케줄링 정보
우선순위, CPU 점유 시간 등 프로세스 스케줄링에 필요한 정보
입출력 상태 정보
입출력 장치 사용 상태 및 대기 중인 요청 정보
프로세스 식별 정보
프로세스 ID(PID)와 부모 프로세스 ID
스택 및 힙 정보
스택(함수 호출 정보)과 힙(동적 메모리) 위치 및 크기

과정

1.
현재 프로세스에 인터럽트(중지)가 발생한다.
2.
현재 프로세스의 Context를 PCB에 저장: State Save
프로세스(P0)의 Context를 PCB0에 저장한다.
P0 프로세스 상태: Running → Ready / Sleeping
3.
스케줄러 작동:
스케줄러가 다음 실행할 프로세스(P1)를 선택한다.
우선순위, 대기시간, CPU 점유 시간 등을 고려
4.
새로운 프로세스의 Context 복원: State Restore
선택된 프로세스(P1)의 PCB1에서 Context 정보를 로드한다.
P1 프로세스 상태: Ready → Running
5.
CPU 재개
새로운 프로세스가 실행

특징

멀티태스킹 환경에서 CPU를 공유하기 위해 발생
현재 프로세스의 레지스터와 메모리 상태를 저장하고 복구
각 프로세스의 상태는 PCB에 저장
일반적으로 마이크로 초 수준으로 굉장히 빠르게 전환
문맥 전환 과정에서 실행이 중단되므로 CPU가 실제 작업을 하지 않는 시간이 발생
타임 슬라이스가 짧거나 멀티프로세스 환경일수록 더 자주 발생
항목
장점
단점
멀티태스킹 지원
여러 프로세스를 순환하며 동시 작업처럼 보이게 함
CPU가 실제 작업보다 문맥 저장/복구에 시간을 소모
CPU 자원 활용
프로세스 대기 시간 동안 다른 작업 처리로 자원 효율 향상
자주 발생 시 성능 저하 및 시스템 응답 시간 증가
우선순위 처리
중요한 작업을 즉시 실행 가능
캐시 무효화로 인해 데이터 재로드 비용 발생
응답성 개선
대화형 시스템에서 빠른 사용자 응답 제공
커널의 구현 복잡성이 증가

처리 성능

처리 성능 지표

처리 성능은 시스템 운영에서 중요한 요소이며 다음 두 가지 지표로 측정된다.
턴어라운드 타임(TAT): 요청 시작부터 종료까지의 시간
스루풋(Throughput): 단위 시간당 처리 완료된 작업 개수

성능 측정 실습

최대 8개 프로세스를 실행하며, 각 프로세스의 평균 처리 시간을 측정한다.
실습코드: cpuperf.sh
./cpuperf.sh 8
Bash
복사
# 프로세스개수 TAT Throughput 1 1.916 0.519 2 3.766 0.531 3 5.473 0.532 4 7.172 0.552 5 9.337 0.521 6 10.730 0.546 7 12.276 0.566 8 14.741 0.531
Bash
복사
결과(cpuperf.data)
평균 턴어라운드 타임[초]
스루풋[프로세스/초]
턴아라운드타임(TAT):
프로세스 개수가 늘어나면 평균 처리 시간이 증가한다.
논리 CPU 개수 이상으로 프로세스가 많아지면 지연이 가중된다.
스루풋(Throughput):
프로세스 개수가 논리 CPU 개수와 같아질 때까지 증가한다.
논리 CPU 개수를 초과하면 스루풋 개선 한계 도달한다.

병렬 처리와 CPU 활용

문제 정의

논리 CPU 개수보다 많은 프로세스가 실행되면 컨텍스트 스위치 증가로 인해 성능 저하 발생.
병렬 처리 환경에서 논리 CPU 자원을 최대한 활용해야 함.

현대 CPU 설계 변화

과거: 싱글 스레드 성능을 중심으로 CPU 성능 개선.
현재: 멀티코어와 병렬 처리 기반 성능 향상이 주류.

핵심 인사이트

CPU 코어 수를 고려한 효율적 병렬 처리 설계가 중요.
병렬 실행 환경에서 적정 프로세스 수를 유지해야 스루풋과 지연 간의 균형을 확보 가능.

실습 코드

cpuperf.sh
plot-perf.py

마무리

Q&A

Search
Main PageCategoryTagskkogggokkAbout MeContact