CS(Computer Science)

프로세스란 무엇인가?

min민 2025. 1. 1.

프로세스란 무엇인가?

프로세스는 컴퓨터에서 실행 중인 프로그램을 의미하며, 운영 체제의 핵심 요소로 관리된다.

 

프로그램이 디스크에 저장된 정적인 코드라면, 프로세스는 실행 중인 프로그램의 동적인 작업 단위를 말한다.

하나의 프로그램이 여러 번 실행되면 동일한 프로그램이라도 각각의 실행이 독립적인 프로세스로 구동된다.

 

프로세스는 다양한 상태를 가지며, 이 상태들은 운영 체제가 프로세스를 효율적으로 관리하기 위해 사용된다.

프로세스의 생성, 실행, 대기, 종료 등은 특정 이벤트나 스케줄링 알고리즘에 따라 전환된다.

 

 

 

 

프로세스의 주요 상태

  1. 생성 상태(Create)
    • 프로세스가 생성되고 초기화 중인 상태를 말한다.
  2. 준비 상태(Ready)
    • 프로세스가 CPU를 사용할 준비가 되어 있는 상태이다. CPU가 할당되기를 기다리는 상태로, 우선순위에 따라 스케줄링된다.
  3. 실행 상태(Running)
    • 프로세스가 CPU를 점유하고 명령어를 실행 중인 상태이다.
  4. 대기 상태(Waiting)
    • 입출력 작업이나 특정 이벤트를 기다리는 상태로, 실행 상태에서 대기 상태로 전환된다.
  5. 종료 상태(Terminated)
    • 프로세스의 실행이 끝난 상태를 말한다.

 

 

 

프로세스 상태 전이

  1. 디스패치(Dispatch)
    • 준비 상태에 있던 프로세스가 실행 상태로 전환되는 것을 말한다.
    • 예: ready → running
  2. 보류(Block)
    • 실행 중인 프로세스가 입출력 작업 등으로 인해 CPU를 반납하고 대기 상태로 전환되는 것을 의미한다.
    • 예: running → waiting
  3. 깨움(Wakeup)
    • 대기 상태에 있던 프로세스가 기다리던 작업을 완료하고 준비 상태로 전환되는 것을 뜻한다.
    • 예: waiting → ready
  4. 시간 초과(Timeout)
    • 프로세스가 일정 시간 동안 CPU를 점유한 뒤, 다시 준비 상태로 돌아가는 것을 말한다.
    • 예: running → ready

 

 

 

 

 

프로세스와 관련된 면접 예상 질문 및 간단한 답변 정리

1. 프로세스와 스레드의 차이를 설명하라.

  • 프로세스는 독립적인 실행 단위로, 각 프로세스는 고유의 메모리 공간(코드, 데이터, 스택)을 가진다.
  • 스레드는 프로세스 내에서 실행되는 작업 단위로, 프로세스의 메모리(코드, 데이터)를 공유한다.
  • 따라서, 프로세스는 자원 간섭이 적고 안정적이지만, 스레드는 자원 공유로 인해 더 가볍고 빠르게 실행된다.

2. 프로세스 상태 전이에 대해 설명하라.

프로세스는 다음과 같은 상태 전이를 거친다.

  1. 생성(create): 프로세스가 생성되는 단계.
  2. 준비(ready): 실행 대기 중이며 CPU 할당을 기다리는 상태.
  3. 실행(running): CPU를 할당받아 실행 중인 상태.
  4. 대기(waiting): I/O 작업 등 특정 이벤트를 기다리는 상태.
  5. 종료(terminated): 실행이 완료된 상태.

프로세스는 CPU 할당(디스패치) 또는 I/O 완료(깨움)를 통해 상태를 전이한다.


3. 멀티프로세싱과 멀티스레딩의 차이는 무엇인가?

  • 멀티프로세싱: 여러 프로세스를 병렬로 실행. 각 프로세스는 독립적인 자원을 가짐. 안정성은 높지만, 메모리 소모가 크다.
  • 멀티스레딩: 하나의 프로세스 내에서 여러 스레드를 병렬로 실행. 자원 공유로 효율적이나 동기화 문제를 관리해야 한다.

4. 프로세스 스케줄링 알고리즘에 대해 아는 대로 말하라.

  1. 라운드 로빈 (Round Robin): 각 프로세스에 동일한 시간 할당. 공정성 중시.
  2. 선점 스케줄링 (Preemptive Scheduling): 우선순위가 높은 프로세스가 CPU를 차지. 효율적이지만 컨텍스트 스위칭 비용이 증가.
  3. 고정 우선순위 스케줄링: 정해진 우선순위에 따라 CPU 할당. 긴급 작업 처리에 유리하지만, 낮은 우선순위 프로세스가 기아 상태에 빠질 수 있음.

5. 프로세스 간 통신(IPC: Inter-Process Communication)에 대해 설명하라.

프로세스가 데이터를 주고받는 방법은 다음과 같다.

  1. 파이프(Pipe): 부모-자식 프로세스 간 단방향 통신.
  2. 메시지 큐(Message Queue): 커널을 통해 여러 프로세스 간 데이터를 주고받는 방식.
  3. 공유 메모리(Shared Memory): 메모리 공간을 공유하여 빠르게 통신. 동기화 필요.
  4. 소켓(Socket): 네트워크 기반 프로세스 통신.

 

 

총 정리

프로세스는 컴퓨터 시스템에서 가장 기본적이고 중요한 개념으로, 운영 체제의 성능과 안정성에 큰 영향을 준다.

 

면접 준비를 할 때, 프로세스의 정의와 상태 전이뿐만 아니라, 관련된 스케줄링 알고리즘, 스레드와의 차이, 프로세스 간 통신 등 폭넓은 지식을 숙지해야 한다. 

댓글