본문 바로가기

CS

[CS] PCB와 TCB

용어 정리

프로그램

  • 컴퓨터가 실행할 수 있는 명령어들의 집합

프로세스

  • 컴퓨터에서 실행 중인 프로그램 
  • 각각의 프로세스는 독립된 메모리 공간을 할당 받음
  • 명령어들과 데이터를 가짐

CPU

  • 명령어를 실행하는 연산 장치

메인 메모리

  • 프로세스가 CPU에서 실행되기 위해 대기하는 곳

IO

  • 파일을 읽고 쓰거나
  • 네트워크의 어딘가와 데이터를 주고 받는 것
  • 입출력 장치와 데이터를 주거나 받는 것

단일 프로세스 시스템

  • 한 번에 하나의 프로그램만 실행됨
  • 단점: CPU 사용률이 좋지 않음

멀티 프로그래밍

  • 여러 개의 프로그램을 메모리에 올려놓고 동시에 실행
  • 단점: CPU 사용 시간이 길어지면 다른 프로세스는 계속 대기

멀티 태스킹

  • 프로세스는 한번 CPU를 사용할 때 아주 짧은 시간(=quantum)만 CPU에서 실행되도록 하자
  • 프로세스의 응답 시간을 최소화 시키는데 목적

스레드

  • 한 프로세스는 한 개 이상의 스레드를 가질 수 있다.
  • CPU에서 실행되는 단위
  • 같은 프로세스의 스레드들끼리 컨텍스트 스위칭은 가볍다.
  • 스레드들은 자신들이 속한 프로세스의 메모리 영역을 공유 - (데이터 공유가 쉬움)
  • 그렇지만 스레드들만의 고유한 영역도 있다. - (스택 영역)

멀티 스레딩

  • 하나의 프로세스가 동시에 여러 작업을 실행하는데 목적

확장된 멀티 태스킹의 개념

  • 여러 프로세스와 여러 스레드가 아주 짧게 쪼개진 CPU time을 나눠 갖는 것

멀티 프로세싱

  • 두 개 이상의 프로세서나 코어를 활용하는 시스템

PCB (Process Control Block)

PCB는 프로세스의 상태와 정보를 저장하는 데이터 구조이다.

운영체제는 PCB를 통해 현재 시스템에 어떤 프로세스가 있는지, 각 프로세스의 상태가 무엇인지 등을 파악한다.

 

PCB가 포함하는 주요 정보

  1. 프로세스 상태: 현재 프로세스가 실행 중인지, 대기 중인지, 또는 준비 상태인지 등을 나타낸다.
  2. 프로세스 ID: 각 프로세스를 구별하는 고유한 식별자
  3. 프로세스 우선순위: CPU 스케줄러가 프로세스 실행 순서를 결정할 때 참고하는 우선순위 정보
  4. 프로그램 카운터: 프로세스가 다음에 실행할 명령어의 메모리 주소를 가리킨다.
  5. CPU 레지스터: 프로세스 실행 중 사용되는 레지스터들의 현재 상태 정보를 저장한다.
  6. 메모리 관리 정보: 프로세스에 할당된 메모리 영역에 대한 세부 정보를 담고 있다.
  7. I/O 상태 정보: 프로세스가 현재 사용 중인 입출력 장치들의 상태를 기록

 

프로세스 상태

1. 생성 (New)

  • 프로세스가 생성되고 초기화되는 상태
  • 이때는 운영체제가 프로세스를 관리하기 위해 PCB를 할당

2. 준비 (Ready)

  • 프로세스가 실행될 준비가 되었지만, CPU를 할당받지 못한 상태
  • 이 상태에서 프로세스는 CPU를 기다리며, CPU 스케줄러가 CPU를 할당해 주기를 기다린다.

3. 실행 (Running)

  • 프로세스가 CPU를 할당받아 실제로 실행 중인 상태
  • 다만, 시스템의 멀티태스킹 환경에서는 프로세스가 한 번에 잠깐씩 실행되고 교체되며 실행된다.

