lunchScreen/Interview_Questions

Context Switching의 개념과 과정

sustainable-git opened this issue · 2 comments

Context Switching의 개념과 과정
  • Context Switcing이란 Process가 CPU를 사용중인 상태에서 다른 Process가 CPU를 사용하기 위해 이전의 상태(문맥)를 PCB에 보관하고, 새로운 Process의 상태를 적재하는 작업을 말합니다.
  • PCB에 저장되는 정보는 다음과 같습니다.
    • Process의 상태 : 생성, 준비, 수행, 대기, 중지
    • Program Counter : 다음 실행할 명령어 주소
    • Register : 누산기, Stack, index
    • Process Number
  • Context Switching은 multitasking, interrupt handling, user mode와 kernel mode의 전환
  • Interrupt가 일어나는 상황은 주로 다음과 같습니다.
    • I/O request
    • time slice expired
    • fork a child
    • wait for an interrupt
  • Context Switching을 하는 동안에는 작업을 수행할 수 없습니다. 때문에 일종의 Overhead라고 볼 수 있습니다.

[운영체제] 유저모드와 커널모드에 대해서

문맥 교환 : 프로세스들은 문맥을 보존하면서 서로 번갈아 수행한다. 이 때 일어나는 작업이 문맥 교환이다. 문맥교환은 CPU를 다른 프로세스로 넘기는 작업이다. 실행이 정지되는 프로세스의 문맥은 보존되고, 새로 실행되는 프로세스의 문맥이 활성화된다. 사용자 수준 문맥은 메모리에 그냥 남아있고, 커널 수준 문맥은 추후의 복구를 위해 PCB에 저장되었다가 속개시 원복된다. 이 때 프로세스의 자원 사용정보나 커널의 프로레스 관리 정보는 원래 PCB에 저장되어 있어 그대로 두면 된다.

문맥 교환의 시점 : 문맥 교환의 시점은 타임슬라이스의 소진에 따른 스케쥴링으로 다른 프로세스에게 선정되거나 인터럽트로 CPU가 선점 당했을 때, (비자발적 문맥교환) / 프로세스 스스로 입출력을 요청하거나 프로세스 스스로 다른 프로세스가 보낼 시그널에 대한 대기 요청으로 CPU를 반납할 때 (자발적 문맥교환)이다. (당장은 이해가 잘 안될 수 있지만 추후 더 자세히 알아볼 것이다.)

https://inuplace.tistory.com/290?category=884574