OS 포그라운드와 백그라운드 개념

운영체제(OS)가 프로세스를 실행하는 방법은 포그라운드(Foreground)와 백그라운드(Background)로 구분된다. CLI 환경에서 쉘을 쓰거나 서버를 구동하는 관점에서 보면 중요한 개념이다.

이 글에선 포그라운드 프로세스와 백그라운드 프로세스가 어떻게 다른지 윈도우와 리눅스를 예시로 간단하게 설명한다.

1. 포그라운드(Foreground)

포그라운드와 백그라운드를 나누는 기준은 사용자와의 상호 작용 여부다. 전면이라는 foreground의 뜻처럼 사용자 눈 앞에 보이고 실시간으로 상호 작용할 수 있으면 포그라운드 프로세스다.

윈도우에서 컴퓨터를 쓴다고 인지하는 대부분의 프로세스가 포그라운드다.

예를 들어 메모장은 사용자가 실시간으로 편집하고 창을 닫으면 프로세스도 종료되는 포그라운드 프로세스다.

메모장

CLI 환경인 리눅스에서의 포그라운드 프로세스는 조금은 덜 직관적으로 다가올 수도 있는데 개념 자체는 같다.

리눅스에선 실시간으로 쉘을 이용하는 모습을 떠올리면 된다.

아래 이미지를 보면 복사 명령을 내리고 이 작업이 끝날 때까지 쉘 입력이 불가능한 상태가 되는 걸 볼 수 있는데 포그라운드로 동작하고 있다는 의미다.

리눅스 포그라운드

만약

[root@newhost background]# cp test_file.zip tmp_dir/ &

처럼 뒤에 &를 붙여 작업을 백그라운드로 실행시키면 곧바로 쉘에 다른 명령을 입력할 수 있다.

2. 백그라운드(Background)

백그라운드 프로세스는 단어의 뜻처럼 뒤편에서 사용자의 상호작용 없이도 동작하는 프로세스다. 사용자가 인지하지 못하는 가운데 프로세스가 계속 실행 상태를 유지한다.

os가 구동되기 위해서 백그라운드에서 계속 실행되는 프로세스들이 있는데 이런 게 백그라운드 프로세스의 예시다.

윈도우 서비스
리눅스 프로세스

관련 글

댓글 남기기