4. 대기 (Blocked/Waiting)

  • 프로세스가 실행 중, I/O 요청이나 다른 이벤트를 기다려야 하는 경우 대기 상태로 전환된다.
  • I/O 작업이 완료되면 다시 준비 상태로 돌아가게 된다.

5. 종료 (Terminated)

  • 프로세스가 모든 작업을 완료하고 종료된 상태
  • 프로세스의 자원은 운영체제에 의해 해제된다.

6. 스와핑(Suspended)

  • 특정 상황에서 메모리 자원이 부족할 경우, 프로세스는 준비 상태에 있지만 메모리에서 쫓겨나게 된다.
  • 다시 메모리에 올려질 때까지 CPU 스케줄링 대상에서 제외된다.

 

프로세스 우선순위 결정 방식

  • 그럼 프로세스의 우선순위는 어떻게 정해질까?
  • 프로세스의 우선순위는 시스템의 정책과 스케줄링 알고리즘에 따라 정해진다.
 

[CS] CPU 스케줄링 알고리즘

목차CPU 스케줄링우선순위대기큐와 준비큐선점형과 비선점형 스케줄링CPU 스케줄링 알고리즘  CPU 스케줄링운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것  프로세

madeprogame.tistory.com

 

 

 

PCB는 프로세스의 전체 생명 주기를 관리하고, 여러 프로세스 간의 빠른 전환을 가능하게 하는 중요한 역할을 수행한다.

운영 체제는 이 PCB를 통해 각 프로세스의 상태를 정확히 파악하고 효율적으로 관리할 수 있다. 


TCB (Thread Control Block)

TCB는 스레드의 상태와 정보를 저장하는 데이터 구조이다.

스레드는 프로세스 내에서 실행 단위를 나누어 실행할 수 있는 작업이다.

운영체제는 TCB를 통해 각 스레드의 상태를 관리한다.

 

TCB가 포함하는 주요 정보

  1. 스레드 ID: 고유한 ID로, 동일한 프로세스 내에서도 여러 스레드를 구분할 수 있도록 해준다.
  2. 스레드 상태: 스레드의 현재 상태를 표시합니다. 프로세스와 비슷하게, 실행 중, 준비 중, 대기 중 등의 상태가 있다.
  3. 스레드의 프로그램 카운터: 스레드가 현재 실행 중인 명령의 위치를 저장한다.
  4. 레지스터 값: 스레드가 실행을 중단하고 다른 스레드로 전환될 때의 CPU 레지스터 값을 저장한다.
  5. 스택 정보: 스레드가 사용하는 스택에 대한 정보를 포함한다. 각 스레드는 독립적인 스택을 사용하며, 이 스택은 함수 호출과 반환 등의 정보를 저장합니다.
  6. 스레드 우선순위: 스레드 간의 실행 우선순위를 결정하는 값

 

PCB와 TCB의 차이점

구분 PCB (Process Control Block) TCB (Thread Control Block)
역할 프로세스 상태 및 정보 관리 스레드 상태 및 정보 관리
관리 단위 독립적인 프로세스 관리 프로세스 내부의 스레드 관리
포함 정보 프로세스 ID, 상태, 주소 공간, 파일 정보 등 스레드 ID, 상태, 스택, 프로그램 카운터, 레지스터 등
주소 공간 프로세스는 독립적인 메모리 주소 공간을 가짐 스레드는 같은 프로세스의 메모리 주소 공간을 공유함
종속 관계 프로세스는 독립적인 실행 단위 스레드는 프로세스 내에서만 실행 가능

 

'CS' 카테고리의 다른 글

[CS] 동기화 기법  (1) 2024.11.28
[CS] 병행성과 병렬성  (0) 2024.11.06
[CS] 파일 시스템  (0) 2024.05.27
[CS] 페이지 교체와 프레임 할당  (0) 2024.05.26
[CS] 페이징의 이점  (0) 2024.05.26