컨텍스트 스위칭이란?

2024. 3. 18. 13:23·여러가지/이것저것

컨텍스트 스위칭(Context Switching)은 멀티태스킹 운영 체제에서 CPU가 여러 프로세스 또는 스레드를 번갈아 가며 실행하여, 마치 동시에 여러 작업을 처리하는 것처럼 보이게 하는 과정입니다. 이 방법은 시스템의 자원 활용도를 높이고, 사용자에게 더 빠른 응답 시간을 제공하는 데 중요한 역할을 합니다.

컨텍스트 스위칭의 과정

  1. 인터럽트 발생: 타이머 인터럽트, I/O 요청 완료, 멀티스레딩 환경에서의 스레드 전환 요청 등 다양한 이유로 인터럽트가 발생할 수 있습니다.
  2. 현재 상태 저장: 현재 실행 중인 프로세스(또는 스레드)의 상태를 프로세스 제어 블록(PCB)에 저장합니다. 이 상태에는 CPU 레지스터 정보, 프로그램 카운터, 스택 포인터 등이 포함됩니다.
  3. 다음 작업 로드: 다음에 실행할 프로세스(또는 스레드)의 상태를 PCB에서 불러와 CPU의 레지스터에 로드합니다.
  4. 작업 실행: 로드된 상태를 바탕으로 새로운 작업을 실행합니다.

컨텍스트 스위칭의 성능 영향

  • 오버헤드: 컨텍스트 스위칭은 시스템 리소스를 사용하며, 이 과정에서 실제로 작업을 처리하는 것이 아니라 상태를 전환하는 데 시간을 소비합니다. 따라서, 컨텍스트 스위칭이 빈번하게 발생하면 성능 저하가 일어날 수 있습니다.
  • 스레드 간 컨텍스트 스위칭의 효율성: 같은 프로세스 내의 스레드 간 컨텍스트 스위칭은 프로세스 간 전환보다 상대적으로 오버헤드가 적습니다. 이는 스레드가 메모리(코드, 데이터, 힙 영역)를 공유하기 때문에, 스레드 전환 시 공유되는 데이터의 상태를 저장하거나 복원할 필요가 적기 때문입니다.

컨텍스트 스위칭 최적화

컨텍스트 스위칭의 오버헤드를 줄이기 위해, 운영 체제는 스케줄링 알고리즘을 통해 컨텍스트 스위칭의 빈도를 조절하고, 스레드와 프로세스를 효율적으로 관리합니다. 또한, 멀티코어 프로세서의 경우, 병렬 처리를 통해 여러 작업을 동시에 처리함으로써, 전체 시스템의 성능을 향상시킬 수 있습니다.

저작자표시 (새창열림)

'여러가지 > 이것저것' 카테고리의 다른 글

비대칭키, 대칭키 암호화  (0) 2024.03.21
동기와 비동기  (0) 2024.03.18
Process와 Thread의 차이  (0) 2024.03.18
웹서버(Apache, Nginx)의 서버간 라우팅 기능과 OSI7 Layer  (0) 2024.03.18
아파치, 엔지닉스 OSI7계층  (0) 2024.03.18
'여러가지/이것저것' 카테고리의 다른 글
  • 비대칭키, 대칭키 암호화
  • 동기와 비동기
  • Process와 Thread의 차이
  • 웹서버(Apache, Nginx)의 서버간 라우팅 기능과 OSI7 Layer
hyeseong-dev
hyeseong-dev
안녕하세요. 백엔드 개발자 이혜성입니다.
  • hyeseong-dev
    어제 오늘 그리고 내일
    hyeseong-dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (286) N
      • 여러가지 (107)
        • 알고리즘 & 자료구조 (72)
        • 오류 (4)
        • 이것저것 (29)
        • 일기 (1)
      • 프레임워크 (39)
        • 자바 스프링 (39)
        • React Native (0)
      • 프로그래밍 언어 (38)
        • 파이썬 (30)
        • 자바 (3)
        • 스프링부트 (5)
      • 컴퓨터 구조와 운영체제 (3) N
      • DB (17)
        • SQL (0)
        • Redis (17)
      • 클라우드 컴퓨팅 (2)
        • 도커 (2)
        • AWS (0)
      • 스케쥴 (65)
        • 세미나 (0)
        • 수료 (0)
        • 스터디 (24)
        • 시험 (41)
      • 트러블슈팅 (1)
      • 자격증 (0)
        • 정보처리기사 (0)
      • 재태크 (5)
        • 암호화폐 (5)
        • 기타 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    ecs
    Spring WebFlux
    EC2
    RDS
    자바
    mybatis
    Redis
    spring
    FastAPI
    Docker-compose
    docker
    WebFlux
    OOP
    celery
    파이썬
    Spring Boot
    AWS
    reactor
    java
    취업리부트
    Python
    #개발자포트폴리오 #개발자이력서 #개발자취업 #개발자취준 #코딩테스트 #항해99 #취리코 #취업리부트코스
    SAA
    항해99
    프로그래머스
    그리디
    백준
    완전탐색
    DP
    시험
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hyeseong-dev
컨텍스트 스위칭이란?
상단으로

티스토리툴바