728x90
728x90
Context(컨텍스트)
프로세스가 현재 어떤 상태에서 수행되고 있는지 정확히 규명하기 위해 필요한 정보로, 크게 3가지로 나눈다.
- 하드웨어 문맥 : PC(Program Counter)와 각종 레지스터의 값
- 프로세스 주소 공간 : Code 영역, Data 영역, Stack 영역 등
- 커널상의 문맥 : PCB(Process Control Block)와 Kernel Stack(커널 내의 주소)
Context Switching(컨텍스트 스위칭)
실행 중이던 프로세스를 중단하고 다른 프로세스를 실행할 때, 기존 프로세스의 상태와 Context(레지스터 값)를 저장하고 새로운 프로세스의 상태와 Context를 교체하는 작업을 의미한다.
Context Switching 과정
P1, P2라는 2개의 프로세스가 있고 CPU 에 올라갔다 내려갔다하는 과정이다.
- Interrupt / System Call
- 운영체제에서 프로세스 Scheduler 에 의해 interrupt 발생
- 커널 모드 전환
- 프로세스 P1이 유저 모드(Executing)에서 커널모드(Idle)로 전환 (프로세스 P1이 Running → Ready 상태로 변경)
- 현재 프로세스 상태 저장
- P1 프로세스 정보를 PCB1에 저장
- 다음에 실행할 프로세스 로드
- PCB2에 저장 되어 있던 다음 실행 프로세스 P2 상태 정보 적재
- 유저 모드 전환
- 프로세스 P1이 커널 모드에서 유저 모드로 전환하여 실행
- 프로세스 P2 → P1 의 경우도 같은 방식(1 ~ 5)
💡 PCB 에 정보를 저장하고 복구하는 과정에서 CPU 는 아무것도 할 수 없다.
따라서, Context Switching이 자주 발생하면 Overhead가 발생한다.
Context Switching 이 일어나는 경우
- I/O interrupt
- CPU 사용시간 만료
- 자식 프로세스 Fork
- 인터럽트 처리를 기다릴 때
- 등등
Process Context Switching vs Thread Context Switching
- Process Context Switching(프로세스 컨텍스트 스위칭)
- 다른 프로세스의 스레드로 스위칭하는 경우를 말한다.
- 다른 프로세스의 스레드와 공유하는 자원이 없다.
→ 스레드 컨텍스트 스위칭에 비해 무겁다.
- Thread Context Switching(스레드 컨텍스트 스위칭)
- 같은 프로세스 내의 다른 스레드로 스위칭하는 경우를 말한다.
- 같은 프로세스 내의 스레드는 Stack 영역을 제외한 자원을 공유한다.
→ 프로세스 컨텍스트 스위칭에 비해 가볍다.
→ 공유 자원 Context는 Switching 작업이 필요하지 않다.
728x90
728x90
'Computer Science > Operating System' 카테고리의 다른 글
Mutex(뮤텍스) & Semaphore(세마포어) (0) | 2023.03.07 |
---|---|
Process Scheduling Algorithm(프로세스 스케줄링 알고리즘) (0) | 2023.03.07 |
단기 스케줄러, 중기 스케줄러, 단기 스케줄러 (0) | 2023.03.07 |
Process Address Space(프로세스 주소 공간) (0) | 2023.03.07 |
Process(프로세스) (0) | 2023.03.07 |