Context Switching이란?
CPU가 어떤 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선순위의 프로세스를 실행해야 할때 현재까지 실행하고 있던 프로세스의 작업 정보를 PCB에 저장하고 CPU가 다음 우선순위의 프로세스를 실행 할수 있도록 프로세스를 교체하는 작업을 의미한다.
즉, 프로세스들을 우선순위에 의해 대기상태, 실행상태를 계속 바꿔주는 작업이다.
Context란?
CPU가 해당 프로세스를 실행하기 위한 프로세스에 대한 정보들이다.
즉, Context Switching시 PCB에 저장되는 정보들이 Context라고 할 수 있다.
PCB 저장 정보
- 포인터 : 프로세스의 현재 위치를 저장하는 포인터 정보
- 프로세스 상태 : 각 프로세스의 상태(생성, 준비, 실행, 대기 , 종료) 저장
- 레지스터 : 누산기, 베이스, 레지스터 및 범용 레지스터를 포함하는 CPU 레지스터에 있는 정보
- 프로세스 번호 : 각 프로세스의 식별자를 저장하는 ID 혹은 PID가 할당됨.
- 프로그램 카운터 : 프로세스가 다음에 실행할 명령어 주소
- 메모리 제한 : OS에서 사용하는 메모리 관리 시스템에 대한 정보가 저장
- 열린파일 목록
Context Switching의 단점
Context Switching을 할때 CPU는 프로세스에서 작업했던 정보들을 PCB에 저장하고 다음 프로세스의 PCB에서 정보를 갖고와 실행하게 된다. 이때 PCB에 정보를 저장하고 다음 프로세스를 작업을 위해 PCB에서 정보를 갖고오는 과정을 거칠때 CPU는 아무런 일도 하지 못하게된다. 따라서 Context Switching이 잦아지게 되면 CPU가 일을 하지 않는 시간이 늘어나고 오버헤드가 발생할 확율이 높아지고 효율이 떨어지게 되는 단점이 있다.
Context Switching 인터럽트
인터럽트는 예외상황을 CPU에게 알려주고 그 상황을 처리할수 있도록 한다.
따라서 Context Switching은 인터럽트 요청에 의해 일어난다. 그리고 인터럽트 요청은 다음과 같은 예외상황에 발생하게 된다.
- 입출력 인터럽트
- CPU 사용시간 만료
- 자식 프로세스 fork
- 인터럽트 요청 기다릴때
위와같은 상황에 Context Switching이 일어나게 되고 다음 우선순위 프로세스를 결정하는 건 스케줄러이다.
한마디로 Context Switching을 하는 주체는 OS스케줄러이다.
Context Switching - 스레드와 프로세스 차이점
스레드들은 부모 프로세스에 있는 data, heap, code 영역을 공유하고 있고 각 스레드들이 갖고 있는 독립적인 영역은 스택이 있다. 스레드는 이러한 공유 자원이라는 특징이 있어서 Context Switching이 빠르다는 점이 있다.
반면에 프로세스는 각 프로세스간의 공유 자원이 없기 때문에 새로 데이터 정보를 쌓아야하기 때문에 Context Switching시에 스레드보다 느릴 수 밖에 없다는 차이점이 있다.
'OS(운영체제) > 프로세스' 카테고리의 다른 글
[운영체제] 프로세스 - 프로세스 혹은 스레드 동기화란? (0) | 2022.01.24 |
---|---|
[운영체제] 프로세스 - 경쟁 상태란? (1) | 2022.01.13 |
[운영체제] 프로세스 - 뮤텍스와 세마포어 차이 (0) | 2021.12.13 |
[운영체제] 프로세스 - 교착상태와 해결방안 (0) | 2021.12.09 |
[운영체제] 프로세스 - 프로세스와 스레드의 차이점은? (0) | 2021.11.24 |