컨텍스트 스위칭(Context Switching)

2024. 10. 23. 21:39·Computer Science/Operating System
반응형

Context Switching 이란?

CPU에서 실행중이던 프로세스/스레드가 다른 프로세스/스레드로 교체되는 것.

기존 프로세스/스레드의 상태 or 레지스터 값을 저장하고, 다음 프로세스/스레드의 상태 or 레지스터 값을 교체하는 작업.

PCB나 TCB 를 기반으로 프로세스의 상태를 저장하고 다시 복원시키는 과정.

* PCB란? [Computer Science/OS] - PCB(Process Control Block)

 

 

 

 

Context란?

사용자와 다른 사용자 || 사용자와 시스템 || 디바이스간 상호작용을 미치는 개체의 현재 상황(상태)를 규정하는 정보들을 말한다.

OS에서는 CPU가 프로세스/스레드를 실행하기 위한 해당 프로세스/스레드의 정보들을 말한다.

  • context 의 구성요소
    • CPU 레지스터 값 : 현재 실행 중인 명령어의 정보를 저장하는 레지스터 값/
    • PC (Program Counter) : 다음 실행시킬 명령어의 메모리 주소
    • 메모리 관리 정보 : 페이지 테이블 or 세그먼트 테이블과 같은 메모리 할당 정보
    • 프로세스 상태
    • 입출력 상태 : 파일 디스크립터, 네트워크 소켓 등 입출력 자원 상태
    • ...

 

 

 

Context Switching 과정

컨텍스트 스위칭은 프로세스가 종료되거나 인터럽트에 의해 발생된다.

 

프로세스 종료 시 컨텍스트 스위칭

이 경우 프로세스가 종료될 때 더이상 해당 프로세스 상태를 유지할 필요가 없다.

  1. 프로세스 종료 요청
  2. 자원 해제 : 할당 중인 모든 자원(메모리, 파일 디스크립터 등)을 해제
  3. 프로세스 테이블 업데이트 : 프로세스 삭제 or 상태 종료로 변경
  4. 컨텍스트 스위칭 준비 : 다음 실행할 프로세스의 PCB를 준비
  5. 컨텍스트 스위칭

 

인터럽트 시 컨텍스트 스위칭

  1. 인터럽트 발생
  2. 현재 프로세스 상태 저장 (PCB에 저장)
  3. 인터럽트 서비스 루틴(ISR: 인터럽트를 처리하는 코드) 실행
  4. ISR 종료 후 저장된 프로세스 상태 복원
  5. 복원된 상태로 원래 프로세스 실행 재개

Context Switching 이 발생하는 Interrupt 유형

더보기

1. I/O request (입출력 요청할 때)
2. time slice expired (CPU 사용시간이 만료 되었을 때)
3. fork a child (자식 프로세스를 만들 때)
4. wait for an interrupt (인터럽트 처리를 기다릴 때)
...

 

 

 

 

Context Switching 비용

  • 유휴시간 발생 : 인터럽트 시 컨텍스트 스위칭 과정에서 유휴상태(Idle)가 겹쳐 오버헤드 발생. CPU의 가용성 떨어짐
    • 해결법 : 스케줄링 최적화, 하드웨어적 지원(CPU가 특정 조건 감지했을 때만 인터럽트 발생) ...
  • 캐시미스 : 프로세스가 가지고 있는 메모리 주소가 그대로 있으면 잘못된 주소변환이 생김. 때문에 캐시 클리어 과정이 무조건 일어나고 캐시미스가 발생할 수 있음.
    • 해결법 : 예측 알고리즘사용, 캐시에 로컬리티 원칙 활용 ...

 

 

 

 

참고: 

더보기

https://jeong-pro.tistory.com/93

 

728x90
반응형

'Computer Science > Operating System' 카테고리의 다른 글

IPC(Inter-Process Communication)  (0) 2024.10.29
멀티프로세싱(Multiprocessing), 멀티스레딩(Multithreading)  (0) 2024.10.24
PCB(Process Control Block)  (0) 2024.10.23
프로세스 메모리 구조, 프로세스/스레드 차이  (0) 2024.10.22
프로그램 컴파일 과정 - C, C++/Java ( Interpreter / JIT )  (0) 2024.10.18
'Computer Science/Operating System' 카테고리의 다른 글
  • IPC(Inter-Process Communication)
  • 멀티프로세싱(Multiprocessing), 멀티스레딩(Multithreading)
  • PCB(Process Control Block)
  • 프로세스 메모리 구조, 프로세스/스레드 차이
settong
settong
    250x250
  • settong
    개 발 자 국
    settong
  • 전체
    오늘
    어제
    • 전체보기 (202)
      • Computer Science (50)
        • Network (7)
        • Operating System (18)
        • Data Structure (9)
        • Database (11)
        • Algorithm (5)
      • Language (17)
        • Java (17)
        • Javascript (0)
        • Python (0)
      • Devops (20)
        • AWS (0)
        • Naver Cloud (16)
        • CICD (3)
        • 웹 서버 관리 (1)
      • Front (0)
        • React (0)
      • Backend (5)
        • Spring (5)
      • 코딩 테스트 정복기 (110)
        • 백준 (51)
        • 프로그래머스 (53)
        • 기타 (6)
      • etc (0)
      • 경제 상식 (0)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    분할정복
    ncp200
    벨만포드
    해시
    lcs
    다익스트라
    프로그래머스
    다이나믹프로그래밍
    Network
    백트래킹
    ncp202
    Spring Boot
    백준
    집합
    완전탐색
    ncp
    github actions
    DFS
    CI/CD
    BFS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
settong
컨텍스트 스위칭(Context Switching)
상단으로

티스토리툴바