2023년 1월 1일
08:00 AM
Buffering ...

최근 글 👑

Thread와 Process

2024. 12. 12. 21:55ㆍ정보
Process?
  • 프로세스는 실행 중인 프로그램의 인스턴스이며, 운영체제(OS)에서 독립적으로 실행되는 작업 단위.
  • 프로그램이 실행되면 운영체제가 프로세스를 생성하고, 메모리와 CPU 같은 자원을 할당하여 실행 환경을 제공

프로세스의 특징
  1. 독립성
    • 각 프로세스는 다른 프로세스와 메모리 공간을 공유하지 않는다.
    • 하나의 프로세스가 종료되거나 오류가 발생해도 다른 프로세스에 영향을 미치지 않는다.
  2. 고유한 메모리 구조
    • 프로세스는 운영체제로부터 고유한 메모리 공간을 할당받아 실행.
      • Code Segment : 실행 코드가 저장되는 공간.
      • Data Segment : 전역 변수와 정적 변수가 저장되는 공간
      • Heap Segment : 런타임에 동적으로 할당되는 메모리 공간
      • Stack Segment : 함수 호출 시 필요한 데이터와 지역 변수가 저장되는 공간.
  3. 무거운 통신 비용
    • 프로세스는 메모리를 독립적으로 관리하기 때문에, 다른 프로세스와 데이터를 교환하려면 IPC(Inter-Process-Communication) 기법을 사용해야 한다.
    • 파이프, 메시지 큐, 소켓, 공유 메모리 등을 통해 통신할 수 있지마느 이 과정에서 추가적인 오버헤드가 발생한다.
  4. 운영체제의 관리 단위
    • 운영체제는 프로세스를 관리하기 위해 PCB(Process Control Block)를 사용한다.
    • PCB는 프로세스ID, 상태, 우선순위, 메모리 정보 등을 포함한 데이터를 저장하며, 스케줄링과 자원 할당에 사용된다.
오버헤드란?

작업을 수행하는 데 있어 추가적으로 발생하는 비용이나 자원을 말한다.

프로세스의 생명주기
  1. 생성(New)
    • 프로세스가 생성되고 초기화 단계에 있는 상태.
  2. 준비(Ready)
    • 실행 대기 상태로, CPU를 할당받기를 기다린다.
  3. 실행(Running)
    • CPU를 할당받아 명령어를 실행 중인 상태.
  4. 대기(Waiting)
    • 입출력(I/O) 작업을 기다리는 상태.
  5. 종료(Terminated)
    • 프로세스 실행이 완료되어 운영체제에 의해 제거된 상태

Thread
  • 스레드는 프로세스 내에서 실행되는 최소 실행 단위다.
  • 프로세스는 최소 하나의 스레드를 가지며, 여러 스레드를 포함할 수도 있다.
  • 하나의 프로세스 안에서 여러 스레드가 병렬로 실행되며, 자원을 공유하면서도 독립적으로 실행 흐름을 관리한다.

스레드의 특징
  • 프로세스의 작업 단위
    • 스레드는 프로세스 내부에서 실행되며, 프로세스의 자원(Code, Data, Heap)을 공유하면서도 독립적인 실행 흐름(Stack)을 가진다.
  • 경량성
    • 스레드는 프로세스보다 생성 및 관리 비용이 적고, 같은 프로세스 내에서는 자원을 공유하기 때문에 통신 오버헤드가 적다.
  • 병렬 처리
    • 멀티스레드 환경에서는 하나의 프로세스가 여러 스레드를 통해 병렬 작업을 수행할 수 있다.
    • 이는 멀티코어 CPU를 최대한 활용할 수 있도록 해준다.
  • 공유 메모리 구조
    • 스레드는 프로세스 내의 Code, Data, Heap 메모를 공유하지만, 각 스레드는 고유의 Stack을 가진다.
    • 메모리 공유로 인해 효율적이지마느 잘못된 접근으로 동기화 문제가 발생할 수 있다.
  • 운영체제의 관리 단위
    • 운영체제는 스레드를 관리하기 위해 TCB(Thread Control Block)를 사용한다. 
    • TCB는 스레드 ID, 상태, 우선순위, Stack 포인터 등의 정보를 저장한다.

스레드의 생명주기
  1. 생성(New)
    • 스레드가 생성되고 초기화 단계에 있는 단계
  2. 준비(Ready)
    • 실행을 대기하는 상태로, CPU 스케줄링을 기다린다.
  3. 실행(Running)
    • CPU를 할당받아 명령어를 실행 중인 상태
  4. 대기(Waiting)
    • 특정 조건이 충족되기를 기다리는 상태
  5. 종료(Terminated)
    • 스레드가 작업을 완료하고 종료된 상태

'정보' 카테고리의 다른 글

Binary Search와 Tree  (0) 2024.12.22
Big-O 표기법  (0) 2024.12.22
재귀 함수(Recursive Function)  (0) 2024.12.19
VO, BO, DAO, DTO  (0) 2024.09.12
시간복잡도 / 공간복잡도,, 복잡하다,,  (4) 2024.09.02