본문 바로가기
computing

PCB(Process Control Block)의 기능, 특징

by greentworkshop 2025. 3. 18.

1. 포인터

일상생활 비유:
가게에서 물건을 사려고 했는데, 그 물건이 창고에 있다고 적혀 있는 위치가 있다면, 그 위치를 **'주소'**라고 할 수 있습니다. 가게는 그 위치를 확인하고 물건을 가져올 수 있죠.
PCB와의 연관성:
프로세스도 마찬가지입니다. 포인터는 프로세스 제어블록(PCB)에서 다른 프로세스나 관련 정보를 가리키는 "주소" 역할을 합니다. 예를 들어, 대기 상태에 있는 프로세스들끼리 연결리스트로 연결되기 위해 포인터가 사용됩니다. 이 포인터는 프로세스들이 다음에 해야 할 작업이 무엇인지 추적하거나, 다른 프로세스와 연결될 수 있도록 도와줍니다.


2. 프로세스 상태

일상생활 비유:
직장에서 회의 중, 작업 중, 점심시간 중처럼 사람이 어떤 상태에 있는지를 나타내는 것입니다. 사람은 상태에 따라 해야 할 일도 달라지고, 상태가 바뀌면 해야 할 일도 바뀌죠.
PCB와의 연관성:
프로세스도 마찬가지입니다. 프로세스 상태는 프로세스가 현재 무엇을 하고 있는지를 나타냅니다. 예를 들어, 프로세스가 실행 중이라면 실행 상태에 있고, 입출력 대기 중이라면 대기 상태로 바뀝니다. 이 상태 정보는 PCB에 저장되며, 운영체제는 이 정보를 통해 프로세스의 상태를 관리하고, 상태에 따라 어떤 작업을 할지 결정합니다.


3. 프로세스 구분자 (PID)

일상생활 비유:
학교에 가면 각 학생은 고유의 학생 번호가 있습니다. 이 번호를 통해 각 학생을 구별하고 관리할 수 있습니다.
PCB와의 연관성:
**프로세스 구분자(PID)**는 프로세스를 구분하는 고유한 번호입니다. 운영체제는 여러 프로세스를 동시에 관리해야 하는데, 각 프로세스를 식별할 수 있도록 PID를 사용하여 각 프로세스를 구별합니다. 마치 학생이 고유한 번호로 관리되는 것과 같아요.


4. 프로그램 카운터

일상생활 비유:
책을 읽을 때, 내가 마지막으로 읽었던 페이지를 기억하고 있어야 계속 그 다음 페이지에서 읽을 수 있죠. 만약 내가 책을 덮었다가 다시 읽으려면 어디서 읽어야 할지 알아야 해요.
PCB와의 연관성:
프로그램 카운터는 프로세스가 다음에 실행할 명령어의 위치를 기억하는 역할을 합니다. 프로세스가 실행되던 중에 멈추거나 다른 작업으로 전환될 때, 프로그램 카운터는 "다음에 실행할 명령어"의 위치를 추적하여 프로세스가 언제 다시 시작되든 그 위치부터 계속 실행되도록 합니다.


5. 프로세스 우선순위

일상생활 비유:
병원에서 응급환자가 있을 때, 그 환자는 기타 환자들보다 우선적으로 치료받습니다. 우선순위에 따라 빠르게 처리해야 할 일이 결정되죠.
PCB와의 연관성:
프로세스 우선순위도 비슷합니다. 운영체제는 여러 프로세스를 동시에 관리할 때, 어떤 프로세스가 더 중요하고 빨리 처리해야 하는지를 우선순위에 따라 결정합니다. 우선순위가 높은 프로세스가 먼저 실행되며, 이는 PCB에 저장된 우선순위 정보를 기반으로 합니다. 중요한 작업이 더 빨리 처리될 수 있도록 돕는 역할을 합니다.


6. 각종 레지스터 정보

일상생활 비유:
컴퓨터에서 메모장을 열어놓고, 현재 진행 중인 작업에 대해 몇 가지 정보를 적어놓는다고 생각해 보세요. 그 정보를 기억하고 있어야 작업을 제대로 진행할 수 있습니다.
PCB와의 연관성:
각종 레지스터 정보는 프로세스가 실행 중에 사용한 임시 값들입니다. 예를 들어, 프로세스가 계산을 하고 있다면 그 계산의 중간 결과값이 레지스터에 저장됩니다. 문맥 교환이 일어나면, 이 값들이 PCB에 백업되어 다음에 프로세스가 실행될 때 그 값들이 복원되고 계속 진행될 수 있습니다. 레지스터는 프로그램이 중단되거나 다른 프로세스로 전환되더라도 중요한 중간 결과를 잃지 않도록 보존합니다.

 

7. 메모리 관리 정보

  • 프로세스의 메모리 위치 정보
    예시:
    가정에서 컴퓨터 프로그램을 실행한다고 할 때, 프로그램이 실행될 때 어디서부터 메모리를 사용해야 할지 알려주는 주소가 필요합니다. 예를 들어, 문서 작성 프로그램을 열면, 메모리의 특정 위치에 해당 프로그램이 로드됩니다. 운영체제는 프로그램이 어디서 실행되고 있는지에 대한 정보를 추적합니다.
  • PCB와의 연관성:
    프로세스가 사용하는 메모리의 시작 주소끝 주소를 추적하여 다른 프로세스가 이 메모리를 침범하지 않도록 보호합니다. 이 정보는 PCB에 저장되며, 경계 레지스터한계 레지스터를 통해 메모리 범위를 관리합니다.
  • 메모리 보호를 위한 경계 레지스터값과 한계 레지스터값
    예시:
    만약 두 명이 같은 책상에서 일한다고 할 때, 책상 한쪽에는 A라는 사람이 앉고, 다른 쪽에는 B라는 사람이 앉습니다. 두 사람이 서로의 공간을 침범하지 않도록, 각자 사용할 수 있는 공간을 구분해두는 거죠. 마찬가지로 경계 레지스터한계 레지스터는 프로세스가 사용할 수 있는 메모리의 범위를 정의하고, 다른 프로세스가 이 범위를 침범하지 않도록 보호합니다.

