오늘은 여기까지
PCB와 컨텍스트 스위칭 본문
PCB (Process Control Block)
운영체제가 프로세스를 관리하기 위해 사용하는 자료구조이다.
커널 주소 공간의 Data 영역 내 존재하며, 프로세스마다 1개씩 있다.
- OS가 관리상 사용하는 정보
- Process state, Process ID, 우선순위, scheduling information
- CPU 수행 관련 하드웨어 값
- Program counter, registers
- 메모리 관련
- Code, Data, Stack의 위치 정보
- 파일 관련
Program counter와 같은 context 정보는 CPU에 있는데 왜 PCB에 또 보관하는가? Context Switching을 위해
Context Switching
CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정이다. 예를 들어, 프로세스 A에서 B로 CPU를 넘겨준다고 가정하자.
- A 프로세스 상태를 A의 PCB에 저장한다.
- B 프로세스 상태를 PCB에서 읽어온다. CPU의 레지스터 내에 해당 데이터를 복원 시킨다.
주의할 점?
시스템콜이나 인터럽트 발생시 반드시 context switch가 일어나는 것이 아니다.
1번은 문맥 교환이 아니다.
단순히 프로그램 A로부터 운영체제 커널로 CPU가 넘어갔다고 해서 문맥 교환에 해당하지 않는다. 시스템콜이나 인터럽트가 다른 프로그램 B로부터 발생했다고 하더라도, 결국 A로 다시 복귀했기 때문에 그렇다.
프로그램 A로부터 프로그램 B로 CPU가 넘어가야 문맥 교환이다.
1번의 경우에도 CPU 수행 정보 등 context의 일부를 PCB에 저장해야 한다. 하지만 문맥 교환을 하는 경우(e.g. cache memory flush)에 비하면 오버헤드가 매우 작은 편이다.
출처: 반효경 교수님 운영체제 3강 http://www.kocw.net/home/search/kemView.do?kemId=1226304