띵유로그

[CS] [OS]문맥교환 본문

CS

[CS] [OS]문맥교환

띵유 2022. 2. 9. 12:29
반응형

여러개의 프로세스가 존재할때, CPU는 제어권을 서로 넘겨가며 일을 처리합니다.

CPU 제어건을 바꾸는과정을 문맥교환이라고 합니다.

 

문맥교환은 언제 일어날까?

문맥교환이 일어나는 때는 타이머 인터럽트나 I/O 가 발생했을 때 입니다.

시스템콜이나 인터럽트로 OS에게 CPU제어권이 넘어오고 이때 문맥 일부를 PCB에 저장하지만,
이 경우는 문맥교환이 아님을 기억해야합니다. 단지, 프로세스가 사용자모드에서 커널모드로 바뀔 뿐입니다.

 


문맥교환은 어떻게 수행할까?

1) 직전까지 수행하던 프로세스(A)의 문맥을 프로세스 A의 PCB(Process Control Block) 에 저장합니다.
2) 새로운 프로세스 B는 예전에 저장해둔 자신의 문맥을 PCB에서 가져와 HW에 올리고 실행합니다.

* 자세한 절차 :

문맥교환 절차

1. 인터럽트/시스템 호출

2. 커널모드 전환

3. 현재 프로세스 상태를 PCB에 저장

4. PCB에서 다음 실행 프로세스 상태 로드

5. 사용자 모드 전환


* 문맥이란?
 프로그램카운터(다음에 실행할 명령어 주소), SP(Stack Pointer) 등 레지스터 저장값을 말합니다. 

 

문맥교환자체로 오버헤드이기 때문에 문맥교환을 줄이기 위한 노력이 필요합니다.문맥교환을 줄이기 위해서는 스레드를 사용하는 방법도 있을 것이고 stack을 사용하는 프로그램이라면 stack pointer를 사용할 수 도 있을 것입니다.

반응형

'CS' 카테고리의 다른 글

[JAVA] JVM이란? - JVM 동작과정  (0) 2022.09.14
프록시 서버  (0) 2022.01.06
Comments