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

ℹ️이 콘텐츠에는 광고가 포함되어,판매 발생 시 수익이 발생합니다.(네이버 쇼핑 커넥트, 아마존 어필리에이트, 애드센스 등)

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

✅ 프로그램(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

  • 리눅스 wget 명령어

    wget 명령어는 웹의 다운로드 링크를 리눅스 커멘드라인에서 실행해 다운로드를 할 수 있는 명령어입니다. HTTP, HTTPS, FTP 프로토콜을 이용해서 웹 서버에서 다운로드가 가능합니다. 목차✅ 프로그램(Program)이란?◼ 종류✅ 프로세스(Process)란?◼ 특징◼ 프로세스 생명 주기(Process Life Cycle)✅스레드(Thread)◼ 특징Referencewget 설치하기 레드헷 계열에서 사용하는 패키지 매니저인 yum으로 wget 설치를 진행합니다. 기본 다운로드 명령입니다. wget 명령어 옵션 다운로드 중 중단 되었다면…

  • 리눅스 커널 버전 확인 명령어 및 배포판 버전 확인 방법

    리눅스를 운영할 때 리눅스 커널 버전 확인과 배포판 버전을 확인해야 하는 경우가 있습니다. 목차✅ 프로그램(Program)이란?◼ 종류✅ 프로세스(Process)란?◼ 특징◼ 프로세스 생명 주기(Process Life Cycle)✅스레드(Thread)◼ 특징Reference✅ 리눅스 커널 버전 확인 명령어 리눅스에서 커널 버전을 확인하는 명령어는 uname 명령어를 사용해서 확인할 수 있습니다. 1. uname 명령어 uname -a는 모든 결과를 보여 줍니다. 2. /proc/version 에서 확인…

  • [Linux] 리눅스 일반 사용자 root 권한 부여 방법

    리눅스 일반 사용자 root 권한 부여 방법입니다. ‘testid’라는 계정을 임시로 만들었습니다. 목차✅ 프로그램(Program)이란?◼ 종류✅ 프로세스(Process)란?◼ 특징◼ 프로세스 생명 주기(Process Life Cycle)✅스레드(Thread)◼ 특징Reference✅ 리눅스 일반 사용자 root 권한 부여하기 1. /etc/sudoers 2. /etc/passwd 수정 3. /etc/group 수정 ✅ 최종 확인 정상적으로 권한이 부여 되었는지 확인 해 봅니다.

  • [Linux] CentOS 7 설치 | VirtualBox 설치

    VirtualBox에 CentOS 7 설치를 진행 해 보겠습니다. 미리 다운로드 받은 ISO 파일로 이미 설정을 완료한 상태입니다. 목차✅ 프로그램(Program)이란?◼ 종류✅ 프로세스(Process)란?◼ 특징◼ 프로세스 생명 주기(Process Life Cycle)✅스레드(Thread)◼ 특징Reference ✅ CentOS 7 설치 진행 Install CentOS를 선택하고 다음 단계로 넘어갑니다. 언어 선택 화면에서 한국어를 선택합니다. 🔲 KDUMP 설정 KDUMP를 클릭하여, 체크 된 활성화를 비 활성화로…

  • 리눅스 blkid 명령어 | UUID와 GUID 차이

    리눅스 blkid 명령어는 블록 디바이스의 파일 시스템 유형 or 속성을 출력하는 명령어입니다. 주 목적은 리눅스 서버를 다시 시작하는 경우 /etc/fstab 파일에 자동 마운트 정보를 설정할 때 UUID를 확인하기 위해 사용되는 명령어입니다. 목차✅ 프로그램(Program)이란?◼ 종류✅ 프로세스(Process)란?◼ 특징◼ 프로세스 생명 주기(Process Life Cycle)✅스레드(Thread)◼ 특징Reference ✅ blkid 명령어 사용 예시 명령어만 입력했을 경우 전체 파티션의 UUID를…

  • Linux snapd | Rocky Linux에서 snapd 설치

    스냅크래프트(Snapcraft) 또는 스냅(Snap)은 캐노니컬(Canonical)이 시작한 Ubuntu 스마트폰 운영 체제를 위한 소프트웨어 배포 및 패키지 도구로서 개발되었으며, 패키지 관리 시스템이다. 스냅(snap)이라고 불리는 패키지와 snapd를 사용하는 도구는 업스트림 소프트웨어 패키징을 간편화하여 다양한 리눅스 배포판에서 사용할 수 있도록 도와준다. Linux snapd은 앱 패키지로 데스크톱, 클라우드, IoT에서 사용 가능하며, 설치가 용이하고 안전하며 다양한 플랫폼에서 사용할 수 있으며…

답글 남기기

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

Prove your humanity: 3   +   6   =