반응형
Context Switching 이란?
CPU에서 실행중이던 프로세스/스레드가 다른 프로세스/스레드로 교체되는 것.
기존 프로세스/스레드의 상태 or 레지스터 값을 저장하고, 다음 프로세스/스레드의 상태 or 레지스터 값을 교체하는 작업.
PCB나 TCB 를 기반으로 프로세스의 상태를 저장하고 다시 복원시키는 과정.
* PCB란? [Computer Science/OS] - PCB(Process Control Block)
Context란?
사용자와 다른 사용자 || 사용자와 시스템 || 디바이스간 상호작용을 미치는 개체의 현재 상황(상태)를 규정하는 정보들을 말한다.
OS에서는 CPU가 프로세스/스레드를 실행하기 위한 해당 프로세스/스레드의 정보들을 말한다.
- context 의 구성요소
- CPU 레지스터 값 : 현재 실행 중인 명령어의 정보를 저장하는 레지스터 값/
- PC (Program Counter) : 다음 실행시킬 명령어의 메모리 주소
- 메모리 관리 정보 : 페이지 테이블 or 세그먼트 테이블과 같은 메모리 할당 정보
- 프로세스 상태
- 입출력 상태 : 파일 디스크립터, 네트워크 소켓 등 입출력 자원 상태
- ...
Context Switching 과정
컨텍스트 스위칭은 프로세스가 종료되거나 인터럽트에 의해 발생된다.
프로세스 종료 시 컨텍스트 스위칭
이 경우 프로세스가 종료될 때 더이상 해당 프로세스 상태를 유지할 필요가 없다.
- 프로세스 종료 요청
- 자원 해제 : 할당 중인 모든 자원(메모리, 파일 디스크립터 등)을 해제
- 프로세스 테이블 업데이트 : 프로세스 삭제 or 상태 종료로 변경
- 컨텍스트 스위칭 준비 : 다음 실행할 프로세스의 PCB를 준비
- 컨텍스트 스위칭
인터럽트 시 컨텍스트 스위칭
- 인터럽트 발생
- 현재 프로세스 상태 저장 (PCB에 저장)
- 인터럽트 서비스 루틴(ISR: 인터럽트를 처리하는 코드) 실행
- ISR 종료 후 저장된 프로세스 상태 복원
- 복원된 상태로 원래 프로세스 실행 재개
Context Switching 이 발생하는 Interrupt 유형
더보기
1. I/O request (입출력 요청할 때)
2. time slice expired (CPU 사용시간이 만료 되었을 때)
3. fork a child (자식 프로세스를 만들 때)
4. wait for an interrupt (인터럽트 처리를 기다릴 때)
...
Context Switching 비용
- 유휴시간 발생 : 인터럽트 시 컨텍스트 스위칭 과정에서 유휴상태(Idle)가 겹쳐 오버헤드 발생. CPU의 가용성 떨어짐
- 해결법 : 스케줄링 최적화, 하드웨어적 지원(CPU가 특정 조건 감지했을 때만 인터럽트 발생) ...
- 캐시미스 : 프로세스가 가지고 있는 메모리 주소가 그대로 있으면 잘못된 주소변환이 생김. 때문에 캐시 클리어 과정이 무조건 일어나고 캐시미스가 발생할 수 있음.
- 해결법 : 예측 알고리즘사용, 캐시에 로컬리티 원칙 활용 ...
참고:
728x90
반응형
'Computer Science > Operating System' 카테고리의 다른 글
IPC(Inter-Process Communication) (0) | 2024.10.29 |
---|---|
멀티프로세싱(Multiprocessing), 멀티스레딩(Multithreading) (0) | 2024.10.24 |
PCB(Process Control Block) (0) | 2024.10.23 |
프로세스 메모리 구조, 프로세스/스레드 차이 (0) | 2024.10.22 |
프로그램 컴파일 과정 - C, C++/Java ( Interpreter / JIT ) (0) | 2024.10.18 |