프로세스와 CPU
프로세스 문맥교환 (Context switch)
- 하나의 프로세스가 CPU를 사용중인 상태에서 다른 프로세스가 CPU를 사용하기 위해
기존 프로세스의 상태(문맥)을 PCB에 보관하고 새로운 프로세스의 상태(문맥)을 CPU에 적재하는 작업
: 인터럽트 혹은 프로세스에 할당된 사용시간을 소진 했을때 발생
오버헤드
- 문맥교환 중 다른 작업을 할 수 없는 시간
: 하나의 사용자 프로세스로부터 다른 사용자 프로세스로 CPU의 제어권이 이양되는 과정
: PCB에 레지스터 정보를 저장
CPU내 레지스터에 다음 프로세스의 정보를 적재
문맥교환시 PCB에 저장되는 정보
- 프로그램 카운터 : 프로세스가 어디까지 수행되었는지
- 프로세스 상태 정보
- CPU 사용정보
문맥교환 절차
- 인터럽트 / 시스템 호출
: 운영체제에서 프로세스 스케줄러에 의해 인터럽트 발생
- 커널 모드 전환
: 프로세스 실행모드를 사용자모드에서 커널모드로 전환
- 현재 프로세스 상태 PCB에 저장
: 기존 실행되는 프로세스 정보를 PCB에 저장
- 다음 실행 프로세스 로드
: PCB에 있는 다음 실행 프로세스 상태 정보 복구
- 사용자 모드 전환
: 프로세스 실행모드를 커널모드에서 사용자모드로 전환
문맥교환 중 발생하는 cost
- CPU내 Cache 초기화
- MemoryMapping 초기화
- 메모리 접근을 위한 커널 실행
=> 잦은 Context Switching는 성능저하
=> 오버헤드 해결방안
ㆍ프로그램 다중화 하향 (문맥 교환 빈도 감소)
ㆍ스레드 사용
ㆍ스택 포인터 활용 (스택을 이용할 경우에만)
문맥교환이 필요한 상황
- dispatch
: Queue 우선 프로세스로 CPU할당 받아 실행 상태로 전이 (준비 -> 실행)
- Timeout
: CPU할당시간 만료 (실행 -> 준비)
- I/O
: 입출력 작업이 필요하여 작업 완료시 까지 대기 상태로 전이 (실행 -> 대기)
- System Call
: 또 다른 서비스 호출이 필요한 경우 대기상태로 전이 (실행 -> 대기)
'Computer Science > OS' 카테고리의 다른 글
CPU의 구조와 명령어 수행 과정 (0) | 2021.02.05 |
---|---|
프로세스와 운영체제 (0) | 2021.02.03 |
스레드 (0) | 2021.02.03 |
프로세스와 메모리 (0) | 2021.02.03 |
프로세스 (0) | 2021.01.19 |