- 프로세스 간 전환을 위해서 이전ㅇ 어디까지 명령을 수행했는지 CPU Register에는 어떤 값이 저장되어 있는지 정보가 필요함
- Context는 CPU가 해당 프로세스를 실행하기 위한 프로세스의 정보를 의미
- 이 정보들은 운영체제가 관리하는 PCB라고 하는 자료구조의 공간에 저장됨
- 운영체제가 시스템 내의 프로세스들을 관리하기 위해 프로세스마다 유지하는 정보를 담는 커널 내의 자료구조
- Context Switching은 CPU가 프로세스 간 PCB정보를 교체하고 캐시를 비우는 과정
- Thread 상태정보를 저장하는 자료구조이며 PC와 Register Set(CPU정보) 그리고 PCB를 가리키는 포인터를 가짐
- 스레드가 하나 생성될 때마다 PCB내에서 TCB가 생성되며 Context Switching이 발생하면 기존의 Thread TCB를 저장하고 새로운 Thread의 TCB를 가져와 실행한다.
- 실행 중인 프로세스에서 I/O 호출이 발생해 해당 I/O작업이 끝날 때 까지 프로세스 상태가 running에서 waiting 상태로 전이된 경우
- RR(Round Robin) 스케줄링 등 운영체제의 CPU 스케줄러 알고리즘에 의해 현재 실행중인 프로세스가 사용할 수 있는 시간 자원을 모두 사용했을 때 해당 프로세스를 중지하고 (Ready 상태로 전이) 다른 프로세스를 실행시켜주는 경우
- 프로세스 Context Switching 하는동안 CPU는 일을 하지 않기때문에 오버헤드로 볼 수 있다.
- 프로세스 Context Switching 이 많이 일어나는게 성능에 좋은건 아니라고 볼 수 있다.
- 프로세스는 Context Switching 할 때 메모리 주소 관련 여러가지 처리(CPU 캐시 초기화, TLB 초기화, MMU 주소 체계 수정 등)를 하기 때문에 오버헤드가 크다.
- 스레드는 프로세스 내 메모리를 공유하기 때문에 메모리 주소 관련 추가적인 작업이 없어 프로세스에 비해 오버헤드가 작아서 Context Switching이 빠름
- 스레드는 생성하는 비용이 커서 많은 수의 스레드 생성은 메모리 부족 현상이 발생하거나 빈번한 컨텍스트 스위칭으로 인해 어플리케이션의 성능이 저하될 수 있음
사용자모드 & 커널모드 (0) | 2023.12.31 |
---|---|
CPU Bound & I/O Bound (0) | 2023.12.29 |
Concurrent & Parallelism (동시성, 병렬성) (0) | 2023.12.27 |
Process & Thread (1) | 2023.12.27 |
REST API에 Under_Score(_)? Hyphen(-)? (0) | 2023.05.18 |