Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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
Tags
more
Archives
Today
Total
관리 메뉴

승쨩개발공부

[OS] 컨텍스트 스위칭(Context Switching) 본문

OS

[OS] 컨텍스트 스위칭(Context Switching)

Unknowns 2022. 5. 16. 19:09

컨텍스트 스위칭이 무엇인가?

멀티프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해

다음 우선 순위의 프로세스가 실행되어야 할 떄 기존의 프로세스의 상태 또는 레지스터 값(Context)을 

저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(Context)을

교체하는 작업을  컨텍스트 스위칭(Context Switching)라고 한다.

 

참고로 컨텍스트 스위칭 떄 해당 CPU는 아무런 일을 하지 못한다. 따라서 컨텍스트 스위칭이 잦아지면

오버헤드가 발생해 효율(성능)이 떨어진다.

 

 

컨텍스트는 무엇인가?

사용자와 다른 사용자, 사용자와 시스템 또는 디바이스간의 상호작용에 영향을 미치는 사람, 장소, 개체등

현재 상황(상태)을 규정하는 정보들을 말한다.

OS에서 컨텍스트는 CPU가 해당 프로세스를 실행하기 위한 해당 프로세스의 정보들이다.

이 컨텍스트는 프로세스의 PCB(Process Control Block)에 저장된다.

그래서 컨텍스트 스위칭 떄 PCB의 정보를 읽어 CPU가 전에 프로세스가 일을 하던거에 이어서

수행이 가능한 것이다.

 

PCB의 저장정보

- 프로그램 카운터 : 프로세스가 다음에 실행할 명령어 주소

- 레지스터 : 누산기, 스택, 색인 레지스터

- 프로세스 번호

 

 

인터럽트는 무엇인가?

인터럽트는 CPU가 프로그램을 실행하고 있을 떄 실행중인 프로그램 밖에서 예외 상황이 발생하여 

처리가 필요한 경우 CPU에게 알려 예외 상황을 처리할 수 있도록 하는 것을 말한다.

어떤 인터럽트 요청이 와야 컨텍스트 스위칭이 일어날까?

 

1. I/O  Request (입출력 요청할 떄)

2. Time Slice Expired (CPU 사용시간이 만료 되었을 떄)

3. Fork a Child (자식 프로세스를 만들 댸)

4. Wait For an Interrupt (인터럽트 처리를 기다릴 떄)

 

 

 

'OS' 카테고리의 다른 글

[OS] 프로그램 실행과정 및 하드웨어 구성  (0) 2022.05.16
[OS] 쓰레드, 커널  (0) 2022.05.16