[운영체제] Context Switching

Chloe Choi·2021년 2월 24일
0

운영체제

목록 보기
7/10

Context Switching

하나의 Task가 CPU를 사용 중인 상태에서 다른 Task가 CPU를 사용하도록 하기 위해, 이전의 Task의 상태를 보관하고 새로운 Task의 상태를 적재하는 작업

*Task = Process / Thread

흐름

[Task #1 is Running]
① Interrupt 발생
② 그 정보를 자료구조에 저장하고 이제 실행하고자 하는 Task 정보를 가져와 적재
[Task #2 is Running]

①, ② 단계 = Context Switching
👉 Context Switching 시, CPU는 아무런 일을 하지 못해 오버헤드 발생. 따라서, 이 영향을 최소화하는 것이 중요

저장 자료구조

두 가지 자료구조가 존재

PCB

  • Process Control Block, 프로세스 별로 존재하는 자료구조
  • 포함하는 정보
    process id, process group id, the parent process and child processes, the heap pointer, program counter, scheduling state (running, ready, blocked), permissions (what system resources the process is allowed to access), content of the general purpose registers, and open files

TCP

  • Thread Control Block, 스레드 별로 존재하는 자료구조
  • 포함하는 정보
    register values, stack pointer, program counter, scheduling state, thread id, PCB를 가리키는 포인터
  • PCB보다 적은 데이터를 갖는 자료구조

TCB는 Context Switching의 기본단위로,

  • 같은 프로세스 내 Context Switching이 발생하면 TCB 정보만 저장
  • 다른 프로세스 간 Context Switching이 발생하면 PCB, TCB 정보 저장

따라서, Context Switching 관점에서는 오버헤드가 적은 멀티스레딩이 더 좋은 선택지

+) 멀티프로그래밍 시 더 좋은 선택지는?

멀티프로세싱

하나의 응용프로그램을 여러 개의 프로세스로 구성해 각 프로세스가 하나의 작업을 처리하도록 하는 것

장점

하나의 프로세스의 문제가 다른 프로세스에 영향을 끼치지 않음

단점

  • Context switching 시 오버헤드 존재
  • 어려운 ICP

멀티스레딩

하나의 응용프로그램을 여러 개의 스레드로 구성하고 각 스레드를 하여금 하나의 작업을 처리하도록 하는 것

장점

  • 자원의 효율성 증대
  • 처리비용감소 (스레드간 자원 주고받기 수월,빠른 context switching)
  • 간단한 통신 방법

단점

  • 주의 깊은 설계 필요
  • 까다로운 디버깅
  • 자원공유 문제(동기화 문제)
  • 하나의 스레드의 문제가 전체 프로세스에 확산

이런 점을 고려해 멀티프로그래밍 필요 시 멀티프로세싱 / 멀티스레딩을 선택 !!🤓

profile
똑딱똑딱

0개의 댓글