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

  • 리눅스 명령어 13가지 카테고리 분류&시스템의 이해

    리눅스의 명령줄 인터페이스(Command Line Interface, CLI)는 컴퓨터 프로그램 및 운영체제와 상호 작용하기 위한 텍스트 기반의 사용자 인터페이스입니다. 리눅스 명령어는 유닉스 계열 운영체제어서 거의 동일하게 작동하며, 명령어를 입력해서 파일의 생성, 수정, 복사 이동 및 서버 전반에 걸친 관리를 하게 됩니다. 명령어를 카테고리로 분류하지만 틀릴 수 있는 점을 참고하여 주시기 바랍니다. ✅ 리눅스 명령어 시스템의…

  • SSL 인증서 설치(Sectigo)

    Apache 웹 서버에 Sectigo SSL 인증서 설치를 진행합니다. 테스트 URL로 서브 도메인 tozisin.com으로 하여 설치 테스트를 진행합니다. 설치할 인증서는 설치 후 30일 간 이용 가능한 ‘Free 30Days SSL‘ 설치를 진행합니다. AlmaLinux 9.4는 Rocky Linux 9.4와 완전히 호환되는 RHEL 계열의 클론입니다. 따라서 Apache 설치 및 모듈 구성 방식도 Rocky Linux와 동일합니다. Apache 버전은 2.4.57입니다….

  • Rocky Linux 설치 (9.5 Ver Minimal) | 이더넷 설정

    VirtualBox로 Rocky Linux 설치(9.5 Ver)를 진행해 보겠습니다. Rocky Linux 설치를 위해 ISO 파일을 다운로드 받은 후 가상 머신을 생성합니다. EFI 활성화를 체크 후 설치 진행을 하겠습니다. ✅ Rocky Linux 설치 Rocky Linux 설치 시작 화면에서 install을 진행합니다. Rocky Linux 설치 시작 후 운영체제가 정상 동작하기 위한 OS부팅 절차가 시작됩니다. 1. 언어 선택 2….

  • Linux: 아파치 재시작/시작/중지 명령어[CentOS 7]

    리눅스 웹서버를 운영하다 보면 CentOS에서 아파치 재시작을 하는 경우가 많습니다. 재시작 및 시작, 중지 명령어에 대해 알아 보겠습니다. 아파치는 HTTP 아파치 서버로 불리는 HTTP 웹서버입니다. 쉬운 웹서버 구축과 기능적인 측면에서 우수하기 때문에 많은 중소기업 및 대형사이트에서 사용합니다. 1. apache 버전 확인 2. apache 상태 확인 3. apache 시작 4. 아파치 중지 4. 아파치…

  • 리눅스 ls 명령어

    ls 명령어는 list의 약자이며, 리눅스 파일과 디렉토리를 볼 수 있는 명령어입니다. 파일의 종류와 파일의 크기, 만들어진 날짜 등의 정보를 확인할 수 있습니다. ✅ ls 명령어 기본 사용 방법 ls 명령어 사용 시 [파일 or 디렉토리]를 입력하지 않으면 현재 디렉토리를 검색합니다. ✅ ll 명령어(ls -l) ll 명령어는 일반적으로 리눅스에서 ls -l 명령어를 간편하게 쓰기…

  • 리눅스 tree 명령어

    tree 명령어는 디렉토리 안의 파일과 디렉토리를 나무 형태로 출력하는 명령어입니다. 디렉토리 구성을 파악하는데 유용하며, 하위 디렉토리와 파일이 어떤 구조로 정리되어 있는지 한눈에 확인 가능합니다. 문서화 및 시스템 분석 등에 활용됩니다. ✅ tree 명령어 기본 사용 방법 ✅ tree 옵션 ✅ 사용 예시 🔲 전체 경로 포함하여 출력: -f 기본 대상 폴더의 기본 파일만…

답글 남기기

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

Prove your humanity: 2   +   5   =