문맥교환 과정

I. 자원 할당 시 정보교환, 문맥교환의 개념

  • 프로세스 실행 중 다른 프로세스의 CPU 사용 위해 작업 상태를 보관하고 새 프로세스 상태 적재 작업
     

II. 문맥교환의 절차

가. 문맥교환 절차도

나. 문맥교환 절차

단계절차설명
1인터럽트/시스템 호출– 운영체제에서 프로세스 스케쥴러에 의해 인터럽트 발생
2커널 모드 전환– 프로세스가 실행되는 사용자모드에서 커널 모드로 전환
3현재 프로세스 상태 PCB 저장– 기존 실행되는 프로세스 정보를PCB에 저장
4다음 실행 프로세스 로드– PCB에 있는 다음 실행 프로세스 상태 정보 복구
5사용자 모드 전환– 커널 모드에서 사용자 모드로 전환하여 프로세스 실행
  • 문맥 교환 절차 중 dispatch, timeout 등 실행 상태가 전이되는 과정에서 문맥교환 발생

 

III. 태스크간 문맥교환 과정

가. 태스크간 문맥교환 개념도

– 스택(STACK)
LIFO 자료구조
– 스택포인터(SP)
최상위 위치한 자료 가리킴
(PUSH,POP 시 변경)
– CPU 레지스터
Context 보관
멀티프로세스 환경에서 실행중인 프로세스 상태 보관 및 신규 프로세스 상태를 CPU에 적재하는 과정
  • 스택, TCB, CPU 레지스터 등 이용하여 문맥 교환 과정 진행

나. 태스크간 문맥교환과정

단계설명실행 영역
1각 TCB(Task Control Block)는 태스크의 우선순위와 스택포인터 보유N/A
2준비 상태 태스크의 TCB 스택은 실행했던 문맥을 마지막 스택에 넣고 끝가리킴TCB 영역
3태스크2가 준비되어 실행 순서에 SP가 가리키던 문맥을 CPU 레지스터에 복사TCB → CPU SP 레지스터
4SP는 문맥을 복구하며 삭제한 만큼 변화되어 다시 해당 태스크 스택으로 사용스택 영역
5실행되던 태스크가 멈추고 다른 태스크로 바뀔 때 반대로 태스크의 스택 저장CPU SP레지스터 → TCB
6SP를 Push한 만큼 업데이트 후 CPU 사용권에서 벗어남CPU SP 레지스터
  • 시스템 상 살아있는 모든 태스크는 자신만의 스택과 TCB 보유

 

IV. 문맥교환의 오버헤드 해결 방안

해결 방안설명
프로그램 다중화 수준 낮춤– 다중 프로그래밍 수준을 낮추어 문맥 교환 발생 빈도 감소
스레드 이용– Light Weight 프로세스인 스레드를 이용하여 문맥 교환 부하 최소화
스택포인터 활용– 스택 이용 프로그램의 경우 스택 포인터를 이용하여 문맥 교환 부하 최소화
  • 멀티프로세스 환경에서 문맥교환은 필수적이므로 정보교환의 최소화 및 최적화가 필요

콘텐츠 사용 시 출처 표기 부탁 드리고, 댓글은 큰 힘이 됩니다^^