시스템 소프트웨어 | 포그라운드, 백그라운드 프로세스

Faithful Dev·2025년 1월 28일

컴퓨터 공학

목록 보기
52/81

운영체제에서 프로세스는 컴퓨터 프로그램이 실행되는 동안의 동적인 작업 단위를 의미한다.

프로세스 vs. 바이너리

바이너리

  • 바이너리는 실행 가능한 프로그램 파일(예: /bin/ls, /usr/bin/python)이다.
  • 디스크에 저장된 정적인 상태의 프로그램이며, 사용자가 실행하면 운영체제가 이를 메모리에 로드해 실행한다.
  • 대부분 컴파일된 기계어 코드로 구성되어 있으며, 실행을 위한 준비 상태이다.

프로세스

  • 프로세스는 바이너리가 실행될 때 생성되는 동적 작업 단위이다.
  • 실행 중인 프로그램으로서, 운영체제가 CPU와 메모리를 할당해 관리한다.
  • 예: 사용자가 ls 명령어를 실행하면 ls 바이너리가 로드되어 프로세스로 동작한다.
  • 프로세스는 고유한 ID(PID, Process ID)로 구별된다.

바이너리가 레시피라면, 프로세스는 레시피를 따라 실제로 요리하는 행위!


Foreground Process (포그라운드 프로세스)

정의

  • 사용자가 실행 중에 직접 상호작용하는 프로세스이다.
  • 명령어를 실행하면 결과가 바로 터미널에 출력되며, 입력이 필요하면 사용자에게 대기한다.
  • 기본적으로 대부분의 명령어는 포그라운드에서 실행된다.

특징

  • 프로세스가 종료될 때까지 터미널을 점유한다.
  • 실행 중인 동안 터미널은 다른 작업을 수행할 수 없다.

예시

sleep 10

이 명령은 10초 동안 아무 작업도 하지 않고 대기하는 포그라운드 프로세스를 실행한다.


Background Process (백그라운드 프로세스)

정의

  • 사용자의 직접적인 상호작용 없이 백그라운드에서 실행되는 프로세스이다.
  • 터미널을 점유하지 않으므로, 동시에 다른 작업을 수행할 수 있다.

사용법

  • 명령어 끝에 &를 붙이면 백그라운드로 실행된다.
sleep 10 &

위 명령은 10초 동안 백그라운드에서 실행된다.

특징

  • 백그라운드 프로세스는 종료되더라도 터미널에는 직접적인 결과가 출력되지 않는다.
  • 백그라운드에서 실행 중인 프로세스의 상태를 보려면 jobs 명령을 사용한다.
  • 프로세스를 다시 포그라운드로 가져오려면 fg 명령을 사용한다.

활용

  • 긴 작업이나 서버와 같은 지속적으로 실행되는 작업에 유용하다.
python my_server.py &

Ctrl+C

정의

  • Ctrl+C는 터미널에서 실행 중인 포그라운드 프로세스를 강제로 종료하는 단축키이다.
  • 이는 운영체제의 SIGINT (Interrupt) 신호를 프로세스에 전달한다.
  • 사용자 요청에 의해 현재 실행 중인 작업을 중단할 수 있는 간단한 방법이다.

작동 방식

  1. 사용자가 Ctrl+C를 누르면 SIGINT 신호가 포그라운드 프로세스에 전달된다.
  2. 대부분의 경우, 프로세스는 이 신호를 받아 종료된다.
sleep 30 # 실행 후 30초가 지나기 전에 `Ctrl+C`를 누르면 실행이 중단된다.

제한

  • 일부 프로세스는 SIGINT 신호를 무시하도록 설계될 수 있다. 이런 경우, 강제 종료를 위해 kill 명령이나 Ctrl+Z로 일시 중단 후 처리가 필요하다.

정리

  1. 바이너리와 프로세스:
    바이너리는 정적 실행 파일이고, 프로세스는 이를 실행한 동적 작업이다.
  2. Foreground Process vs. Background Process:
    포그라운드 프로세스는 사용자와 상호작용하는 실행 중인 작업이고, 백그라운드 프로세스는 터미널에 비활성 상태로 실행된다.
  3. Ctrl+C:
    포그라운드 프로세스를 종료하는 데 사용되며, 프로세스 관리의 기본적인 방법이다.
profile
Turning Vision into Reality.

0개의 댓글