본문 바로가기
백수/컴퓨터구조

프로세스, 스레드

728x90
반응형

프로세스

  • 운영체제로부터 자원을 할당받은 작업의 단위
  • 메모리에 올라와 실행되고 있는 프로그램의 인스턴스
  • 컴퓨터에서 연속적으로 실행되고 있는 프로그램
  • 각 프로세스는 별도의 주소 공간에서 실행되고 프로세스끼리 자원을 공유하지 않음

 

프로세스 특징

  • 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당
  • 기본적으로 프로세스 당 최소 1개의 스레드를 가지고 있음
  • 각 프로세스는 별도의 주소 공간에서 실행되며 한 프로세스는 다른 프로세스의 변수, 자료에 접근 불가
  • 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신을 사용

 

스레드

  • 프로세스가 할당 받은 자원을 이용하는 실행 흐름의 단위
  • 하나의 프로세스 안에서 여러 가지 작업들 흐름이 동시에 진행되는 것을 스레드라 하며 여러 개가 있는 경우 멀티(다중) 스레드라 한다.

 

스레드 특징

  • 프로세스 내에서 각각 Stack만 따로 할당 받고, Code, Data, Heap 영역은 공유
  • 한 프로세스 내에서 동작되는 여러 실행의 흐름으로 프로세스 내의 주소 공간, 자원들을 같은 프로세스 내에 공유하면서 실행
  • 같은 프로세스 안에 있는 여러 스레드 들은 같은 힙 공간을 공유
  • 각각의 스레드는 별도의 레지스터, 스택을 갖고 있지만 힙 메모리는 서로 읽고 사용 가능
  • 스레드가 프로세스 자원을 변경하는 경우 다른 스레드도 그 변경 결과 확인 가능

 

멀티 프로세스

  • 하나의 응용 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 것
    • 장점 :
      • 여러 개의 자식 프로세스 중 하나에 문제가 발생해도 다른 자식 프로세스에 영향이 확산되지 않음
      • 간단하게 구현 가능
      • 각 프로세스들이 독립적으로 동작(자원이 서로 다르게 할당됨) 하여 안정적
    • 단점 :
      • 멀티 스레드 보다 많은 메모리, CPU 시간을 차지
      • 작업량이 많을수록 오버헤드가 발생하고 Context Switching으로 인한 성능 저하 우려
      • 프로세스 간의 통신을 하기 위해 IPC를 통해야함

 

멀티 스레드

  • 하나의 응용 프로그램을 여러 개의 스레드로 구성하여 각 스레드가 하나의 작업을 처리하도록 하는 것
    • 장점 :
      • 시스템의 자원, 처리 비용 감소(실행 속도 상승)
      • Context Switching이 빠름( 스레드는 Stack 영역만 처리하면 되기 때문)
      • 스레드 간의 자원을 공유하고 있기 때문에 통신의 부담이 적어 응답 시간이 빠름
    • 단점 :
      • 스레드가 개별로 유기적으로 움직이고 있기 때문에 프로그램 테스트, 디버깅이 어려움
      • 스레드 간의 데이터 공유 시 동기화 문제 발생
      • 하나의 스레드 오류로 전체 프로세스에 문제 발생
      • 하나의 스레드 오류로 전체 프로세스에 문제 발생
      • 스레드를 많이 사용하는 경우 오버헤드 발생
728x90
반응형

'백수 > 컴퓨터구조' 카테고리의 다른 글

15. 데드락이 무엇이고, 해결방법에 대해 설명해 보세요  (0) 2023.08.04
일반PC, 서버 구분  (0) 2023.07.06
컴퓨터 구조 기초 1  (0) 2023.06.26
HTTP  (0) 2023.06.12
컴퓨터 기초 13  (0) 2023.01.18