문맥 교환 (Context Switch)
- 문맥 교환(Context Switch)이란 하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 실행중인 프로세스의 상태(문맥)를 보관하고 새로운 프로세스의 상태를 적재하는 작업.
- 한 프로세스의 문맥은 그 프로세스의 프로세스 제어 블록(PCB)에 저장되어 있다.
Context Switch는 언제 일어나는가?
- Termination of a process (프로세스의 종료)
☞ 에러,예외가 나타나거나 보통의 프로세스의 종료
- Expiration of time slice ( time slice 만료 )
☞ 가능한 CPU 점유 시간이 만료되었을 경우
- Blocking system calls (also called supervisor call)
☞ I/O 요청, 파일 오픈과 같은 시스템 콜의 경우
☞ Page fault - 메모리 주소가 가상 메모리에 있으므로 main memory로 가져와야 한다
- I/O 인터럽트
☞ I/O가 완료되면 Block 상태의 프로세스를 Ready 상태로 바꾼다.
Steps of Context Switch - Context Switch 단계
- 프로그램 카운터와 다른 레지스터들을 포함한 프로세스의 문맥을 저장
- 현재 실행 중인 프로세스(Running 상태에 있는)의 PCB를 갱신
- PCB를 적당한 Queue로 옮긴다. ( Queue - Ready or Blocked or ready/suspend)
- 실행 할 다른 프로세스를 선택
- 선택 된 프로세스의 PCB를 갱신
- 메모리 관리 데이터 구조 갱신
- 선택 된 프로세스의 문맥 복원
'운영체제' 카테고리의 다른 글
교착상태(Deadlock) (0) | 2018.08.28 |
---|---|
세마포어와 뮤텍스 (Semaphores&Mutex) (0) | 2018.08.26 |
병행성과 상호배제&상호배제 알고리즘 (0) | 2018.08.26 |
Thread (0) | 2018.08.24 |
프로세스 (개념, 상태, PCB) (0) | 2018.08.23 |