본문 바로가기
성공지식백과 로고성공지식백과
GLOSSARY

프로세스 (Process)

중급바이브 코딩

이 페이지는 바이브 코딩 문맥에서 자주 쓰이는 프로세스 (Process)의 뜻과 쓰임을 중급 난이도 기준으로 정리한 AI 용어사전 항목입니다. 정의와 맥락, 관련 용어 5개 순서로 묶었으니, 아래 설명을 먼저 읽고 연결된 개념과 글까지 이어서 보면 이해가 빨라집니다.

프로세스(Process)는 프로그램을 실행하기 위해 운영체제가 메모리와 자원, 실행 상태를 관리하는 단위입니다. 저장된 프로그램 자체와 구분되며, 같은 프로그램을 여러 프로세스로 실행할 수 있습니다. 프로세스 안에는 실제 명령을 수행하는 스레드가 하나 이상 존재합니다. 개발 도구에서 프로세스를 시작하거나 종료한다는 말은 이런 실행 단위를 만들거나 끝낸다는 뜻입니다.

프로그램과 실행 인스턴스의 차이

마이크로소프트의 프로세스·스레드 설명은 프로세스가 프로그램 실행에 필요한 자원을 제공한다고 설명합니다. Windows의 프로세스에는 가상 주소 공간, 실행 코드, 시스템 객체의 열린 핸들, 환경변수와 프로세스 식별자 등이 있습니다. 프로그램 파일의 이름이 같더라도 실행할 때 만들어지는 상태와 사용하는 자원은 각각의 프로세스에 속합니다.

같은 분석 프로그램을 서로 다른 입력 파일에 대해 두 번 실행하면, 같은 코드를 사용하는 별도의 실행 단위가 만들어질 수 있습니다. 한쪽은 작업을 끝내고 다른 쪽은 계속 계산하는 식으로 상태가 달라집니다. 프로그램을 수정하는 것은 저장된 코드를 바꾸는 일이고, 프로세스를 종료하는 것은 그 코드의 특정 실행을 끝내는 일입니다. 실행을 멈췄다고 프로그램 파일이 지워지는 것은 아닙니다.

프로세스 식별자는 실행 중인 대상을 구별하는 데 쓰입니다. 이름이 같은 프로그램이 여러 개 실행될 때도 로그나 관리 도구에서 어느 프로세스의 상태를 보는지 나눌 수 있습니다. 이때 프로세스 이름만으로 해당 실행의 입력, 작업 위치, 환경변수가 모두 같다고 판단하지 않습니다. 같은 프로그램이더라도 시작할 때 전달받은 조건에 따라 다른 파일을 읽거나 다른 서버에 연결하는 작업을 수행할 수 있습니다.

프로세스 안의 스레드와 공유 자원

마이크로소프트의 설명에서 스레드는 프로세스 안에서 실행 대상으로 스케줄링되는 단위입니다. Windows 프로세스는 하나의 주 스레드로 시작하고 추가 스레드를 만들 수 있습니다. 같은 프로세스의 스레드들은 가상 주소 공간과 시스템 자원을 공유합니다. 프로세스 수와 스레드 수는 서로 다른 실행 단위를 세며, 스레드가 늘어났다고 프로그램이 별도 프로세스로 복제된 것은 아닙니다.

여러 스레드가 같은 자원을 공유하면 하나의 프로세스 안에서 작업을 나누는 구성이 가능합니다. 반면 공유하는 상태에 접근하는 방식도 함께 다뤄야 합니다. 별도 프로세스를 만드는 경우와 같은 프로세스에 스레드를 추가하는 경우는 실행 구조가 다릅니다. 어떤 도구가 병렬 실행을 지원한다고 설명할 때도 그 단위가 프로세스인지 스레드인지 확인해야 자원과 상태를 어디에서 공유하는지 이해할 수 있습니다.

운영체제는 실행할 스레드들을 배정해 여러 작업이 진행되도록 합니다. Windows 문서는 선점형 멀티태스킹과 여러 프로세서에서 스레드를 동시에 실행하는 방식을 설명합니다. 다만 프로세스나 스레드 수가 많다는 사실만으로 모든 작업이 같은 순간에 CPU에서 실행된다는 뜻은 아닙니다. 처리 장치의 수와 대기 상태 등 실행 조건이 관여하며, 다른 운영체제의 세부 자원 관리 방식까지 Windows 설명과 같다고 일반화하지 않습니다.

자식 프로세스의 입력·출력·종료 상태

Python의 subprocess 문서는 새 프로세스를 만들고 입력·출력·오류 파이프에 연결하며 반환 코드를 얻는 기능을 설명합니다. subprocess.run()은 명령을 실행하고 완료를 기다린 뒤 CompletedProcess 객체를 돌려줍니다. 프로그램 안에서 외부 빌드 도구나 분석 도구를 호출할 때, 호출한 프로그램과 실제 작업을 수행하는 자식 프로세스를 이런 방식으로 연결합니다.

표준 입력인 stdin은 프로세스에 데이터를 전달하고, stdout과 stderr는 출력 내용을 받는 통로입니다. 이 문서에서 capture_output=True는 표준 출력과 표준 오류를 수집하는 옵션입니다. 통로의 이름만으로 작업 성공을 판정하지 않고 종료 상태도 함께 봅니다. returncode의 0은 일반적으로 성공을 나타내며, check=True를 지정한 호출은 0이 아닌 종료 코드에서 예외를 발생시킵니다.

자식 프로세스의 실행 조건도 명시할 수 있습니다. cwd는 작업 디렉터리를 지정하고, env는 새 프로세스에 전달할 환경변수를 설정하는 데 사용합니다. 자동화에서 같은 명령이 수동 실행과 다르게 동작하면 인수와 함께 이런 시작 조건, 수집한 출력, 종료 코드를 대조합니다. 프로세스가 생성됐다는 사실과 맡긴 작업이 성공적으로 끝났다는 사실은 별도로 확인할 항목입니다.

RELATED TERMS

관련 용어

프로세스 (Process)와 함께 자주 언급되는 개념들입니다. 비슷한 말처럼 보여도 역할과 쓰임은 다를 수 있습니다.