프로세스와 관련된 개념 정리

2025. 4. 7. 13:43·컴퓨터 과학
목차
  1. 프로세스(Process)
  2. 프로세스 생성(Process Creation)
  3. 프로세스 구조
  4. 스레드(Thread)의 이해
  5. 레지스터(Register)의 역할
  6. Process Control Block (PCB)
  7. 프로세스 상태
  8. 프로세스 계층
  9. 컨텍스트 스위칭 (Context Switching)
  10. CPU 스케줄링 (CPU Scheduling)

프로세스(Process)

실행되고 있지 않은 프로그램은 그저 하드디스크와 같은 보조기억장치에 저장된 데이터 덩어리에 불과하다. 그러나 프로그램을 실행하는 순간 해당 프로그램은 메인 메모리에 올라가고 CPU 입출력 장치 등 다양한 시스템 자원을 사용하는 프로세스가 된다.
즉 프로세스란 "실행 중인 프로그램"을 의미하며 실행 상태에서 각종 리소스를 점유하고 활동하는 객체를 말한다.


프로세스 생성(Process Creation)

프로세스 생성은 보조기억장치에 있는 프로그램을 메인 메모리로 불러와 실행 가능한 상태로 만드는 과정이다.

  • 로드 및 초기화:
    프로그램의 실행 파일을 메인 메모리에 로드하면서 코드, 데이터, 스택, 힙 영역이 할당된다.
  • 프로세스 제어 블록(PCB)의 생성:
    운영체제는 새 프로세스를 식별하고 관리하기 위해 PCB를 생성하여 프로세스 ID, 레지스터 상태, 스케줄링 정보, 프로세스 상태 등을 기록한다.
  • 부모-자식 관계:
    대부분의 운영체제에서는 프로세스가 다른 프로세스를 생성할 수 있다. 이 경우 생성한 프로세스는 자식 프로세스가 되고 생성한 프로세스는 부모 프로세스가 된다.
    UNIX 계열 시스템에서는 fork()와 exec() 시스템 호출을 통해 새로운 프로세스가 생성되는 과정을 살펴볼 수 있다.

프로세스 구조

프로세스는 운영체제가 관리하는 하나의 객체이며 내부적으로 다음과 같은 영역들로 구성된다.

  • 코드 영역:
    실행할 명령어(프로그램 코드)가 저장된 영역이다.
  • 데이터 영역:
    전역 변수, 정적 변수 등이 저장되며 프로그램 실행 중 지속적으로 사용할 데이터를 보관한다.
  • 스택 영역:
    함수 호출 시 생성되는 지역 변수, 매개변수, 리턴 주소 등이 저장되는 휘발성 메모리 영역이다.
  • 힙 영역:
    동적 메모리 할당에 사용되는 영역으로 프로그램 실행 중 필요에 따라 크기가 변할 수 있다.

스레드(Thread)의 이해

  • 스레드란?
    스레드는 프로세스 내에서 실제 작업을 수행하는 실행 단위로 하나의 프로세스는 여러 개의 스레드를 포함할 수 있다.
  • 프로세스와의 차이점:
    • 프로세스는 독립적인 메모리 공간과 리소스를 가지지만 같은 프로세스 내의 스레드는 메모리를 공유한다.
    • 스레드 간의 컨텍스트 스위칭은 프로세스 간 전환보다 오버헤드가 적은 편이다.
  • 멀티스레딩의 장점:
    • 응답성 향상: 한 스레드가 I/O 작업으로 대기하는 동안 다른 스레드가 실행될 수 있다.
    • 자원 공유: 프로세스 내부에서 데이터를 공유함으로써 효율적인 협업이 가능하다.

레지스터(Register)의 역할

비록 레지스터는 프로세스의 메모리 영역은 아니지만 CPU가 명령어를 실행할 때 사용되는 임시 저장소로서 매우 중요한 역할을 한다.

  • 실행 상태 저장:
    현재 실행 중인 프로세스의 레지스터 값(예: 프로그램 카운터, 스택 포인터, 플래그 등)은 프로세스의 실행 상태를 나타내며 컨텍스트 스위칭 시 반드시 저장되고 복원되어야 한다.

Process Control Block (PCB)

PCB는 운영체제가 각 프로세스에 대해 관리하는 핵심 자료구조이다.

  • 구성 요소:
    • 프로세스 ID
    • 프로세스 상태 (예: 준비, 실행, 대기 등)
    • CPU 레지스터 값
    • 스케줄링 정보 (우선순위, 시간 할당량 등)
    • 메모리 관리 정보
  • 역할:
    PCB는 프로세스 간의 전환, 자원 배분, 프로세스 제어 등의 작업에서 필수적인 정보로 활용된다.

프로세스 상태

운영체제는 CPU가 여러 프로세스를 번갈아 실행할 수 있도록 하기 위해 각 프로세스의 상태를 관리한다.

  • 생성(New):
    프로세스가 메모리에 로드되어 초기화되는 상태
  • 준비(Ready):
    CPU 할당을 기다리며 실행 준비가 된 상태
  • 실행(Running):
    현재 CPU에서 명령어를 실행 중인 상태
  • 대기(Blocked/Waiting):
    입출력 요청 등 특정 이벤트를 기다리느라 실행이 중단된 상태
  • 종료(Terminated):
    프로세스의 실행이 완료되어 시스템에서 제거되는 상태

