2020 12 09
운영체제를 이제 슬슬 공부해볼까 한다. 운영체제를 공부할 때는 프로세스와 스레드가 가장 중요한 것 같은데, 프로세스와 스레드는 인터넷에 검색해서 공부를 했고, 주변 개념들을 하나씩 보려고 한다. 나중에 시간이되면 프로세스랑 스레드도 정리해볼까 하고..
Context
CPU가 해당 프로세스를 실행하기 위한 프로세스의 정보들
-
한 프로세스의 문맥은 PCB에 저장된다.
-
PCB 정보
- 프로세스 상태 : 생성, 준비, 수행, 대기, 중지
- 프로그램 카운터 : 프로세스가 다음에 실행할 명령어 주소
- 레지스터 : 누산기, 스택, 색인 레지스터
- 프로세스 번호
Context Switch
문맥 교환(Context Switch)은 하나의 프로세스가 CPU를 사용중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스 상태를 보관하고 새로운 프로세스의 상태를 적재하는 작업
- Process P0과 Process P1이 있다.
- P0이 CPU를 Execute하고 있고 P1이 Idle 상태이다.
- 잠시 후 P1이 Execute 되고 P0이 대기가 되는 상태가 된다.
- 이 때 P0이 idle상태로 될 때 지금까지 작업하던 내용을 어딘가에 저장하게 된다 이를 PCB라 한다.
- P0은 PCB에 저장해야 하고, P1을 실행시키기 위해 PCB에서 불러와야 한다.
- 이렇게 idle -> Execute -> ... 상태를 번갈아가면서 하는 것을 Context Switch라고 한다.
단점
- 컨텍스트 스위치가 많이 일어나면 Overhead가 발생하여 성능이 저하될 수 있다.
- Context Switch가 일어날 때는 CPU가 아무 일도 하지 못 한다.
Thread
- 스레드에서는 컨텍스트 스위치를 할 때, PCB에는 스택 및 간단한 정보만 저장한다.
- 컨텍스트 스위칭이 프로세스보다 훨씬 빠르다.
참조
- https://jeong-pro.tistory.com/93?category=793347
- https://www.crocus.co.kr/1364