8. 할당된 자원 정보

  • 입출력 자원이나 오픈 파일 등에 대한 정보
    예시:
    사무실에서 프린터스캐너를 사용하려면, 사용자는 각 자원의 사용 권한을 관리해야 합니다. 예를 들어, 프린터를 이미 사용 중인 사람은 다른 사람이 그 프린터를 사용할 수 없도록 대기해야 합니다. 마찬가지로, 프로세스가 사용할 수 있는 입출력 자원(예: 디스크, 네트워크 연결)이나 오픈된 파일들은 PCB에 기록되어 어떤 자원이 사용 중인지 관리됩니다.
  • PCB와의 연관성:
    각 프로세스가 어떤 입출력 자원을 사용하고 있는지, 또는 어떤 파일을 열었는지에 대한 정보가 PCB에 저장되어, 자원을 관리하는 데 필요한 정보를 제공합니다.

9. 계정 정보

  • 계정 번호, CPU 할당 시간, CPU 사용 시간 등
    예시:
    직장에서는 근로자의 근무 시간을 기록하죠. 예를 들어, 어떤 직원이 몇 시간 동안 일했는지에 대한 정보가 기록됩니다. 이 정보는 급여를 계산하거나, 직원이 어떤 일을 했는지 추적하는 데 사용됩니다.
  • PCB와의 연관성:
    프로세스가 얼마나 오래 실행되었는지, CPU 자원을 얼마나 사용했는지에 대한 정보가 PCB에 저장됩니다. 이 정보는 운영체제가 CPU 시간을 효율적으로 할당하고, 시스템에서 공정한 자원 분배를 할 수 있도록 돕습니다. 예를 들어, CPU 사용 시간을 추적하여 우선순위가 낮은 프로세스가 더 많은 자원을 사용하지 않도록 관리할 수 있습니다.

10. PPID와 CPID

  • PPID: 부모 프로세스 식별자
    예시:
    부모가 자식에게 일을 시킬 때, 부모가 자식에게 어떤 작업을 맡기면 자식은 그 일을 수행하죠. 이때 자식이 어떤 작업을 하고 있는지 부모가 알 수 있도록 추적합니다. 부모는 자식의 상태를 관리하고, 자식이 잘못하면 책임을 집니다.
  • PCB와의 연관성:
    PPID는 부모 프로세스의 식별자입니다. 즉, 어떤 프로세스가 부모 프로세스인지를 나타냅니다. 이 정보는 부모가 자식 프로세스를 관리하고 추적하는 데 사용됩니다. 예를 들어, 부모 프로세스는 자식 프로세스의 종료를 기다리거나 자식의 상태를 점검할 수 있습니다.
  • CPID: 자식 프로세스 식별자
    예시:
    자식이 부모의 작업을 맡고 진행 중인 상황에서, 자식은 부모에게 진행 상태를 보고하거나 작업을 마친 후 결과를 전달합니다. 자식은 자신이 맡은 일을 자신만의 식별자로 구분할 수 있습니다.
  • PCB와의 연관성:
    CPID는 자식 프로세스의 식별자입니다. 부모 프로세스는 자식 프로세스를 관리하고, 자식 프로세스가 어떤 작업을 수행하는지 추적할 수 있습니다. 부모-자식 관계를 통해 프로세스 간의 관계를 관리하고, 자식 프로세스가 종료될 때 부모가 그 결과를 처리할 수 있도록 돕습니다.

정리:

  1. 포인터는 프로세스들을 연결하는 주소 역할을 합니다.
  2. 프로세스 상태는 프로세스가 현재 어떤 일을 하고 있는지 나타냅니다.
  3. PID는 각 프로세스를 구별하는 고유 식별자입니다.
  4. 프로그램 카운터는 프로세스가 다음에 실행할 명령어를 추적합니다.
  5. 프로세스 우선순위는 어떤 프로세스를 먼저 실행할지 결정합니다.
  6. 레지스터 정보는 프로세스가 작업하는 중에 사용한 임시 값들을 저장합니다.
  7. 메모리 관리 정보: 프로세스의 메모리 주소 및 보호 설정.
  8. 할당된 자원 정보: 프로세스가 사용하는 자원(파일, 입출력 장치 등)에 대한 정보.
  9. 계정 정보: 프로세스의 CPU 사용 시간과 같은 자원 소비 추적 정보.
  10. PPID와 CPID: 부모-자식 프로세스 관계를 나타내는 식별자 정보.

이 요소들은 프로세스 제어블록(PCB) 내에서 프로세스를 효율적으로 관리하고 추적하기 위해 중요한 역할을 합니다. 각 프로세스가 어떻게 진행되고 있는지, 어떤 정보가 필요한지, 그리고 다시 실행될 때 어디서부터 시작할지에 대한 정보를 담고 있습니다.

'computing' 카테고리의 다른 글

AndroidStudio 알아보기  (0) 2025.03.20
20250318_OS3  (0) 2025.03.18
20250317_DB2  (2) 2025.03.17
명언 잠금화면 앱 개발_기획서  (4) 2025.03.16
20250310_DB1  (0) 2025.03.10