프로세스 계층

프로세스는 실행 도중 다른 프로세스를 생성할 수 있으며 이때 부모-자식 관계가 형성된다.

  • 부모 프로세스:
    다른 프로세스를 생성한 원천 프로세스
  • 자식 프로세스:
    부모에 의해 생성된 프로세스로 독립적인 프로세스 ID를 가지며 자신의 작업을 수행합니다.
  • 계층 구조:
    이러한 부모-자식 관계는 트리 형태의 계층 구조로 관리되며 운영체제는 이를 기반으로 프로세스의 자원 배분, 권한 관리 등을 수행한다.

컨텍스트 스위칭 (Context Switching)

컨텍스트 스위칭은 CPU가 한 프로세스(또는 스레드)에서 다른 프로세스로 전환될 때 현재 작업 상태(컨텍스트)를 저장하고 새 작업의 상태를 복원하는 과정이다.

  • 과정:
    1. 현재 프로세스 상태 저장:
      CPU는 실행 중인 프로세스의 레지스터, 프로그램 카운터, 플래그 등 현재 상태를 PCB에 저장
    2. 새로운 프로세스 선택:
      스케줄러가 준비 상태에 있는 프로세스 중 하나를 선택
    3. 새 프로세스 상태 복원:
      선택된 프로세스의 PCB에서 저장된 상태를 CPU의 레지스터 등에 복원
    4. 실행 재개:
      CPU는 새롭게 로드된 프로세스의 명령어 실행을 시작
  • 추가 고려 사항:
    • 오버헤드:
      컨텍스트 스위칭은 상태 저장과 복원, 캐시 초기화 등의 작업으로 인해 CPU 사이클과 시간이 소요되어 빈번할 경우 성능 저하 요인이 될 수 있다.
    • 스레드 vs. 프로세스 스위칭:
      같은 프로세스 내 스레드 간의 전환은 메모리 공간을 공유하므로 오버헤드가 상대적으로 적다.
    • 스케줄링과의 연관성:
      효율적인 컨텍스트 스위칭은 운영체제의 스케줄링 정책과 밀접하게 연관되며 스케줄링 알고리즘이 컨텍스트 스위칭의 빈도와 오버헤드를 결정하는 중요한 요소다.

CPU 스케줄링 (CPU Scheduling)

CPU 스케줄링은 운영체제가 어떤 프로세스나 스레드가 언제 CPU를 사용할지를 결정하는 메커니즘이다.

  • 목적:
    • 여러 프로세스 간의 효율적인 CPU 사용
    • 응답 시간 최소화 및 전체 시스템 성능 향상
  • 주요 스케줄링 알고리즘:
    • Round Robin (라운드 로빈):
      모든 프로세스에 동일한 시간 할당량(time slice)을 주고 순환하며 실행
    • Priority Scheduling (우선순위 스케줄링):
      프로세스의 우선순위에 따라 실행 순서를 결정
    • Shortest Job First (SJF):
      예상 실행 시간이 짧은 프로세스를 우선 실행
    • Multi-Level Queue Scheduling (다단계 큐 스케줄링):
      프로세스들을 여러 큐에 분류하고 각 큐에 다른 스케줄링 정책을 적용
  • 스케줄링과 컨텍스트 스위칭:
    • 스케줄링 결정 시 컨텍스트 스위칭이 자주 발생하면 그에 따른 오버헤드가 증가할 수 있으므로 효율적인 스케줄링은 컨텍스트 스위칭의 빈도를 최적화하는 것이 중요하다.
  • 실시간 스케줄링:
    • 특정 시간 내에 작업을 완료해야 하는 실시간 시스템에서는 보다 정교한 스케줄링 전략이 필요하다.
저작자표시 비영리 변경금지 (새창열림)

'컴퓨터 과학' 카테고리의 다른 글

Protocol이란?  (0) 2025.04.15
파일과 디렉터리의 이해  (0) 2025.04.15
메모리와 페이지 교체 이해하기  (0) 2025.04.14
현대 컴퓨터 시스템의 자원 관리 및 데드락 해결 전략  (2) 2025.04.07
운영체제와 컴퓨터 하드웨어 구조 이해하기  (0) 2025.01.16
  1. 프로세스(Process)
  2. 프로세스 생성(Process Creation)
  3. 프로세스 구조
  4. 스레드(Thread)의 이해
  5. 레지스터(Register)의 역할
  6. Process Control Block (PCB)
  7. 프로세스 상태
  8. 프로세스 계층
  9. 컨텍스트 스위칭 (Context Switching)
  10. CPU 스케줄링 (CPU Scheduling)
'컴퓨터 과학' 카테고리의 다른 글
  • 파일과 디렉터리의 이해
  • 메모리와 페이지 교체 이해하기
  • 현대 컴퓨터 시스템의 자원 관리 및 데드락 해결 전략
  • 운영체제와 컴퓨터 하드웨어 구조 이해하기
망곰유시
망곰유시
  • 망곰유시
    망곰유시의 기록
    망곰유시
    • 분류 전체보기
      • Python
      • Git & GitHub
      • 컴퓨터 과학
      • 프로젝트
      • 기타
  • 공지사항

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
망곰유시
프로세스와 관련된 개념 정리

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.