일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 코틀린
- Til
- 알고리즘
- 혼공챌린지
- 코테
- doitandroid
- Kotlin
- 정보처리기사
- 안드로이드
- java
- groupby
- 인프런
- SQL
- Android
- 스터디
- 기술면접
- 티스토리챌린지
- 안드로이드스튜디오
- 혼공단
- 자료구조
- 정처기
- 프로그래머스
- 자바
- 오블완
- 혼공파
- select
- MySQL
- CS
- 카카오코테
- join
- Today
- Total
Welcome! Everything is fine.
[CS 발표_10] Context Switching이란? 본문
Context Switching이란 무엇인가요?
인터럽트(interrupt)
인터럽트(interrup)란 CPU에서 프로세스를 처리하다가 예외 상황이 발생할 때 이에 대응할 수 있게 CPU에 처리를 요청하는 것을 말한다. 인터럽트가 발생하는 경우는 입출력 이벤트가 발생할 때, CPU 사용시간이 만료되었을 때, 자식 프로세스를 생성할 때 등이 있다.
Context Switching
CPU는 하나의 프로세스만 처리할 수 있기 때문에 멀티 프로세스를 처리하려면 인터럽트가 발생하면서 콘텍스트 스위칭이 발생한다.
콘덱스트 스위칭이란 CPU가 처리중인 프로세스를 변경하는 것이다. 다시 말해, 현재 실행 중인 프로세스의 제어를 다른 프로세스에 넘겨서 그 프로세스가 실행 가능하도록 하는 것을 의미한다. 콘덱스트 스위칭이 발생하면 현재 진행 중인 프로세스 or 스레드의 상태를 PCB에 저장하고 다음에 진행할 프로세스 or 스레드의 상태값을 읽어온다.
위 그림에서 처리 중인 프로세스를 P0, 다음에 처리할 프로세스를 P1으로 보면 흐름을 이해할 수 있을 것이다. P0을 처리 중에 인터럽트가 발생하면 P0은 idle 상태가 되고, 처리 중인 작업 정보는 P0의 PCB에 저장된다. 그리고 P1의 PCB에 있는 작업 정보를 불러와 레지스터에 로드하고 CPU는 P1을 처리한다. 이렇게 진행중이던 프로세스의 상태를 PCB에 저장하고, 다른 프로세스의 PCB에서 상태를 불러와 로드하는 과정동안 CPU는 아무 일도 하지 못하는데, 이 경우 오버헤드가 발생한다고 말한다.
CPU에서 처리 중인 프로세스가 중간에 변경되어도 이전에 실행하던 코드를 이어서 실행할 수 있는 이유?
PCB에 프로그램 카운터와 스택 포인터 값이 저장되어 있어서!
- 프로그램 카운터 : 프로세스가 이어서 처리해야하는 명령어의 주소 값
- 스택 포인터 : 스택 영역에서 데이터가 채워진 가장 높은 주소 값
멀티 프로세스와 멀티 스레드에서의 Context Switching
멀티 프로세스가 멀티 스레드보다 오버헤드가 많이 발생한다. 왜일까? 멀티 프로세스는 프로세스별로 고유한 메모리를 갖는 반면, 멀티 스레드는 stack 영역을 제외한 모든 메모리를 공유하기 때문이다. 따라서 멀티스레드가 오버헤드(작업을 수행하는 데 필요한 추가적인 자원이나 시간, 비용)가 적게 발생한다.
정리
Context Switching은 CPU가 처리 중인 프로세스를 변경하는 것을 의미한다. CPU는 하나의 프로세스만 처리할 수 있어서 멀티 프로세스 환경에서는 Context Switching이 발생한다. CPU 스케줄러에 의해 인터럽트가 발생하면 실행 상태의 프로세스가 준비 또는 대기 상태로 전환되고, 다음에 실행할 프로세스가 실행 상태로 전환된다. 이때 레지스터에 저장된 프로세스 정보가 바뀌면서 오버헤드가 발생하게 된다.
'CS 스터디 > 발표' 카테고리의 다른 글
[CS 발표_12] 토폴로지와 병목현상 (0) | 2024.06.17 |
---|---|
[CS 발표_11] PUT과 PATCH의 차이, PUT과 POST의 차이 (0) | 2024.06.13 |
[CS 발표_09] 스와핑(Swapping)이란? (0) | 2024.06.05 |
[CS 발표_08] 우선 순위 큐의 동작 원리, 힙의 삽입/삭제 (0) | 2024.06.04 |
[CS 발표_07] 완전 이진 트리, 포화 이진 트리, 이진 탐색 트리란? (0) | 2024.06.04 |