[OS/운영체제] PCB와 Context switching

·2021년 7월 28일
0

OS

목록 보기
6/11

1. Process Management (프로세스 관리)

정의

프로세스가 여러 개일 때, CPU 스케줄링을 통해 프로세스들을 관리하는 것

이때, CPU는 각 프로세스들의 정보를 알아야 관리가 가능하다. 이러한 프로세스들의 특징을 갖고 있는 것이 바로 Process Metadata 이다.


Process Metadata 구성 요소

  • Process ID (PID)
  • Process State (프로세스 상태)
  • Process Priority (스케줄링 정보)
  • CPU Registers
  • Owner (계정 정보)
  • CPU Usage
  • Memeory Usage

=> 이 메타데이터는 프로세스가 생성되면 PCB에 저장된다.



2. PCB (Process Contorol Block)

정의

운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓는 곳으로, 프로세스의 상태 정보를 저장하는 구조체

  • 프로세스 상태 관리와 Context Switching을 위해 필요하다.
  • PCB는 프로세스 생성 시 만들어지며 주기억장치(메인 메모리)에 유지된다.

진행 과정

  1. 프로그램 실행
  2. 프로세스 생성
  3. 프로세스 주소 공간에 코드, 데이터, 스택 생성
  4. 이 프로세스의 메타데이터들을 PCB에 저장



3. Context Switching

정의

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

컴퓨터로는 인터넷 하면서 음악도 듣고, 채팅도 할 수 있다. 동시에 처리되는 것처럼 보이지만, 우리가 느끼지 못할 뿐 time sharing이라고 해서 짧은 시간동안 왔다갔다 번갈아서 처리해주는 것이다.

이렇게 프로세스들이 교체되어 수행되고 나면 다시 다른 프로세스를 불러와야 하는데, 이를 위해서는 이전 작업에 대한 내용을 기억하고 있어야 하는데, 프로세스 단위로 정보를 저장해주는 BLOCK을 PCB라고 한다.

그래서 프로세스가 스위칭 되어도 기억을 하고 이어서 실행할 수 있다.


❓ Context Switching이 필요한 이유

  • 컴퓨터가 매번 하나의 Task만 처리할 수 있다면 반응 속도가 매우 느리고 불편하기 때문
  • 빠른 속도로 Task를 바꿔가며 실행하면 실시간으로 동시에 처리되는 것처럼 보이게 할 수 있기 때문

Context Switching의 오버헤드(Overhead)

  • Context Switching에 걸린 시간메모리를 말한다.
  • I/O 이벤트가 발생했을 때 디스크에 명령을 내렸는데 끝날 때까지 기다리면서 CPU가 가만히 있으면 CPU가 낭비된다. 때문에 다른 프로세스로 바꾸면서까지 CPU를 더 사용하는게 이익이다.
  • overhead를 감수하면서 기존 프로세스를 새 프로세스로 바꾸는 것이 더 낫다!

스레드 vs 프로세스

스레드는 Context Switching 될 때 text, data, heap 영역은 프로세스 것이기 때문에 자신의 PCB에는 stack 및 간단한 정보만 저장하기에 프로세스 Context Switching 보다 빠르다.



참고

https://github.com/haewon-park/csStudy/blob/main/OS/PCB%EC%99%80%20Context%20Switching.md
https://jhnyang.tistory.com/33
https://yoongrammer.tistory.com/52

profile
당근먹고 자라나는 개발자

0개의 댓글