Linux: 프로그램과 프로세스 및 스레드(3가지 용어 차이)

공정위 광고 문구 Ver 3.1
공정위 광고 문구 Ver 3.2(모바일 전용)

리눅스 시스템에서 프로그램과 프로세스 스레드의 차이는 운영체제를 이해하는데 필요한 요소입니다.

✅ 프로그램(Program)이란?

사전적 의미의 프로그램은 컴퓨터에서 실행 가능한 명령어들의 모음을 의미하며, 특정 작업을 수행하기 위해 개발된 소프트웨어(및 소프트웨어의 형태)입니다.

◼ 종류

  • 시스템 프로그램(System Software)
  • 운영 체제 (Operating System): 컴퓨터 하드웨어를 관리하고 응용 프로그램을 실행하기 위한 핵심 소프트웨어
  • 장치 드라이버(Device Drivers): 특정 하드웨어 디바이스와 상호작용하기 위한 소프트웨어.
  • 유틸리티 프로그램 (Utilities): 시스템 관리, 파일 관리, 보안, 네트워크 등 다양한 유틸리티를 포함하는 프로그램.
  • 응용 프로그램(Application Software)
  • 워드 프로세서 (Word Processors): 문서 작성, 편집 및 서식 지정을 위한 프로그램
  • 그래픽 소프트웨어 (Graphic Software): 그림 그리기, 이미지 편집, 디자인 작업 등을 위한 소프트웨어 (예: Adobe Photoshop, GIMP)
  • 웹 브라우저 (Web Browsers): 인터넷을 통해 웹페이지를 검색하고 표시하는 소프트웨어 (예: Google Chrome, Mozilla Firefox)
  • 게임 프로그램 (Gaming Software): 게임을 플레이하기 위한 소프트웨어 (예: Fortnite, League of Legends)
  • 데이터베이스 소프트웨어 (Database Software): 데이터 저장, 관리, 조회 등을 위한 소프트웨어 (예: MySQL, Oracle Database)
  • 개발 도구 및 프로그래밍 언어 (Development Tools & Programming Languages)
  • 통합 개발 환경 (IDE, Integrated Development Environment): 소프트웨어 개발을 위한 편리한 환경을 제공하는 프로그램 (예: Visual Studio, IntelliJ IDEA)
  • 프로그래밍 언어 (Programming Languages): 소프트웨어를 작성하는 데 사용되는 언어들 (예: Python, Java, C++, Bash Shell)

✅ 프로세스(Process)란?

프로세스는 프로그램이 실행되어 돌아가고 있는 상태로서 실행 중인 프로그램을 의미합니다. 프로그램은 메모리에 적재되어 CPU에 의해 실행이 됩니다. 이때의 실행 상태를 프로세스라고 하며, 각각의 프로세스는 고유한 메모리 공간과 자원을 할당 받아서 실행됩니다.

ps 명령어로 프로세스 확인

윈도우에서 [Ctrl+Alt+Del] 키를 눌러서 컴퓨터의 상태를 확인한 경험이 있을 것입니다.크롬 브라우저를 새 탭으로 많이 띄워서 사용하면서 확인된 윈도우 Process를 확인할 수 있습니다.

윈도우에서 확인한 크롬 프로세스-크롬 앱 자체가 프로그램

◼ 특징

  • Process는 독립적으로 실행되고 다른 Process에 영향을 주지 않습니다. 이에 따라 독자적인 메모리 공간을 가지게 되며 메모리 공유할 수 없습니다.
  • Process는 다른 Process의 자원에 접근하거나 정보를 교환하기 위해 프로세스 간 통신(IPC, Inter-Process Communication)을 사용해야 합니다.
  • 프로세스는 최소 한 개 이상의 스레드를 가지고 있습니다.

◼ 프로세스 생명 주기(Process Life Cycle)

  • 생성(Create): Process가 생성되고 초기화되는 단계입니다. 이 단계에서 Process는 운영 체제에 의해 생성되고 기본적인 자원이 할당됩니다.
  • 준비(Ready): Process가 실행될 준비가 되었지만, CPU를 할당 받지 못한 상태입니다. 준비 상태의 Process는 CPU가 할당되기를 기다리며, 대기 큐에 위치합니다.
  • 실행(Running): CPU를 차지하여 명령어를 실행하는 단계입니다. 현재 실행 중인 Process는 CPU를 점유하고 있습니다.
  • 대기(Waiting 또는 Blocked): Process가 어떤 사건을 기다리거나 완료를 기다리는 상태입니다. 이벤트 완료, 입출력 요청 등을 기다리며, 이러한 상태에서는 CPU를 사용하지 않습니다.
  • 종료(Terminated): Process의 실행이 완료되고 자원이 해제되는 단계입니다. Process가 종료되었으며, 운영 체제는 해당 프로세스의 자원을 회수하고 종료 상태를 정리합니다.
Linux: 프로그램과 프로세스 및 스레드(3가지 용어 차이)
출처: 위키피디아 프로세스

✅스레드(Thread)

스레드(thread)는 Process가 할당 받은 자원을 이용하는 실행 단위이며, Process의 특정한 수행 경로입니다.thread는 Process 내에서 실행되는 여러 흐름의 단위입니다.

