개발자 면접 공부/운영체제,CS

PCB, Context Switching

chogyujin 2022. 7. 25. 22:45
728x90

오늘은 PCB랑 Context Switching 에 대해 공부해보겠습니다.


Process Metadata

- CPU들은 각 프로세스들이 누군지 알아야 관리가 가능합니다.

프로세스들의 특징을 갖고있는 것이 Process Metadata입니다.

 

  • Process ID
  • Process State
  • Process Priority
  • CPU Registers
  • Owner
  • CPU Usage
  • Memeory Usage

이러한 메타데이터는 프로세스가 생성되면 PCB에 저장됩니다.


PCB(Process Control Block)

- 프로세스 메타데이터들을 저장해 놓는 곳, 한 PCB 안에는 한 프로세스의 정보가 담김

출처 : https://gyoogle.dev/blog/computer-science/operating-system/PCB%20&%20Context%20Switching.html

프로그램 실행 -> 프로세스 생성 -> 프로세스 주소 공간에 (코드, 데이터, 스택) 생성 -> 이 프로세스의 메타데이터들이 PCB에 저장

 

그럼 왜 PCB가 필요한가?

CPU는 프로세스의 상태에 따라 교체작업이 이루어지고 이때, 앞으로 다시 수행할 대기 중인 프로세스에 관한 저장 값을 PCB에 저장해두는 것입니다.

 

PCB의 관리 방법

연결 리스트(Linked List) 방식으로 관리됩니다.

PCB List Head에 PCB들이 생성될 떄마다 붙게 됩니다. 주소값으로 연결이 이루어져 있는 연결리스트이기 떄문에 삽입, 삭제가 용이합니다.

즉, 프로세스가 생성되면 해당 PCB가 생성되고 프로세스 완료시 제거됩니다.

 

이렇게 수행 중인 프로세스를 변경할 떄, CPU의 레지스터 정보가 변경되는 것을 Context Switching 이라고 합니다.

 


Context Switching

-CPU가 이전의 프로세스 상태를 PCB에 보관하고, 또 다른 프로세스의 정보를 PCB에 읽어 레지스터에 적자하는 과정

 

보통 인터럽트가 발생 혹은 실행 중인 CPU 사용 허가시간을 모두 소모하거나, 입출력을 위해 대기해야 하는 경우에
Context Switching이 발생합니다.

 

Context Switching 의 OverHead

OverHead는 과부하 라는 뜻으로 보통 안좋은 말로 많이 사용합니다. 지나친 OverHead는 CPU의 성능을 매우 떨어트리기
떄문입니다. (멀티 프로그래밍을 많이 사용해도 이러한 OverHead발생)

이러한 OverHead가 많이 발생해도 사용하는 중요한 이유는 CPU에 계속 프로세스를 수행시키도록 하기 위함입니다.
- 인터럽트가 발생하더라도 CPU는 놀지말고 다른 일을 시키는것이 매우 효율적이기 떄문

 

'개발자 면접 공부 > 운영체제,CS' 카테고리의 다른 글

CS,OS 단편화  (0) 2022.07.26
페이징과 세그먼테이션  (0) 2022.07.25
교착 상태(DeadLock)  (0) 2022.07.24
프로세스 vs 스레드  (0) 2022.07.24
가상메모리(페이지 교체 알고리즘)  (0) 2020.02.14