thread는 하나의 Process에서 여러 개의 thread가 동시에 실행될 수 있으며 각각의 thread는 Process의 자원을 공유하면서 별도의 실행 흐름을 가지고 독립적으로 동작합니다.

◼ 특징

  • 독립적인 실행 경로
  • thread는 Process의 일부로, 각 thread는 Process의 코드와 데이터를 공유하면서 별도의 실행 경로를 갖습니다.
  • 스택(Stack) 메모리 공간
  • 각 thread는 독립적인 스택 메모리 공간을 갖습니다. 이는 thread가 함수 호출, 지역 변수 등을 저장하는 데 사용됩니다.
  • 공유하는 자원
  • thread는 같은 Process 내의 다른 thread와 주소 공간, 자원을 공유합니다. 이는 코드, 데이터, 힙 메모리 등을 포함합니다.
  • 별도의 레지스터와 스택
  • 각각의 thread는 별도의 레지스터 상태와 스택을 갖고 있으며, 독립적인 실행 흐름을 유지합니다.
  • 동시성과 동기화 문제
  • thread 간의 메모리 공유는 동시성과 동기화 문제를 야기할 수 있습니다. 한 thread가 공유 자원을 변경하면, 다른 thread도 이 변경 사항을 즉시 볼 수 있으며, 이로 인해 동기화 문제가 발생할 수 있습니다. 데드락과 같은 문제도 발생할 수 있습니다.

Reference

리눅스(펜과 안경)

ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.

Similar Posts

  • Varnish Cache란 무엇인가? | Varnish 설치 및 기본 설정하기

    Varnish Cache는 동적 웹사이트와 API에 적합한 HTTP 가속기입니다. 이는 스퀴드와 같은 클라이언트 사이드 캐시 역할을 하는 다른 웹 가속기와 달리 Nginx, 아파치와 같은 원본 서버 대신 HTTP 가속기로 설계 되었습니다. 또한, Varnish는 HTTP에 특화되어 있어 FTP, SMTP 및 다른 통신 프로토콜을 지원하는 프록시 서버와는 다릅니다. ✅ Varnish Cache 설치 ✅ Varnish Cache 구성…

  • yum 명령어 | 사용법 | 옵션 | yum-utils | 패키지 관리와 저장소 관리🔝

    레드햇 계열의 리눅스 배포판에서 사용하는 YUM 명령어는 패키지 관리(설치, 업데이트, 제거)를 하는데 사용하는 명령어입니다. yum은 기존 패키지 시스템인 RPM의 의존성 문제를 해결하기 위해 제공되는 도구이며, RPM에서 수행할 수 있는 많은 작업을 수행할 수 있습니다. ✅ YUM 명령어 yum 명령어의 기본 사용 방법은 다음과 같습니다. ✅ YUM 명령어 옵션 ✅ YUM 패키지 관리: 확인 및…

  • 리눅스 파티션 설정 방법: gdisk 명령어

    테스트 환경 RHEL 계열|AlmaLinux 9.8|root 계정|2026-10-05 확인 리눅스 파티션 설정(생성과 수정, 삭제)을 진행할 때 fdisk 명령어 또는 gdisk 명령어를 사용합니다. gdisk를 이용한 파티션 정보 편집에 대해 다뤄 보겠습니다. 마운트 하기 전 파티션의 설정은 다음과 같은 순서로 진행됩니다. 저장 후 종료 전까지 파티션 작업 내용은 디스크에 반영되지 않습니다. gdisk 시뮬레이터연습용 디스크 /dev/xvdf · 3…

  • [Linux] CentOS 7 yum repo 변경(EOS)

    CentOS 7의 공식 EOS 날짜는 2024년 6월 30일로 종료되면서 기본 저장소가 비활성화되었기 때문에, yum 명령어 실행 시 저장소를 찾지 못해 오류가 발생합니다. CentOS 7 yum repo 변경을 한 후에 문제 해결이 가능합니다. CentOS 7에서 EOS(End of Support)에 따라 CentOS 7을 처음 설치 시 설정 된 yum 명령어 실행 시 One of the configured…

  • [Linux] mod_ssl.so Apache 모듈 설치하기

    아파치를 사용하는 리눅스 서버에 SSL을 적용하려고 할 때 아피치 모듈 중 mod_ssl.so가 설치되어 있어야 합니다. ✅ mod_ssl.so 설치 ✅ 서버 방화벽 포트 443 열어두기 SSL 포트인 443 포트가 방화벽에서 열려있는 상태로 활성화 되어 있어야 합니다.

  • VirtualBox 복제 후 CentOS 7 네트워크 인터페이스 중복 문제 해결

    VirtualBox에 CentOS 7을 설치 후 복제 기능을 이용해서 CentOS 7을 복제 했습니다. 여기서 네트워크 인터페이스 중복 문제가 발생하여, 이 내용에 대해 확인해 봤습니다. ✅ 네트워크 인터페이스 중복 기존에 설정했던 고정 IP에 접속 후 nmtui로 서버에 접속해 보니 기존 서버에 있던 enp0s3 설정이 유선 연결 1로 변경된 것으로 확인되었습니다. 원인은 VirtualBox 복제 시 네트워크…

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Prove your humanity: 1   +   4   =